web-dev-qa-db-ja.com

emerge -auvDの特定のアップグレードをスキップする

emerge -auvD worldで特定のアップグレードをスキップする簡単な方法はありますか?

たとえば、現在、Portageツリーに brokenmedia-sound/teamspeak-server-bin-3.0.5-r1があり、パッケージがリストの最初のパッケージであるため、アップグレード全体が中断されます。もちろん、package.maskファイルを使用してこのバージョンを単純にマスクすることもできますが、環境変数またはコマンドラインスイッチを使用して今すぐスキップすることをお勧めします。

私はしないでくださいemerge -auvD1 list of working packagesを使用したくない(つまり、すべての名前を指定して他のパッケージのみを更新する)ことに注意してください。

31
ThiefMaster

--excludeオプションがこれを行うようです:

--exclude ATOMS
スペースで区切られたパッケージ名またはスロットアトムのリスト。 Emergeは、指定されたパッケージアトムのいずれかに一致するebuildまたはバイナリパッケージをインストールしません。

だからこれは私のために仕事をしました:

emerge -auvD --exclude=media-sound/teamspeak-server-bin world
39
ThiefMaster

マスクしたくない場合は、--keep-goingオプション。これにより、emergeはリストをリセットし、失敗したパッケージをリストに入れずに続行します。

12
Keith

ThiefMasterの回答 が適切な方法ですが、別のオプションがあります Keithの回答 。つまり、彼の答えで、emergeが試行され、時間がかかる場合があります。 firstパッケージが問題が発生したばかりで問題があることがわかっている場合は、--resumeおよび--skipfirstを使用できます。

--resume(-r)

エラーのために中止された最新のマージリストを再開します。これにより、再開される元のコマンドで指定された引数とオプションが再利用され、ユーザーは--resumeを呼び出すときに追加のオプションを提供することもできます。再開されたコマンドからの引数が代わりに使用されるため、--resumeへの引数としてアトムまたはセットを提供することはエラーです。この操作は失敗した場合にのみエラーを返すことに注意してください。 Portageが何もしない場合、Portageはメッセージと成功条件で終了します。再開リストは、全体が完了するまで、または中止された別のマージリストによって置き換えられるまで存続します。履歴の履歴には、2つのマージリストを保存できます。 1つの再開リストが完了した後、古いリストを再開するためにもう一度--resumeを呼び出すことができます。再開リストは/var/cache/edb/mtimedbに格納され、emaint --fix cleanresumeを実行することにより明示的に破棄できます(emaint(1)を参照)。

--skipfirst

このオプションは、--resumeと共に使用した場合にのみ有効です。履歴書リストの最初のパッケージを削除します。残りのパッケージについて依存関係が再計算され、依存関係が満たされていないか、マスクされているパッケージは自動的に削除されます。関連する--keep-goingオプションも参照してください。

3
equaeghe