Besätigung in Update-Skript klappt nicht

Excelmania

Lieutenant
Registriert
Apr. 2010
Beiträge
799
Hallo.

Ich habe für ein paar Linuxrechner (Ubuntu) ein update-skript geschrieben. Leider klappt die Bestätigung der Installation nicht.

Bash:
 #!/bin/bash
echo "Aktualisieren der Repositories:"
sudo apt-get update
echo "Einspielen von Aktualisierungen:"
sudo apt-get upgrade
echo "Pakete+Abhängigkeiten aktualisiern:"
sudo apt-get dist-upgrade -y
echo "Autoclean"
sudo apt-get autoclean
echo "Autoremove"
sudo apt-get autoremove

Es erscheint weiterhin die Abfrage mit ja oder nein. Wie bekomme ich es hin, dass immer j erzwungen wird?
 
Da fehlt beim Upgrade wohl auch noch -y
Da wird die Abfrage mit Ja / Nein kommen, nicht erst beim dist-upgrade
 
Der Schritt einmal ein upgrade und dann ein dist-upgrade hinterher ist eigentlich redundant
Es reicht der dist-upgrade
 
Isolak schrieb:
Der Schritt einmal ein upgrade und dann ein dist-upgrade hinterher ist eigentlich redundant
Es reicht der dist-upgrade
Soweit ich verstanden hab, ist dist-upgrade für den Fall interessant, wenn man das System auf eine ganz neue Release-Version hochzieht. Also sozusagen tatsächlich ein Upgrade macht und nicht nur ein Update für Sicherheitsaktualisierungen und so. Ob man ein Release-Upgrade aber tatsächlich wirklich automatisiert via Skript machen will, ist die andere Frage.
Aber ich vermute mal im vorliegenden Fall geht es um Updates. Und dann kann man ein
sudo apt-get dist-upgrade -y
tatsächlich weglassen.
 
andy_m4 schrieb:
Aber ich vermute mal im vorliegenden Fall geht es um Updates. Und dann kann man ein
sudo apt-get dist-upgrade -y
tatsächlich weglassen.

Ja bloß dist-upgrade kümmert sich auch um eventuelle Abhängigkeiten siehe https://wiki.ubuntuusers.de/apt/apt-get/#apt-get-upgrade
Das ist jetzt bei Ubuntu tatsächlich kein Problem da reicht das normale upgrade es gibt aber edge cases da ist ein dist-upgrade besser
 
andy_m4 schrieb:
Soweit ich verstanden hab, ist dist-upgrade für den Fall interessant, wenn man das System auf eine ganz neue Release-Version hochzieht. Also sozusagen tatsächlich ein Upgrade macht und nicht nur ein Update für Sicherheitsaktualisierungen und so.
Das ist nur teilweise richtig. Bei upgrade werden alle installierten Pakete aktualisiert. Wenn aber eine neue Version eines Pakets die Installation eines neuen, nicht installieren Pakets, erfordert, wird diese neue Version des Pakets nicht installiert, sondern es bleibt auf dem alten Stand.

Bei dist-upgrade werden auch neue Pakete als Abhängigkeiten installiert. z.B.: Paket x hat die Version 1.9. Um es auf Version 2.0 zu aktualisieren benötigt es aber noch Paket a, das vorher nicht notwendig war. Also installiert dist-upgrade Paket a mit.
Wenn man also im Terminal apt upgrade macht, sagt es z.B. "23 Pakete werden aktualisiert, eines wird nicht aktualisiert." Macht man dann dist-upgrade statt des einfachen upgrade, sagt das Terminal: "24 Pakete werden aktualisiert, eines neu installiert."
Es hat also nicht zwingend etwas mit dem Distro-Upgrade zu tun. Es wird aber beim Distro-Upgrade genau deshalb genutzt, weil es ggf. neue Pakete als Abhängigkeiten von installierten Paketen, die auf eine Version gehoben werden, installiert.

Noch als Tip: apt-get braucht man nicht (mehr). Es reicht einfach nur apt. Also sudo apt upgrade oder apt dist-upgrade.
Und ein "apt dist-upgrade" würde reichen. Sonst habe ich zum Skript nix beizutragen, weil keine Ahnung. :rolleyes: :D
Ergänzung ()

Isolak schrieb:
es gibt aber edge cases da ist ein dist-upgrade besser
Zum Beispiel, wenn man mit dem proprietären Nvidia-Treiber unterwegs ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: andy_m4
Danke für die Inspiration! Hatte sowas auch immer mal im Hinterkopf.
Das Script wurde dann unter /usr/bin/ abgelegt, ausführbar gemacht und für den vereinfachten Aufruf als Alias in der Datei .bash_aliases im Homeverzeichnis integriert:
alias updatescript='cd /usr/bin/ && sudo ./updatescript.sh'
So ist das im Terminal mit updatescript aufrufbar.
 
@Qubit warum so kompliziert?
Man könnte auch einfach folgendes in .bashrc packen:


Bash:
alias updatescript=""sudo apt update && sudo apt dist-upgrade
Oder z.B als Funktion
Bash:
function updatescript()
{
  sudo apt update
  sudo apt dist-upgrade -y
}

Ausführen kannst du das dann im terminal einfach mit updatescript

sudo ./usr/bin/updatescript sollte auch funktionieren ohne das cd
 
@shinXdxd
Ja gut, kann man halten wie man möchte. Hatte mich an den Hinweis in .bashrc orientiert:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

Der Befehl sudo ./usr/bin/updatescript.sh funktioniert zwar in der Konsole, jedoch nicht als Aliasaufruf in .bash_aliases.
 
Nachtrag: Sollte man Flatpak Apps installiert (und ggf. auch in Gnome-Software eingebunden) haben, so werden diese durch ein apt update nicht mitaktualisiert. Habe daher noch flatpak update hinzugefügt.
 
Zurück
Oben