跳转到内容

LPI Linux 认证/使用 RPM 和 YUM 包管理

来自维基教科书,开放世界中的开放书籍

Red Hat 包管理器是一个强大的包管理器,可用于构建、安装、查询、验证、更新和删除单个软件包。包由一个包含文件和元数据的档案组成,用于安装和删除档案文件。元数据包括辅助脚本、文件属性和关于包的描述信息。包有两种类型:二进制包,用于封装要安装的软件,以及源代码包,包含生成二进制包所需的源代码和配方。

详细目标

[编辑 | 编辑源代码]

(LPIC-1 版本 5.0)

权重:3

描述
考生应该能够使用 RPM、YUM 和 Zypper 执行包管理。

关键知识领域

  • 使用 RPM、YUM 和 Zypper 安装、重新安装、升级和删除软件包。
  • 获取有关 RPM 包的信息,例如版本、状态、依赖关系、完整性和签名。
  • 确定软件包提供的文件,以及查找特定文件来自哪个软件包。
  • 了解 `dnf`。

以下是被使用文件的列表,这些文件、术语和工具只是部分列出

  • rpm
  • rpm2cpio
  • /etc/yum.conf
  • /etc/yum.repos.d/
  • yum
  • zypper

Red Hat 包管理器

[编辑 | 编辑源代码]

一些 Linux 发行版使用 rpm “Red Hat 包管理器” 来管理其所有发行版软件。RPM 维持一个详细的数据库,其中包含系统中安装的所有软件的信息。

要安装 RPM 包,请执行

rpm -i [package].rpm

只有在满足依赖关系并且与其他软件包没有冲突的情况下,才会安装软件包。要升级软件包,请执行

rpm -U [package].rpm

旧软件包版本的将被删除,并由新文件替换。要删除 RPM 包,请执行

rpm -e [package].rpm

只有在没有其他软件包依赖它时,才能删除软件包。

RPM 查询

[编辑 | 编辑源代码]

使用 -q 选项,您可以查询 RPM 数据库或显示有关包文件的信息。

您可以使用多个开关

  • -i: 获取软件包信息
rpm -q -i apache
  • -l: 获取软件包的文件列表。
$ rpm -q -l pciutils
/sbin/lspci
/sbin/setpci
/usr/share/doc/package/pciutils
...
/usr/share/pci.ids
  • -f file: 查询文件所属的软件包。
$ rpm -q -f /sbin/lspci
pciutils-2.1.9-58
  • -s: 带有状态信息的 文件列表。
  • -d: 仅列出文档文件。
  • -a: 列出所有已安装的软件包。

如果您要显示有关包文件的信息,可以使用 -p 开关指定文件名

rpm -q -i -p [package].rpm

RPM 命令

[编辑 | 编辑源代码]

要获取有关软件包或程序的一般信息,请使用 rpmlocate。

rpmlocate ipcs -q -i apache

在 rpm 数据库中搜索 ipcs

util-linux-2.11n-75:
/usr/bin/ipcs
/usr/share/man/man8/ipcs.8.gz

要列出所有已安装的软件包,请使用 rpmqpack

rpmqpack

或者使用

rpm -qa


源代码安装

[编辑 | 编辑源代码]

RPM 源代码文件通常具有 package.src.rpm 格式,并且可以像二进制文件一样安装。它们将从 /usr/src/packages 目录安装的目录是

  • SOURCES: 用于原始源代码。
  • SPECS: 用于控制构建过程的 .spec 文件。
  • BUILD: 所有源代码都在此目录中构建。
  • RPMS: 完整的二进制软件包存储在此处。
  • SRPMS: 源代码。

要安装软件包的源代码,请执行

$ rpm -i mypack.src.rpm

源代码文件将存储在 /usr/src/packages 中,位于 SPEC 和 SOURCES 目录中。要编译源代码,请执行

$ rpm -ba /usr/src/packages/SPECS/mypack.spec

编译结果将存储在 BUILD 目录中

  1. apache 包是否已安装?
  2. /bin/ls、/usr/sbin/tcpdump 和 /sbin/ifconfig 文件位于哪个包中?
  3. 从软盘安装 pci 工具和 grub 软件包。构建二进制文件并尝试执行它们。源代码应该位于 /usr/src/packages/BINARY 目录中。
华夏公益教科书