网站搜索

使用 Yum、RPM、Apt、Dpkg、Aptitude 和 Zypper 进行 Linux 包管理 - 第 9 部分


去年 8 月,Linux 基金会宣布了 LFCS 认证(Linux 基金会认证系统管理员),这是世界各地的系统管理员通过基于表现的考试证明他们的绝佳机会能够成功地为 Linux 系统提供全面的操作支持。经过 Linux 基金会认证的系统管理员拥有专业知识,可确保有效的系统支持、一级故障排除和监控,包括最终在需要时将问题升级给工程支持团队。

观看以下视频,其中介绍了 Linux 基金会认证计划。

本文是 10 个教程长系列的第 9 部分,今天在本文中我们将指导您了解 LFCS 认证考试所需的 Linux 包管理。

包管理

简而言之,包管理是一种在系统上安装和维护(包括更新和可能删除)软件的方法。

在 Linux 的早期,程序仅作为源代码以及所需的手册页、必要的配置文件等分发。如今,大多数 Linux 发行商默认使用预先构建的程序或称为软件包的程序集,将其提供给准备在该发行版上安装的用户。然而,Linux 的奇迹之一仍然是可以获得要研究、改进和编译的程序的源代码。

包管理系统如何工作

如果某个包需要某个资源(例如共享库)或另一个包,则称其具有依赖性。所有现代包管理系统都提供某种依赖性解析方法,以确保在安装包时,也会安装其所有依赖项。

包装系统

现代 Linux 系统上安装的几乎所有软件都可以在 Internet 上找到。它可以由发行版供应商通过中央存储库提供(其中可以包含数千个包,每个包都是专门为发行版构建、测试和维护的),也可以以源代码形式提供,可以手动下载和安装。

因为不同的发行版系列使用不同的打包系统(Debian: *.deb/CentOS: *.rpm/openSUSE: *.rpm 专门为openSUSE),用于一个发行版的软件包将与另一个发行版不兼容。然而,大多数发行版可能属于 LFCS 认证涵盖的三个发行版系列之一。

高级和低级封装工具

为了有效地执行包管理任务,您需要知道您将有两种类型的可用实用程序:低级工具(在后端处理实际的安装、升级和更新)删除包文件)和高级工具(负责确保执行依赖关系解析和元数据搜索(“关于数据的数据”)任务)。

DISTRIBUTION LOW-LEVEL TOOL HIGH-LEVEL TOOL
 Debian and derivatives  dpkg  apt-get / aptitude
 CentOS  rpm  yum
 openSUSE  rpm  zypper

让我们看看低级和高级工具的描述。

dpkg 是基于 Debian 系统的低级包管理器。它可以安装、删除、提供有关和构建 *.deb 包的信息,但无法自动下载和安装其相应的依赖项。

了解更多:15 dpkg 命令示例

apt-get 是 Debian 及其衍生版本的高级包管理器,提供了一种使用命令行从多个源检索和安装包(包括依赖项解析)的简单方法。与 dpkg 不同,apt-get 不直接使用 *.deb 文件,而是使用包的正确名称。

了解更多:25 个 apt-get 命令示例

aptitude 是基于 Debian 的系统的另一个高级包管理器,可用于以快速、简单的方式执行管理任务(安装、升级和删除包,还自动处理依赖关系解析) 。它提供了与 apt-get 相同的功能以及其他功能,例如提供对包的多个版本的访问。

rpm 是 Linux Standard Base (LSB) 兼容发行版使用的包管理系统,用于低级别的包处理。就像 dpkg 一样,它可以查询、安装、验证、升级和删除软件包,并且更常被基于 Fedora 的发行版使用,例如 RHEL 和 CentOS。

了解更多:20 rpm 命令示例

yum 向基于 RPM 的系统添加了自动更新和包管理以及依赖管理功能。作为一个高级工具,如 apt-get 或 aptitude,yum 与存储库一起使用。

阅读更多内容:20 个 yum 命令示例

低级工具的常见用法

