TT Lab
开始
学习 学习路径 课程

RHEL 系管理

rpm 的查询与打包

在 TT Lab 中继续学习

目标

用 rpm 查询和验证,并用 spec 文件亲手构建软件包再安装。

为什么重要

rpm -V 会把安装时的哈希与当前文件进行比较,告知哪些内容发生了变化,是一种审计工具。配置文件发生变化是正常的,但如果二进制文件变了,就需要调查。此外,亲手制作一次软件包,就能彻底弄清其中究竟有什么——只要有文件没有写进 %files,构建就会失败,rpmbuild 的这种严格性能让软件包的内容保持准确。

步骤

  1. 创建目录 /root/rpmlab,把已安装的软件包数量写成一行数字,保存到 /root/rpmlab/count.txt。
  2. 把软件包 coreutils-common 的文档文件列表保存到 /root/rpmlab/docs.txt。
  3. 把拥有 /usr/bin/ls 的软件包名称写成一行,保存到 /root/rpmlab/owner.txt。
  4. 在已安装的软件包中选一个配置文件,在其内容后追加一行,然后执行验证,把标记了被改动的那一行保存到 /root/rpmlab/verify.txt。(请选择 /etc/nanorc 或 /etc/DIR_COLORS 这样安全的文件。)
  5. 查询任意一个已安装软件包的安装脚本,保存到 /root/rpmlab/scripts.txt。如果软件包没有脚本,就会输出这一事实。
  6. 创建 ~/rpmbuild 构建目录树,把 /opt/fixtures/rpmbuild/labhub-tool-1.0 打包成 labhub-tool-1.0.tar.gz 放到 SOURCES/ 中,把 /opt/fixtures/rpmbuild/labhub-tool.spec 放到 SPECS/ 中,然后构建。~/rpmbuild/RPMS/noarch/ 之下必须生成 .rpm。
  7. 在不安装的情况下查询所构建的 .rpm,把信息和文件列表分别保存到 /root/rpmlab/pkg-info.txt 和 /root/rpmlab/pkg-files.txt。
  8. 安装该软件包,并把 /root/rpmlab/report.txt 写成下面这 4 行。 NAME=labhub-tool / VERSION=<설치된 버전-릴리스> / ARCH=noarch / RUN=<labhub-tool 명령 실행 결과 첫 줄>(第 2 项和第 4 项的占位符依次为已安装的版本-release、运行 labhub-tool 命令得到的结果的第一行)

参考

已安装列表与详细信息

创建目录 /root/rpmlab,把已安装的软件包数量写成一行数字,保存到 /root/rpmlab/count.txt。

rpm -qa 每行输出一个。只需要统计数量。

区分文件、配置与文档

把软件包 coreutils-common 的文档文件列表保存到 /root/rpmlab/docs.txt。

-ql、-qc、-qd 这三个选项各自输出不同的列表。

查找文件的所属软件包

把拥有 /usr/bin/ls 的软件包名称写成一行,保存到 /root/rpmlab/owner.txt。

-qf 接收路径,告知它属于哪个软件包。如果只需要名称,请截取出来。

篡改检测

在已安装的软件包中选一个配置文件,在其内容后追加一行,然后执行验证,把标记了被改动的那一行保存到 /root/rpmlab/verify.txt。(请选择 /etc/nanorc 或 /etc/DIR_COLORS 这样安全的文件。)

修改配置文件后再验证,就会出现特定的字符。请把那一行原样保存。

确认安装脚本

查询任意一个已安装软件包的安装脚本,保存到 /root/rpmlab/scripts.txt。如果软件包没有脚本,就会输出这一事实。

有一个查询选项,可以查看软件包在安装前后会执行什么。

rpm 构建

创建 ~/rpmbuild 构建目录树,把 /opt/fixtures/rpmbuild/labhub-tool-1.0 打包成 labhub-tool-1.0.tar.gz 放到 SOURCES/ 中,把 /opt/fixtures/rpmbuild/labhub-tool.spec 放到 SPECS/ 中,然后构建。~/rpmbuild/RPMS/noarch/ 之下必须生成 .rpm。

创建构建目录树,把源码打成 tar 放到 SOURCES 中即可。spec 在夹具中。

拆开所构建的软件包看看

在不安装的情况下查询所构建的 .rpm,把信息和文件列表分别保存到 /root/rpmlab/pkg-info.txt 和 /root/rpmlab/pkg-files.txt。

查询未安装的文件,需要再加一个选项。

综合报告

安装该软件包,并把 /root/rpmlab/report.txt 写成下面这 4 行。 NAME=labhub-tool / VERSION=<설치된 버전-릴리스> / ARCH=noarch / RUN=<labhub-tool 명령 실행 결과 첫 줄>(第 2 项和第 4 项的占位符依次为已安装的版本-release、运行 labhub-tool 命令得到的结果的第一行)

请汇总所构建并安装的软件包的信息。值必须是实际查询的结果。