gcc-5.x
建议从gcc-6.4
所有 Gentoo Linux 用户升级后运行
emerge -e @world
这将重新编译系统上的所有软件包,并在理论上 30 小时左右以 16 GB 占用我的 i7。这将在一些简单的情况下工作,但在许多情况下,由于某个问题,任务在 2000 个包中的 80 个之后停止。用户尝试修复它并再次从零开始。我试过了
emerge --resume --skipfirst
--keep-going
但这不起作用,如果问题不是由第一个包引起的。
packages.provided
第二个问题是,必须忽略其中列出的所有包。packages.provided 对于需要最近的 TeXlive 并通过tlmgr
.
我的想法是从 2017-12-01 之后未编译的软件包列表开始,这是我开始重新编译的那一天。
genlop -ln --date 1999-01-01 --date 2017-12-01 | perl -ne '/>>> (.*)/ and print " =$1";'
理想情况下,系统会编译所有不会引发错误的包。第二天,用户可以修复问题并一个接一个地编译修复的包。
如何重新编译所有真正从树安装的包(不包括 packages.provided),而不是在每个问题后从零点开始?
编辑:这显然与列出 Gentoo 系统上的所有软件包没有重复,这些软件包自日期以来没有重新编译,但是它的结果可能有助于解决这个问题。
这是一种方法:
在开始之前保存开始时间
然后当出现不可避免地停止时,您可以使用此脚本恢复(在修复任何有问题的构建之后)
该脚本
packages.provided
从一个名为omitlist
示例
omitlist
:您可能需要对 resume 脚本进行多次迭代