LabHub
学习 学习路径 课程

包管理

做出离线引入包

在 LabHub 中继续学习

目标

将一个软件包及其全部依赖项打成一个“导入包”,用校验和清单验证后,仅用这个包重现安装过程。这是隔离网络导入流程的缩小版。

为什么重要

隔离网络中最常见的失败是“已经下载带进去,却因缺少依赖项而不得不再次出来”。在每天只进行一次导入审核的组织里,一个来回就意味着一天。因此,熟练的工程师会把在外部完整解析依赖关系图所得的结果带进去。同时,还需要一种方法确认通过介质传输的文件是否完好——校验和能够发现传输损坏,签名则能保证来源。本实验将帮助你掌握这套流程的骨架。

步骤

  1. 创建 /root/offline 目录,并将安装 cowsay 时需要下载的文件 URI 列表保存为 /root/offline/uris.txt。(不得实际安装。)
  2. 只下载 cowsay 及其依赖项,并将下载的 .deb 文件集中到 /root/offline/pool/。必须至少有 2 个。
  3. /root/offline/pool 中的所有 .deb 创建 SHA-256 清单 /root/offline/manifest.sha256
  4. 使用该清单执行验证,并将结果保存为 /root/offline/verify.txt。所有行都必须正常(OK)。
  5. 要将 /root/offline/pool 建成软件源,请生成 PackagesPackages.gz
  6. 通过 /etc/apt/sources.list.d/labhub-airgap.list 注册该软件源并更新索引。
  7. 重新安装 cowsay,确认也能使用导入的软件包完成安装;安装后,将 cowsay labhub 的执行结果保存为 /root/offline/run.txt
  8. /root/offline/report.txt 创建为以下 4 行。 PACKAGES=<pool 안 .deb 개수> / BYTES=<pool 안 .deb 파일 크기 합계(바이트)> / VERIFY=OK / SNAPSHOT=<오늘 날짜 YYYY-MM-DD>

参考

先计算需要下载的内容

创建 /root/offline 目录,并将安装 cowsay 时需要下载的文件 URI 列表保存为 /root/offline/uris.txt。(不得实际安装。)

apt-get install 有一个选项,可以只输出要下载的 URI 列表,而不实际下载。请查找模拟类选项。

下载软件包

只下载 cowsay 及其依赖项,并将下载的 .deb 文件集中到 /root/offline/pool/。必须至少有 2 个。

有一个选项可以只下载而不进行安装。下载的文件会累积在 apt 缓存目录中。

创建校验和清单

/root/offline/pool 中的所有 .deb 创建 SHA-256 清单 /root/offline/manifest.sha256

对多个文件一次运行 sha256sum,会生成“哈希 空格 文件名”的格式。这个格式以后可以直接用于验证。

使用清单验证

使用该清单执行验证,并将结果保存为 /root/offline/verify.txt。所有行都必须正常(OK)。

sha256sum 有一个选项,可以读取清单而不是文件来进行检查。必须在清单所在的目录中执行验证,路径才能匹配。

用导入的软件包创建软件源索引

要将 /root/offline/pool 建成软件源,请生成 PackagesPackages.gz

方法与上一个实验相同。不过这次有多个文件,请检查索引中的 Package 条目数。

注册导入的软件源

通过 /etc/apt/sources.list.d/labhub-airgap.list 注册该软件源并更新索引。

请使用与上一个实验不同的软件源名称。两个软件源同时有效也没有问题。

从导入的软件源重新安装

重新安装 cowsay,确认也能使用导入的软件包完成安装;安装后,将 cowsay labhub 的执行结果保存为 /root/offline/run.txt

要以相同版本重新安装已经安装的软件包,需要使用重新安装选项。

导入报告

/root/offline/report.txt 创建为以下 4 行。 PACKAGES=<pool 안 .deb 개수> / BYTES=<pool 안 .deb 파일 크기 합계(바이트)> / VERIFY=OK / SNAPSHOT=<오늘 날짜 YYYY-MM-DD>

汇总清单行数、总字节数和验证结果即可。总字节数可以使用 du 或 stat 计算。