LabHub
学习 学习路径 课程

包管理

用 apt 操作软件包

在 LabHub 中继续学习

目标

用apt搜索、安装、卸载,甚至用hold和pin抓住版本,都变得熟练。这个练习结束后apt-cache policy只要看输出就可以解释“为什么选出这个版本”。

为什么重要

apt不会实时询问存储库。/var/lib/apt/lists/只看缓存的索引进行判断,如果同一包在多个存储库中,则按优先顺序选择。了解这个结构的话,就可以一次性说明“虽然在存储库里,但看不见”(索引过时)和“放入内部镜像,但官方接收”(优先顺序相同)。这个实践环境没有互联网。/opt/localrepo因为只有线下存储库,所以所有安装都发生在那个存储库里。

阶段

  1. /root/pkg创建目录,apt-cache policy的全部输出/root/pkg/policy.txt请保存为。
  2. tree搜索名为的套餐,然后查看结果。/root/pkg/search-tree.txt请保存为。结果中名字准确tree必须要有人排队。
  3. tree仅用一行写下安装候选版本/root/pkg/tree-version.txt请写在上面。(例如:2.1.1-2ubuntu3)
  4. treencdu请安装两个软件包。
  5. cowsay安装,从其依赖性中只选择Depends行/root/pkg/cowsay-depends.txt请保存为。
  6. htop安装后从升级对象中除外(hold),并告知该事实。/root/pkg/hold.txt请保存为。
  7. /etc/apt/preferences.d/labhub.pref制作htop请将套餐置于优先顺序1001PackagePinPin-Priority必须有三行。
  8. /root/pkg/report.txt请制作。前面安装的treencduhtopcowsay关于您的套餐이름 버전按照格式依次写一行,在最后一行HOLD=<hold 걸린 패키지 이름>请写下。

参考

确认工作目录和存储库

/root/pkg创建目录,apt-cache policy的全部输出/root/pkg/policy.txt请保存为。

如果在没有参数的情况下执行apt-cache policy,就会显示现在设置的存储库和优先级。请将该输出保存为文件。

搜索套餐

tree搜索名为的套餐,然后查看结果。/root/pkg/search-tree.txt请保存为。结果中名字准确tree必须要有人排队。

apt-cache search 在名称和说明中搜索。结果中必须有包含名称为tree的行。

确认安装候选版本

tree仅用一行写下安装候选版本/root/pkg/tree-version.txt请写在上面。(例如:2.1.1-2ubuntu3)

apt-cache policy <软件包> 的Candidate行中的值。请只写一个版本字符串的行。

安装软件包

treencdu请安装两个软件包。

安装后请用dpkg -s确认状态。Status行是否为'install ok installed'才是真正安装的。

提取依赖性列表

cowsay安装,从其依赖性中只选择Depends行/root/pkg/cowsay-depends.txt请保存为。

首先需要安装才能填写后续步骤的报告。apt-cache depends除了Depends外还会显示Recommends、Suggests,所以只留下Depends一行即可。

在升级中排除

htop安装后从升级对象中除外(hold),并告知该事实。/root/pkg/hold.txt请保存为。

apt-mark 有 hold / unhold / showhold 子命令。请确认是否被挂起显示。

用图钉文件指定优先级

/etc/apt/preferences.d/labhub.pref制作htop请将套餐置于优先顺序1001PackagePinPin-Priority必须有三行。

Pin文件是Package/Pin/Pin-Priority三行为一组。Pin从version、release、origin之一开始。

安装状态报告

/root/pkg/report.txt请制作。前面安装的treencduhtopcowsay关于您的套餐이름 버전按照格式依次写一行,在最后一行HOLD=<hold 걸린 패키지 이름>请写下。

使用dpkg-query的-W -f选项,可以只提取想要的字段以想要的格式。hold列表在apt-mark那一边。