高效合并apt install与dist-upgrade的技术探索

本文探讨了在Debian/Ubuntu系统构建中如何优化apt install和dist-upgrade的组合使用,通过分析包管理机制和依赖解析逻辑,提出减少冗余操作的技术方案,并分享实际脚本实现方法。

合并“apt install”和“dist-upgrade”?

2020年10月30日
分类: Blogging, Debian, Ubuntu, Ubuntu-Server — kees @ 12:07 pm

我经常在镜像构建/刷新脚本中看到这样一种模式:先安装一组软件包,然后更新所有软件包:

1
2
3
apt update
apt install -y pkg1 pkg2 pkg2
apt dist-upgrade -y

虽然这看起来没什么,但会导致冗余操作。例如读写软件包数据库、可能运行触发器(如手册页刷新、ldconfig等)。内部软件包依赖解析实际上并无差异:“install”命令也会升级所需软件包等。将它们合并应该是完全可行的,但我尚未找到一种简洁的方法来实现。

目前我找到的最佳方案是:

1
2
3
4
apt update
apt-cache dumpavail | dpkg --merge-avail -
(for i in pkg1 pkg2 pkg3; do echo "$i install") | dpkg --set-selections
apt-get dselect-upgrade

这实现了同时运行“install”和“upgrade”的效果,但未包含“dist-upgrade”(其依赖解析逻辑略有不同,而我更希望使用)。此外,它还包含了本应不必要的dpkg数据库更新开销。有人知道更好的方法吗?

更新: Julian Andres Klode指出,dist-upgrade实际上也可以像install一样接受软件包参数。拍额头 我甚至没有尝试过——我轻信了手册页和-h输出。它完美适用!

© 2020, Kees Cook。本作品采用知识共享署名-相同方式共享4.0国际许可协议进行许可。

评论已关闭

尚无评论。

分类
Blogging (152) | Chrome OS (49) | Debian (117) | Embedded (8) | General (33) | Health (3) | Inkscape (8) | Kernel (37) | kernel.org (6) | Multimedia (33) | Networking (27) | Reverse Engineering (15) | Security (130) | Ubuntu (179) | Ubuntu-Server (109) | Vehicles (2) | Vulnerabilities (12) | Web (14)

搜索:

链接
Outflux | #fediverse

归档
(归档月份列表,从2005年1月至2023年10月)

元数据
登录 | 文章RSS | 评论RSS | WordPress.org

由WordPress提供技术支持

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计