有时 apt 将...(等等)的依赖项的依赖项安装到所需的最深级别。所以我想知道,是否有任何包没有任何进一步的依赖项,或者在依赖关系树的最深层是否有一个包所有其他包都依赖?
答案1
aptitude search '!~v !?depends(.) !?predepends(.) !?recommends(.) !?suggests(.)'
应列出既不依赖也不预先依赖也不推荐或建议任何包的非虚拟包。
看aptitude 可以分组或搜索没有任何依赖的包吗?对于没有任何依赖的包。
答案2
我不能说 Debian 是这样,但在 Fedora 中肯定有一些软件包不依赖于任何东西,例如busybox
- 它是静态构建的。我可以想象软件包只包含文本文件 - 这些文件可能不依赖于之前安装的任何其他内容。然后是内核 - 请继续阅读。
有一个名为filesystem
- 它为要安装的系统提供空目录 - 它是一个核心包,但只有该grub2-efi-x64
包直接依赖于它。
几乎任何 Linux 发行版中的每个软件包含有二进制文件或/和库将依赖于提供核心内核 API 的 C 库 - 通常是glibc
.
然后,Linux 内核包包含二进制文件,但它不依赖它,glibc
因为即使您的文件系统尚未安装,它也需要运行系统。glibc
取决于套餐吗filesystem
?并不真地。有些引导加载程序同样不依赖于 glibc,因为它们需要尽早运行,例如 GRUB、LiLo 或 ReFind。
然后您可以轻松创建一个导出接口的库,但它不使用 C 例程,因此它不会依赖于 glibc。
TLDR:有很多种类,没有一个包是所有其他包所依赖的。还有一些不需要任何东西的包。
答案3
当然,有。
我刚刚创建了一个简短的脚本(快速而肮脏)检查这一点德班:
cd /var/lib/apt/lists
while read -r x; do
[[ ${y} == Package* && ${x} != Depend* ]] && echo "${y}"
y="${x}"
done < <( grep -h -E "^(Package|Depends):" *_Packages )
这将列出所有没有依赖项的包。
在我的系统上它发现了 7591 个软件包。