升级 Gentoo Linux 的最佳程序?

升级 Gentoo Linux 的最佳程序?

这就是我长期以来升级 Gentoo 的方法。这是受到推崇的方法?有什么陷阱或更好的方法吗?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all

答案1

看起来你已经搞定了。唯一的其他建议是,可能比盲目全面更新慢一点。你始终可以使用而emerge -DNuav <atom>不是单独更新软件包或依赖链world(对于你不想添加到 world 文件中的内容,例如系统库,请使用 --oneshot)。

请注意,如果您定期更新,而不是每几个月进行一次整体批量更新,那么这样做总是更容易。此外,为了避免太多意外,您可能会发现订阅其中一个邮件列表会很有帮助,例如gentoo-user(警告:此列表每天约有 100 封邮件),因为几乎任何重大更新问题都可能出现在列表中,并有大量讨论解释如何解决这些问题。

我猜测下一个主要的“问题”更新将是稳定后迁移到 openrc(据我回忆,它是在去年年中~3 月完成的,只有几个问题,主要是网络变化)。

答案2

我一直在使用与您几乎相同的步骤,除了:

  • eix-sync而不是emerge --sync因为我喜欢看到 portage 树的变化。这对于注意到我可能想要安装的树中新加入的软件包特别有用。

  • layman -S(偶尔)在主要出现之前同步覆盖中的任何更改。

  • eclean-dist -d清理过时的 tarball。每次 emerge后revdep-rebuild我都会这样做,因为软件包降级并不常见。

  • eix-test-obsolete作为最后一步,帮助保持我的 /etc/portage 文件整洁和最新。这也让我知道我安装了哪些软件包,而这些软件包已从 portage 中完全删除,因此我需要从存储库中获取 ebuild。最近的一个例子是,由于我的 Xen VPS 上运行的是较旧的内核,但它最近已从 portage 中删除,因此我必须屏蔽 iproute2 > 2.6.22.20070710 的所有版本。

eix-sync位于eix-test-obsoleteapp-portage/eix 中。

eclean-dist位于 app-portage/gentoolkit 中。

答案3

  1. emerge --synceix-syncemerge-delta-webrsynceix-update
  2. emerge -av portage
  3. eclean-dist

检查 linux-headers、glibc、binutils、libtool 或 gcc 是否有重大更新(例如 gcc 从 4.6 更新到 4.8)。如果没有,请转到步骤 11。

完全重建:

  1. rm -rf $(portageq pkgdir)/*— 清理 PKGDIR 中的缓存
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc>切换到新的 gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

如果你在第 10 步或第 11 步遇到任何问题,请修复它并重试

更新世界:

  1. 清理你的世界文件/var/lib/portage/world中不必要的包并检查/etc/portage实体
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

如果您在步骤 14-18 中遇到任何问题,请修复它并重复从步骤 13 开始的所有步骤。

  1. etc-update或者dispatch-conf
  2. glsa-check -vp affected更新后,插槽中可能会有受影响的软件包
  3. emaint --check all

答案4

glsa-check -t all
glsa-check -f all

这是你应该首先运行的。如果你升级了所有软件包,则不需要它。

哦,我更喜欢 cfg-update ;)

相关内容