![我想列出所有已安装的非传递包,我该怎么做?](https://linux22.com/image/1191985/%E6%88%91%E6%83%B3%E5%88%97%E5%87%BA%E6%89%80%E6%9C%89%E5%B7%B2%E5%AE%89%E8%A3%85%E7%9A%84%E9%9D%9E%E4%BC%A0%E9%80%92%E5%8C%85%EF%BC%8C%E6%88%91%E8%AF%A5%E6%80%8E%E4%B9%88%E5%81%9A%EF%BC%9F.png)
在 apt/aptitude 中,许多软件包不应手动安装,因为它们会破坏系统进一步升级的能力并导致冲突。这些软件包被视为“过渡软件包”,只有当另一个依赖于它们的软件包安装时才会安装。
我想查看已安装软件包的列表,但不包括所有这些过渡软件包。我该怎么做?
答案1
Apt 的设计使得您不需要每个(非传递)包的列表。
对于具有相同应用程序的不同安装,您只需要依赖链中顶级软件包的一小部分列表——非依赖的软件包。大多数用户发现这个小得多的列表更易于管理。
以 22.10 桌面为例,实现此目的的一种相当简单的方法:
- 列出 apt-marked 手册的软件包集。
sudo apt-mark listmanual > listmanual
- 列出 Ubuntu 原厂安装中包含的软件包集。使用 Awk 删除附加字段并仅保留软件包名称。
wget -O - http://releases.ubuntu.com/releases/22.10/ubuntu-22.10-desktop-amd64.manifest | awk '{print $1}' > manifest
- 从 #1 中删除 #2 中的所有包。
comm -2 -3 manual manifest
- 检查
comm
输出,输出内容应足够简短以便于管理。不要包含随机库、依赖项、元包、不再使用的应用程序、旧错误和其他明显不需要的内容。
您最终审查的软件包列表是您想要在新安装的系统上安装的软件包。