からにアップグレードした後、すべてのGentoo Linuxユーザーは以下を実行することをお勧めgcc-5.x
します。gcc-6.4
emerge -e @world
理論的には、システムのすべてのパッケージを再コンパイルし、16GB i7で約30時間実行されます。これはいくつかの簡単な場合には機能しますが、ほとんどの場合、ある時点で問題が発生し、2000パッケージのうち80パッケージの後にジョブが停止します。ユーザーは問題を解決し、最初から再開しようとします。頑張った
emerge --resume --skipfirst
ただし、--keep-going
最初のパッケージで問題が発生していない場合は機能しません。
packages.provided
2番目の問題は、リストされているすべてのパッケージを無視する必要があることです。 packages.providedは、例えば最新のTeXliveが必要ですtlmgr
。
私の考えは、再コンパイルを開始した日である2017年12月1日以降にコンパイルされていないパッケージのリストから始めることです。
genlop -ln --date 1999-01-01 --date 2017-12-01 | perl -ne '/>>> (.*)/ and print " =$1";'
理想的には、システムはエラーを発生させないすべてのパッケージをコンパイルします。翌日、ユーザーは問題を修正し、修正されたパッケージを順番にコンパイルできます。
各質問の後に最初から始めるのではなく、ツリーに実際にインストールされているすべてのパッケージ(packages.providedを除く)をどのように再コンパイルしますか?
編集する:明らかに重複ではありません。特定の日付以降に再コンパイルされなかったGentooシステムのすべてのパッケージを一覧表示ただし、結果はトラブルシューティングに役立ちます。
ベストアンサー1
1つの方法は次のとおりです。
始める前に開始時間を保存してください
date +%s >emergestart && emerge -e --keep-going @world
その後、Emergencyが必然的に停止した場合は、このスクリプトを使用して回復できます(問題のあるビルドを修正した後)。
#!/bin/bash
starttime=`cat emergestart`
eix '-I*' --format '<installedversions:DATESORT>' | cut -f1,3 >tmplist
echo $starttime >>tmplist
sort -n tmplist | sed -e/$starttime/q | sed -e'/[0-9]*\t*/s///' | sort | comm -23 - <(sort omitlist) | comm -23 - <(sort /etc/portage/profile/package.provided) >buildlist
rm tmplist
emerge -a `cat buildlist` --keep-going
このスクリプトは、packages.provided
リストからすべてのパッケージを削除するだけでなく、名前付きファイルから表示したくない他のパッケージも削除します(問題を引き起こしたり再表示したりする必要がないため)。omitlist
例omitlist
:
sys-devel/gcc:5.4.0
sys-kernel/gentoo-sources:4.13.12
sys-kernel/gentoo-sources:4.14.2
app-cdr/cdrdao
media-gfx/kphotoalbum
virtual/libintl
virtual/libiconv
app-doc/abs-guide
app-doc/autobook
app-doc/jargon
履歴書スクリプトを数回繰り返す必要があるかもしれません。