Fahren Sie mit dem Fehler fort, wenn apt-get auf eine Installation stößt, bei der das Paketproblem nicht gefunden werden konnte

11

Wenn ich Folgendes ausführe:

sudo apt-get install vim abcde php5-cli

Es schlägt mit der folgenden Meldung fehl, die das erwartete Verhalten darstellt:

E: Paket abcde kann nicht gefunden werden`.

Ich möchte, dass es installiert wird vimund auch wenn ein Fehler abcdeauftritt, fahren Sie einfach mit der Installation des php5-cliPakets fort. Das heißt, ich möchte apt-getdie Liste fortsetzen, auch wenn einige der Pakete nicht gefunden werden können.

Ich habe es versucht:

sudo apt-get install --ignore-missing vim abcde php5-cli
tbenz9
quelle

Antworten:

9

Kurze Antwort: Es ist möglich, dass Sie dies tatsächlich nicht möchten.

Warum ist das so? Über diese spezielle Funktionalität wurde viel diskutiert. Eine davon befindet sich in diesem (doppelten) Fehlerbericht und dem, mit dem sie verknüpft ist.

Die Diskussion im Fehlerbericht erklärt auch, dass "--ignore-missing" nur dann gilt, wenn beim Herunterladen eines Pakets ein Problem auftritt, das ansonsten aufgrund der Informationen, die Ihr "apt-get "enthält, vorhanden sein sollte. Dies wird auch hier und in der Dokumentation erläutert .

Gibt es eine Problemumgehung?

Wenn Sie nach dem Lesen der vorherigen Quellen immer noch sehr sicher sind, dass Sie dies tun möchten, gibt es andererseits (suboptimale, aber ziemlich sichere) Optionen wie die vom Benutzer "Aleksandr Levchuk" hier angegebene :

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

Oder wenn Sie es vorziehen, dann einen Einzeiler mit minimalen Modifikationen:

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

Wenn es viele Pakete gibt, können Sie diese hinzufügen, -ydamit nicht wiederholt nach einer Bestätigung gefragt wird:

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

Oder:

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

Hoffe das hilft.

user391035
quelle
Übrigens, wenn Sie jemand wie ich sind, der Fish anstelle von Bash verwendet, müssen Sie zuerst "bash" eingeben, um die Muscheln zu wechseln. Kopieren Sie dann den Befehl und fügen Sie ihn ein, da die Fish-Shell aus irgendeinem Grund nicht funktioniert. Funktioniert gut mit Bash.
Ev
1

Eine Möglichkeit, dies zu umgehen, besteht darin, apt-get für jedes Paket einmal aufzurufen :

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

Oder als Funktion

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

install_ignore_fail package1 package2 package3
xjcl
quelle