使用 Yum、RPM、Apt、Dpkg、Aptitude 和 Zypper 进行 Linux 软件包管理 - 第 9 部分
去年 8 月,Linux 基金会宣布了LFCS认证(Linux 基金会认证系统管理员),这是一个绝佳的机会,让世界各地的系统管理员通过基于绩效的考试来证明他们有能力成功完成 Linux 系统的整体运营支持。Linux 基金会认证系统管理员拥有确保有效系统支持、一级故障排除和监控的专业知识,包括在需要时将问题上报给工程支持团队。
观看以下有关Linux基金会认证计划的视频。
本文是 10 个教程系列中的第 9 部分,今天在本文中我们将指导您了解 LFCS 认证考试所需的 Linux 包管理。
包管理
简而言之,包管理是一种在系统上安装和维护(包括更新和删除)软件的方法。
在 Linux 的早期,程序仅以源代码形式分发,并附带所需的手册页、必要的配置文件等。如今,大多数 Linux 发行商默认使用预构建的程序或程序集(称为软件包),这些程序集提供给用户,可在该发行版上安装。然而,Linux 的奇迹之一仍然是可以获得程序的源代码以供研究、改进和编译。
包管理系统如何工作
如果某个包需要某个资源(例如共享库)或其他包,则称其具有依赖性。所有现代包管理系统都提供了某种依赖性解析方法,以确保安装包时,其所有依赖项也会安装。
包装系统
几乎所有安装在现代 Linux 系统上的软件都可以在互联网上找到。这些软件可以由发行版供应商通过中央存储库提供(其中包含数千个软件包,每个软件包都是为发行版专门构建、测试和维护的),也可以以源代码形式提供,供用户手动下载和安装。
由于不同的发行版系列使用不同的打包系统(Debian:*.deb / CentOS:*.rpm / openSUSE:*.rpm专为 openSUSE 构建),因此用于一个发行版的软件包将与另一个发行版不兼容。但是,大多数发行版可能属于 LFCS 认证涵盖的三个发行版系列之一。
高级和低级包工具
为了有效地执行包管理任务,您需要知道您将有两种可用的实用程序:低级工具(在后端处理包文件的实际安装、升级和删除)和高级工具(负责确保执行依赖关系解析和元数据搜索 - “有关数据的数据”的任务)。
分配 | 低级工具 | 高级工具 |
Debian 及其衍生产品 | 软件包 | apt-get/aptitude 工具 |
CentOS | 转速 | 好吃 |
openSUSE | 转速 | zypper |
让我们看看低级和高级工具的描述。
dpkg是基于 Debian 系统的低级软件包管理器。它可以安装、删除、提供有关 *.deb 软件包的信息并构建它,但无法自动下载和安装其相应的依赖项。
阅读更多:15 个 dpkg 命令示例
apt-get是 Debian 及其衍生产品的高级软件包管理器,它提供了一种使用命令行从多个源检索和安装软件包(包括依赖关系解析)的简单方法。与 dpkg 不同,apt-get 不直接处理 *.deb 文件,而是处理软件包的正确名称。
阅读更多:25 个 apt-get 命令示例
aptitude是 Debian 系统的另一个高级软件包管理器,可用于快速轻松地执行管理任务(安装、升级和删除软件包,以及自动处理依赖关系解析)。它提供与 apt-get 相同的功能以及其他功能,例如提供对软件包的多个版本的访问。
rpm是符合 Linux 标准库 (LSB) 的发行版使用的软件包管理系统,用于对软件包进行低级处理。与 dpkg 一样,它可以查询、安装、验证、升级和删除软件包,并且更常用于基于 Fedora 的发行版,例如 RHEL 和 CentOS。
阅读更多:20 rpm 命令示例
yum为基于 RPM 的系统添加了自动更新和带有依赖项管理的软件包管理功能。作为高级工具,yum 与 apt-get 或 aptitude 一样,可与存储库配合使用。
阅读更多: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,如本系列第 1 部分 Linux 中的文件操作中所述。假设我们需要验证 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,还会在软件包描述中搜索。
# 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. 删除包
选项remove将卸载软件包但保留配置文件,而 purge 将从系统中删除程序的所有痕迹。
# aptitude remove / purge package_name
# yum erasing package_name
---Notice the minus sign in front of the package that will be uninstalled, openSUSE --- # zypper remove -package_name
大多数(如果不是全部)软件包管理器都会默认在实际执行卸载之前提示您是否确定要继续卸载。因此,请仔细阅读屏幕上的消息,以避免遇到不必要的麻烦!
4. 显示有关包的信息
以下命令将显示有关生日包的信息。
# aptitude show birthday # yum info birthday # zypper info birthday
概括
作为系统管理员,包管理是不能忽视的。您应该随时准备使用本文中描述的工具。希望它对您准备 LFCS 考试和日常工作有所帮助。请随时在下面留下您的评论或问题。我们将非常乐意尽快回复您。