guennid hat geschrieben: 14.11.2019 09:41:53
Warum ich - gäbe es das Paket namens linux-image - nur ein einziges installieren könnte ist mir noch unklar.
Nochmal als Denkanstoß:
Wenn du etwas installierst, machst du das normalerweise etwa so:
Dabei interessiert dich
meist nicht, welche Version des Pakets/Programms installiert wird, auch wenn man sie ausdrücklich mit angeben könnte. Es gibt für viele Pakete ein Debian-stable-Release über sowieso nur eine Version; die Backports hier mal ignoriert. Der Paketname ist hier „bash“.
Wenn ich jetzt aber ein
ausführe, wird zwangsweise die neueste im Repository verfügbare Version von
bash installiert; apt-pinning etc. hier auch mal ignoriert. Das Update von z.B. Bash 3.0 auf Bash 4.0 könnte jetzt Änderungen mitbringen, mit denen z.B. manche Boot-Skripte nicht mehr funktionieren. Die Paketversion wäre hier 3.0 bzw. 4.0.
Um zu verhindern, dass mein System nach einem Update kaputt ist, muss ich also die alte Version sicherheitshalber behalten. Das geht aber nicht, wenn das Paket nur
bash heißt, das kann nur
in genau einer Version installiert sein. Man hängt stattdessen die Version an den
Namen an, z.B.
bash-3.0 und
bash-4.0. Die kann ich jetzt nebeneinander installieren:
Damit ich aber trotzdem automatisch bei einem
apt full-upgrade die neueste Version bekomme, gibt es ein Metapaket. Das Metapaket hängt dann nur von einem anderen Paket ab und ist selbst
quasi leer. Es könnte z.B. ein Paket
bash-meta geben, das von
bash-3.0 abhängt.
Wenn
bash-meta bei einem
apt full-upgrade jetzt neuerdings von
bash-4.0 abhängt, bekomme ich letzteres automatisch installiert – behalte aber
bash-3.0. Die Paketversion von
bash-meta wäre hier vor dem Update 3.0 und nach dem Update 4.0. (Der Behalten-Part braucht evtl. entsprechende apt-Konfiguration, das hier auch mal ignoriert. Für den Kernel hat apt diese Konfiguration von Haus aus mit dabei.)
Wenn du oben die Bash durch den Kernel ersetzt, hast du z.B. ein Problem, wenn nach einem Update ein Treiber nicht mehr so funktioniert wie vorher. Man möchte deshalb bei einem Update die alte Version des Kernels immer erstmal behalten.
Die
Dateinamen der Pakete oben wären:
Code: Alles auswählen
# Ohne Metapaket:
bash_3.0_amd64.deb
bash_4.0_amd64.deb
# Mit Metapaket:
bash-meta_3.0_amd64.deb
bash-meta_4.0_amd64.deb
bash-3.0_3.0_amd64.deb
bash-4.0_4.0_amd64.deb
Ich war ja versucht, hier systemd statt bash als Beispiel zu nehmen
guennid hat geschrieben: 13.11.2019 20:26:52
Das die Architektur in den Namen oben auch nochmal redundant auftaucht, ist vermutlich Multiarch und anderem geschuldet.
Ich halt mich mal ans „vermutlich“. Als „notwendig“ einzusehen vermag ich's nicht, denn dass
Ein Paket sich im Dateinamen im Repository halt nur mit Name, Version & Architektur eindeutig benennen (lässt)
, ist ja in meinem letzten Beispiel (ohne Redundanz) berücksichtigt.
Da noch als Ergänzung: Ja, auch das amd64 in
linux-image-amd64 ist notwendig, sonst gäbe es Probleme bei Multiarch.
Ups, der Text wurde länger als geplant