如何打印 Gentoo 中所有可升级包的列表

如何打印 Gentoo 中所有可升级包的列表

正在做

  emerge -avuDN --with-bdeps y --keep-going @world

需要花费大量时间并且经常失败。

有没有办法打印 Gentoo 系统中所有可升级软件包的列表?

答案1

eix是您的最佳选择。

eix --installed --upgrade将打印所有已安装的软件包,其中最佳版本不是当前版本(对于每个插槽)。

这样做的代价是您需要在每次同步后保持 eix 数据库最新。

答案2

历史

现在我已经有了浏览器(更多内容见下文),我觉得我应该在@robbat2的答案中扩展我的评论。使用 Gentoo 作为我的主要操作系统 5 年多,并在这 5 年里进行了实验搬运, 和帕卢迪斯我意识到所有主要发行版都是围绕包管理系统/工具构建的。

  1. Debian 及其变体使用apt.
  2. Redhat/Fedora 及其变体使用rpm.
  3. SuSE 及其变体使用yum.
  4. 还有许多其他人

完整列表请参见:Linux 发行版列表。请注意,Wiki 条目按包管理来划分发行版。另请注意,根据时间轴照片Gentoo 是一个父发行版。 以诺是最初的名字

BSD 的

从历史上看,大多数BSD 操作系统,直到最近才有了包管理的概念,它需要一些工作。我把 FreeBSD 放在一个额外的硬盘上,我必须看看它和 Gentoo 的关系有多密切,并且刚刚完成了我的 DE 端口和浏览器的编译。

  1. Gentoo 有 Portage Tree,FreeBSD 使用 Ports Tree。
  2. Gentoo 有sys-apps/portage.安装软件时,该emerge命令遵循与 FreeBSD 相同的顺序:configure、make、install - 直接从 Ports Tree 安装源时。

这里的主要区别是 FreeBSD 中的过程要求用户安装他们选择的包管理器,而不是 FreeBSD 选择的包管理器,然后该包管理器会跟踪所有已安装的软件及其依赖项。


我说这一切是为了表明,如果包管理器在维护系统时发生故障,则问题要么出在正在编译的包上,要么出在底层系统上。为了说明这一点,请参见:FreeBSD Bug 218620 - x11-wm/muffin 版本。 2.4.4 不再构建。注意注释 1 阻止我选择的包管理器完成 Cinnamon Desktop 的安装,不是因为我使用的包管理器坏了,或者花了太长时间,或者很慢,而是因为正在编译的包被破坏了,就此而言,不再支持。同样,emerge由于正在编译的包损坏,OP 的命令无法完成。而不是运行命令:

emerge -avuDN --with-bdeps y --keep-going @world

盲目地因为它是在某些网站上找到的,OP应该添加t树视图,然后删除--keep-going.此时,研究并修复有问题的包中的损坏,然后重新运行命令。损坏之前的所有包将不再出现在输出中,因为它们已经在新设置下重新编译。无论您使用什么工具来显示输出,都应该使用此过程。当损坏是由于编译错误引起时,Eix 与emerge 是没有意义的。

暗示

OP 需要研究的违规包信息将位于/var/tmp/portage/package-cat/offending-package/temp/build.log

答案3

恕我直言,在 gentoo 中打印所有可升级包的列表的最简单方法是:

emerge --sync
emerge -puDv @world

这些选项执行以下操作:

  • -p假装:emerge实际上并不安装任何东西,它只是打印一个不带该标志将安装的软件包列表-p。这甚至可以在没有 root 权限的情况下工作。
  • -u升级:仅显示可升级的包。
  • -D深层:还检查依赖项的升级(不直接位于 @world 文件中但运行已安装的软件包之一所需的软件包)。
  • -v详细:更详细的输出还显示使用标志和当前安装的版本。

如果您确定您的 portage 树已经是最新的,您可以跳过这一emerge --sync部分。

相关内容