emerge -auvD worldで特定のアップグレードをスキップする簡単な方法はありますか?
例えば、現在、broken media-sound/teamspeak-server-bin-3.0.5-r1 が portage ツリーの中で安定版としてマークされていますが、このパッケージはリストの中で最初のものなので、全体のアップグレードを壊しています。もちろん、package.mask ファイルを使ってこのバージョンを単純にマスクすることもできますが、環境変数やコマンドラインスイッチを使って、今だけスキップするようにしたいと思っています
emerge -auvD1 list of working packagesは使いたくないので注意してください(つまり、他のパッケージの名前をすべて指定して更新するだけです)
31 ThiefMaster 2012-05-17
--excludeオプションがこれをやっているようです
--exclude ATOMSスペースで区切られたパッケージ名またはスロット原子のリスト。Emerge は、指定されたパッケージアトムに一致する ebuild やバイナリパッケージをインストールしません
だから、これが私のために仕事をしてくれました
emerge -auvD --exclude=media-sound/teamspeak-server-bin world
41 ThiefMaster 2012-05-17
マスクしたくない場合は --keep-going オプションを使ってください。これは、失敗したパッケージをリストに入れずに、 emerge のリストをリセットして続行させます
12 Keith 2012-05-17
ThiefMasterの回答が正解だが、Keithの回答を改善するもう一つの選択肢があると思う。すなわち、彼の答えでは、 emerge が試され、時間がかかるかもしれません。問題が発生したばかりで最初のパッケージに問題があることがわかっている場合は、--resumeと--skipfirstを使うことができます
--resume(-r)エラーにより中断された直近のマージリストを再開します。これは、再開しようとしている元のコマンドで与えられた引数とオプションを再利用します。アトムやセットを
--resumeの引数として与えるとエラーになります。この操作は失敗した場合のみエラーを返すことに注意してください。portage が行うべきことが何もない場合、 portage はメッセージと成功条件で終了します。レジュームリストは、それが完全に完了するか、中止された別のマージリストがそれに取って代わるまで持続します。レジューム履歴には、2つのマージリストを保存することができます。1つのレジュームリストが完了した後、古いリストを再開するために再度--resumeを呼び出すことができます。レジュームリストは/var/cache/edb/mtimedbに格納され、emaint --fix cleanresumeを実行することで明示的に破棄することができます (emaint(1) を参照してください)
--skipfirstこのオプションは
--resumeと一緒に使用した場合のみ有効です。レジュームリストの最初のパッケージを削除します。依存関係は残りのパッケージについて再計算され、満足のいかない依存関係やマスクされているパッケージは自動的に削除されます。関連する--keep-goingオプションも参照してください
3 equaeghe 2016-05-25

