Ich habe die Antworten gelesen indieser Beitragaber es scheint bei meinem Problem nicht zu funktionieren.
Ich führe ein Bash-Skript über stdin von wget aus:
wget -O - http://serverip/subfolder/script | sudo bash
Ich habe versucht, zu verwenden apt-get -y --force-yes install <packages..> || true
, aber das Skript wird trotzdem beendet, wenn eines der aufgelisteten Programme per apt-get installiert wird.
Das Skript wird nicht beendet, wenn alle aufgelisteten Pakete bereits installiert sind.
Das Gleiche passiert, wenn ich ein habe apt-get upgrade
und es Pakete installiert. Das Skript wird beendet.
Ich habe einen anderen Satz von Skripten, der zu funktionieren scheint. In diesem Szenario ist das Installationsskript nur ein Stub, der das Skript herunterlädt, ausführt und bash <scriptname>
dann löscht. Das Skript selbst erhöht seine Berechtigungen, indem es selbst sudo ausführt. apt-get
funktioniert hier wie erwartet.
apt-get
Ich bin für alle Tipps dankbar , wie sich die Beendigung des Skripts verhindern lässt .
Antwort1
Ich wünschte, die Leute würden damit aufhören: wget | bash
. Es ist einfach albern und hat unbeabsichtigte Auswirkungen wie die hier. Sie haben Bash, also nutzen Sie seine Funktionen. Insbesondere die Prozesssubstitution:
bash <(wget -O - http://serverip/subfolder/script)
Antwort2
Sie müssen wahrscheinlich nur aufhören, apt-get
die Standardeingabe gierig zu lesen. Tun Sie dies, indem Sie stdin auf umleiten /dev/null
, eine Datei, die beim Lesen eof zurückgibt. Beispiel:
apt-get -y --force-yes install ... </dev/null