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