您将使用低级工具执行的最常见任务如下:

1. 从编译的(*.deb 或 *.rpm)文件安装软件包

这种安装方法的缺点是不提供依赖关系解析。当发行版存储库中没有此类软件包,因此无法通过高级工具下载和安装时,您很可能会选择从已编译的文件安装此类软件包。由于低级工具不执行依赖关系解析,因此如果我们尝试安装具有未满足依赖关系的包,它们将退出并出现错误。

dpkg -i file.deb 		[Debian and derivative]
rpm -i file.rpm 		[CentOS / openSUSE]

注意:不要尝试在 CentOS 上安装为 openSUSE 构建的 *.rpm 文件,反之亦然!

2. 从编译文件升级包

同样,只有当中央存储库中没有已安装的软件包时,您才会手动升级该软件包。

dpkg -i file.deb 		[Debian and derivative]
rpm -U file.rpm 		[CentOS / openSUSE]
3. 列出已安装的软件包

当您第一次接触已经运行的系统时,您很可能想知道安装了哪些软件包。

dpkg -l 		[Debian and derivative]
rpm -qa 		[CentOS / openSUSE]

如果您想知道是否安装了特定的软件包,可以将上述命令的输出通过管道传输到 grep,如在 Linux 中操作文件 - 本系列的第 1 部分中所述。假设我们需要验证 Ubuntu 系统上是否安装了 mysql-common 包。

dpkg -l | grep mysql-common

另一种确定软件包是否已安装的方法。

dpkg --status package_name 		[Debian and derivative]
rpm -q package_name 			[CentOS / openSUSE]

例如,让我们查一下我们的系统上是否安装了软件包sysdig

rpm -qa | grep sysdig

4. 找出哪个包安装了文件
dpkg --search file_name
rpm -qf file_name

例如,安装了哪个软件包pw_dict.hwm

rpm -qf /usr/share/cracklib/pw_dict.hwm

高级工具的常见用法

您将使用高级工具执行的最常见任务如下。

1. 搜索包

aptitude update 将更新可用软件包列表,aptitude search 将执行 package_name 的实际搜索。

aptitude update && aptitude search package_name 

在搜索全部选项中,yum不仅会在包名称中搜索package_name,还会在包描述中搜索package_name。

yum search package_name
yum search all package_name
yum whatprovides “*/package_name”

假设我们需要一个名为 sysdig 的文件。要知道我们必须安装的包,让我们运行一下。

yum whatprovides “*/sysdig”

whatprovides 告诉 yum 搜索将提供与上述正则表达式匹配的文件的包。

zypper refresh && zypper search package_name		[On openSUSE]
2. 从存储库安装包

安装软件包时,在软件包管理器解决所有依赖关系后,系统可能会提示您确认安装。请注意,运行更新或刷新(根据所使用的包管理器)并不是绝对必要的,但出于安全和依赖性原因,使已安装的包保持最新是一个很好的系统管理实践。

aptitude update && aptitude install package_name 		[Debian and derivatives]
yum update && yum install package_name 			[CentOS]
zypper refresh && zypper install package_name 		[openSUSE]
3. 删除包

选项删除将卸载软件包,但保留配置文件完整,而清除将从系统中删除该程序的所有痕迹。
# aptitude 删除/清除 package_name
# yum 删除 package_name

---Notice the minus sign in front of the package that will be uninstalled, openSUSE ---

zypper remove -package_name 

默认情况下,大多数(如果不是全部)包管理器都会提示您是否确定要在实际执行卸载之前继续卸载。请仔细阅读屏幕上的信息,以免遇到不必要的麻烦!

4. 显示包的信息

以下命令将显示有关 birthday 包的信息。

aptitude show birthday 
yum info birthday
zypper info birthday

概括

作为系统管理员,包管理是你无法忽视的事情。您应该准备好随时使用本文中描述的工具。希望您发现它对您准备 LFCS 考试和日常任务很有帮助。请随时在下面留下您的意见或问题。我们将非常高兴尽快回复您。