Answers:
看来您已经掌握了它。唯一的其他提示是,使它比盲目的批量更新慢一些。您始终可以使用emerge -DNuav <atom>
而不是单独更新软件包或依赖项链world
(对于不想添加到世界文件中的内容,请使用--oneshot,例如系统库)。
请注意,如果您定期保持最新状态,而不是每隔几个月进行一次整体批处理更新,总是比较容易做。另外,为避免太多的意外,您可能会发现订阅其中一个邮件列表gentoo-user
(如警告:此列表每天约100封邮件)会很有帮助,因为几乎所有重大更新问题都可能显示在大量的讨论解释了如何解决它们。
我猜想下一个主要的“问题”更新将是一旦稳定就迁移到openrc(在去年iirc的〜arch中完成,只有几个问题,主要是网络更改)。
我一直在使用与您几乎相同的步骤,除了:
eix-sync
而不是emerge --sync
因为我喜欢看到对Portage树的更改。对于注意到我可能要安装的树中新安装的软件包,这特别好。
layman -S
(有时)在主体出现之前同步叠加层中的所有更改。
eclean-dist -d
之后,revdep-rebuild
请清理废弃的tarball。每次出现后我都会这样做,因为软件包降级并不常见。
eix-test-obsolete
作为帮助保持/ etc / portage文件整洁和最新的最后一步。这也让我知道何时安装了已从Portage中完全删除的软件包,因此我需要从存储库中获取ebuild。最近的一个示例中,由于Xen VPS上运行的内核较旧,所以我必须屏蔽iproute2> 2.6.22.20070710的所有版本,但是最近已将其从Portage中删除。
eix-sync
并eix-test-obsolete
位于应用程序portage / eix中。
eclean-dist
在app-portage / gentoolkit中。
emerge --sync
或eix-sync
或emerge-delta-webrsync
和eix-update
emerge -av portage
eclean-dist
检查linux头文件,glibc,binutils,libtool或gcc之一是否具有重大更新(例如,gcc从4.6升级到4.8)。如果不是,请转到步骤11。
完全重建:
rm -rf 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
如果您的目标是拥有所有软件包的绝对最新版本,那么是的,这似乎涵盖了所有基础。不过,令我惊讶的是,这种方法已经为您服务了很长时间,因为我想您会经常被积木,破碎的部件咬伤,等等。在过去的几年中,我对批发更新变得更加谨慎,在查看更新树后选择零星地做它。Gentoo的发展似乎已经过去了。也许是因为Ubuntu的兴起。
无论如何,为了使整个过程真正精益求精,您可能要尝试的另一件事是清除distfile。如果您搜索,那里就有脚本。
这是我的工作:
emerge --sync //Synchronize the package manager with the latest
//version of each package.
emerge -aDvNu system //updates the system, but only important if you want the
//latest stable version of the actual compiler and libraries
//with the core system.
emerge -uDNav world //world means everything we've asked to be emerged before
//this does not include things that came pre installed.
//N means if you change your use directives in
//your make.conf file to pull in the new packages.
emerge -av depclean //removes libraries or programs that don't have any other
//dependencies because of an update.
revdep-rebuild //means if something is broken by an update, it
//recompiles it. Fixes dynamic and static linking problems.
如果您不完全理解注释,请阅读此内容,因为它是有关如何更新gentoo软件包的权限。
http://www.gentoo.org/doc/zh/handbook/handbook-x86.xml?part=2&chap=1
很长一段时间以来,我一直使用此过程:
emerge -f --update --newuse --deep world && emerge --update --newuse --deep world
对于我来说,我更喜欢整夜更新。但是有时会发生某些故障,因此您必须再次下载所有(或某些)程序。
也许--newuse开关是不必要的,但是我经常在编辑make.conf,因此对我来说很有意义。