这就是我长期以来一直在升级 Gentoo 的方式。这是推荐的方法吗?有什么陷阱或更好的使用方法吗?
emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
这就是我长期以来一直在升级 Gentoo 的方式。这是推荐的方法吗?有什么陷阱或更好的使用方法吗?
emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
我一直在使用与您相同的步骤,除了:
eix-sync
而不是emerge --sync
因为我喜欢看到 portage 树的变化。这对于注意到我可能想要安装的树中新的软件包特别有用。layman -S
(偶尔)在主出现之前同步覆盖中的任何更改。eclean-dist -d
在revdep-rebuild
清理过时的 tarball 之后。每次出现后我都会这样做,因为包降级并不常见。eix-test-obsolete
作为帮助保持我的 /etc/portage 文件整洁和最新的最后一步。这也让我知道我何时安装了已从 portage 中完全删除的软件包,因此我需要从存储库中获取 ebuild。最近的一个例子,我必须屏蔽所有版本的 iproute2 > 2.6.22.20070710,因为我的 Xen VPS 上运行的是旧内核,但它最近从 portage 中删除了。eix-sync
并且eix-test-obsolete
在 app-portage/eix 中。eclean-dist
在 app-portage/gentoolkit 中。emerge --sync
或eix-sync
或emerge-delta-webrsync
和eix-update
emerge -av portage
eclean-dist
检查 linux-headers、glibc、binutils、libtool 或 gcc 之一是否有重大更新(例如 gcc 从 4.6 更新到 4.8)。如果不是,请转到第 11 步。
完全重建:
rm -rf $(portageq pkgdir)/*
— 清理 PKGDIR 中的缓存emerge -av linux-headers glibc binutils gcc-config libtool gcc
gcc-config <number of new gcc>
切换到新的 gccsource /etc/profile
emerge -avb glibc binutils gcc libtool
emerge -avbke system
emerge -avbke world
如果您在第 10 步或第 11 步有任何问题,请修复并重试
更新世界:
/var/lib/portage/world
从不必要的包中清理你的世界文件并检查/etc/portage
实体fixpackages
emerge -avuDN world
eselect python update
python-updater -- -av
perl-cleaner --all -- -av
emerge -a --depclean
revdep-rebuild -i -- -av
如果您在步骤 14-18 中遇到任何问题,请修复它并重复步骤 13 中的所有步骤。
etc-update
或者dispatch-conf
glsa-check -vp affected
您可以在更新后将受影响的包放在插槽中emaint --check all
好像你已经覆盖了它。唯一的另一个提示是可能比盲目的批发更新慢一点。您始终可以单独更新软件包或依赖链,
emerge -DNuav <atom>
而不是world
(使用 --oneshot 来处理您不想添加到世界文件中的内容,例如系统库)。请注意,如果您定期更新,而不是每隔几个月进行一次整体批量更新,这样做总是更容易。此外,为避免太多意外,您可能会发现订阅其中一个邮件列表很有帮助
gentoo-user
(警告:此列表中每天约 100 封邮件),因为几乎所有重大更新问题都可能出现在列表中大量讨论解释如何解决它们。我猜想下一个主要的“问题”更新将是一旦稳定后迁移到 openrc(它是在去年年中 iirc 的 ~arch 上完成的,只有几个问题,主要是网络更改)。
如果您的目标是拥有绝对最新的所有软件包,那么是的,这似乎涵盖了所有基础。不过,我很惊讶这对你有用很长时间,因为我想你会经常被块、损坏的 deps 等咬伤。在过去的几年里,我对批发更新变得更加小心,而是在查看更新树后选择零敲碎打。Gentoo 的发展似乎已经过了鼎盛时期。也许是因为 Ubuntu 的兴起。
无论如何,您可能会尝试的另一件事是对整个过程非常挑剔,那就是清理您的 distfiles。如果您搜索,那里有脚本。
这就是你应该首先运行的。如果您升级所有软件包,则不需要。
哦,我更喜欢 cfg-update ;)
这就是我所做的:
如果您不完全理解评论,请阅读此内容,因为它是如何更新您的 gentoo 软件包的权威。
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1
您的过程是正确的,尽管可能不需要运行每个命令,但通常我只是进行同步和更新世界。Emerge 通常会告诉您是否需要运行脚本来重建文件,例如在主要 Python 升级期间,并且还会告诉您何时合并配置更改。因为 Gentoo 实际上并没有从版本到版本的升级路径。在你出现世界的那一刻,你就得到了最新版本。
很长一段时间以来,我一直使用这个程序:
我,就我而言,更喜欢通宵更新。但有时会发生某些故障,因此您必须再次下载所有(或某些)程序。
也许 --newuse 开关是不必要的,但我经常编辑我的 make.conf 所以对我来说很有意义。
看起来不错,虽然我不会这么快运行 depclean。
除非您有像低 HDD 空间这样的要求,否则您可以回来并以较少的常规间隔进行 depclean。让他们在短时间内出现并没有什么坏处。如果您不幸在更新后注意到一些损坏的软件包,那么您可以确定它们不是删除任何松散依赖项的结果。
这就是我在我的 VPS 上这样做的方式:
第 0 步(来自 /etc/crontab)
步骤1:
第2步: