Gentoo Linuxで、並列エマージングが有効になっている多くのパッケージをエマージングしていて、ソースコードのコンパイルに大量のRAMが必要なため、そのうちの1つが失敗し、コンパイラーがメモリ不足に陥り、問題が発生したとします。これはおそらく、問題のあるパッケージだけがビルドされていなかったために発生したため、そのパッケージを個別に出現させれば、問題なくビルドできる可能性があります。そのため、その1つのパッケージのみを出現させ、それが完了したら、以前の大きな出現の残りを再開したいと思います。どうすればいいですか?
resume
リストをファイルに保存してからemergeにロードする など、オンラインで投稿されたソリューションを見たことがありますが、これらのソリューションは最善ではないようです(そのソリューションソリューションは並列出現をサポートしていないようです)。理想的には、最善の解決策では、問題のパッケージを個別にインストールした後、emerge --resume
を発行して前のemergeを続行できるようにする必要があります。
emerge ...
# fail
ebuild <PORTDIR>/<package_that_failed>.ebuild merge
emerge --resume
テストされていませんが、動作するはずです
出現しているパッケージのこのリストをどのように指定しているかによって異なります。多くの依存関係を取り込むパッケージまたはセットを指定して実行する場合は、problematicパッケージをビルドしてから、同じコマンドを再度実行します。その場合、emergeはすでにマージされているパッケージをインストールしません。
ただし、可能性が低く、コマンドラインでパッケージのリストを手動で指定している場合は、既にマージされているパッケージをリストから手動で削除する必要があります。私の知る限り、すでにマージされたものを除外するパラメーターはありません。
おそらく、gentoolkitまたはportage-toolsのその他のヘルパーアプリを使用して魔法をかけることができますが、残念ながら私はそれらにあまり詳しくありません。