it-swarm-ja.com

apt-getがパッケージの問題を特定できないインストールを検出した場合、エラーで続行します

次を実行すると:

Sudo apt-get install vim abcde php5-cli

予想される動作である次のメッセージで失敗します。

E:パッケージabcdeが見つかりません `。

vimをインストールして、abcdeにエラーが発生しても、インストールを続行するだけですphp5-cli パッケージ。意味apt-get一部のパッケージが見つからない場合でも、リストを下に移動します。

私はもう試した:

Sudo apt-get install --ignore-missing vim abcde php5-cli
11
tbenz9

短い回答:実際にはこれを実行したくない可能性があります。

なぜなのですか?この特定の機能については多くの議論がありました。その1つは、この ((duplicate)bug report )とそれにリンクされているものです。

バグレポートでの議論では、「-ignore-missing」は、「apt-get」の情報によって存在するはずのパッケージのダウンロードに問題がある場合にのみ適用されることも説明しています。 こちらドキュメント でも説明されています

回避策はありますか?

以前のソースを読んだ後でも、これを実行することが非常に確実である場合は、一方で、ユーザー「Aleksandr Levchuk」によって指定されたもののような(次善であるがかなり安全)オプションがあります here

for i in package1 package2 package3; do
  Sudo apt-get install $i
done

または、必要に応じて、最小限の変更を加えたワンライナー:

for i in package1 package2 package3; do Sudo apt-get install $i; done

パッケージがたくさんある場合は、-y繰り返し確認を求めないようにします。

for i in package1 package2 package3; do
  Sudo apt-get install -y $i
done

または:

for i in package1 package2 package3; do Sudo apt-get install -y $i; done

お役に立てれば。

9
user391035

これを回避する1つの方法は、apt-get パッケージごとに1回を呼び出すことです。

echo package1 package2 package3 | xargs -n 1 Sudo apt-get install -y

または関数として

function install_ignore_fail { echo "$*" | xargs -n 1 Sudo apt-get install -y; }

install_ignore_fail package1 package2 package3
1
xjcl