• Paketlisten mit Status und erweitertem Status

    From Christoph Pleger@21:1/5 to All on Tue Jul 23 13:40:01 2024
    Hallo,

    ich möchte viele Rechner mit weitgehend gleicher Paketliste installieren. Dafür kann ich von einem Rechner, auf dem ich vorher von mir gewünschte Standardpakete installiert habe, mit Hilfe von

    dpkg --get-selections > packages.lst

    eine Liste der installierten Pakete erstellen, die ich dann auf anderen Rechnern mit

    cat packages.lst | dpkg --set-selections

    und

    apt-get dselect-upgrade

    realisieren kann.

    Zusätzlich soll aber der erweiterte Status der Pakete übernommen werden, also ob ein Paket automatisch als Abhängigkeit von einem anderen installiert wurde, oder manuell. Daher habe ich in der packages.lst, die normalerweise pro Zeile die Form

    <package> <install_status>

    hat, noch eine dritte Spalte mit dem erweiterten Status hinzugefügt, so dass eine Zeile folgende Form hat:

    <package> <install_status> <extended_status>

    Im konkreten Fall sieht das zum Beispiel so aus:

    virt-viewer install auto


    Das funktioniert bei der Installation eines Rechners so weit auch ganz wunderbar, erst werden die Pakete werden wie gewünscht installiert und dann die erweiterten Status wie gewünscht gesetzt - umgekehrt ist es nicht möglich, weil apt-mark das Setzen
    des erweiterten Status eines nicht installierten Pakets nicht erlaubt.

    Nur besteht die packages.lst, die auf zu installierenden Rechnern angewendet wird, manchmal gar nicht nur aus einer Datei, die auf einem anderen Rechner erstellt wurde, sondern aus mehreren, hintereinander gehängten Dateien, die entweder automatisch mit
    dpkg --set-selections oder manuell angelegt wurden. Dabei kann es z.B. vorkommen, dass in der aus mehreren einzelnen packages.lst entstandenen Gesamt-packages.lst steht:

    .
    .
    .
    virt-manager install manual
    .
    .
    .
    virt-viewer install auto
    .
    .
    .
    virt-manager purge

    (die dritte Spalte muss nicht vorhanden sein).

    Das führt dazu, dass virt-viewer immer wieder installiert und dann wieder deinstalliert wird. Besser wäre natürlich, wenn Pakete mit "auto" in der dritten Spalte und nicht benötigter Abhängigkeit durch ein anderes Paket gar nicht erst installiert wü
    rden - hat jemand eine Idee, wie sich das bewerkstelligen lässt?

    Gruß
    Christoph

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEHeqYcooFjlnR4zwFcOXIip7d3fEFAmaflWAACgkQcOXIip7d 3fE2uw/+PtifVWwCrYGZeaJWOHZ9FOf6jPjuNzLd2D/abw64YVFATOQmvEyZyVk3 AFWMSnHl8+1+5XQHnRn5g4fm7DqDmUY9x1pGctgc2YBNBRH9UGHMLG74onlE/ba6 Jmo8OMJkA+o/5hCWzUE9PbK84D9yhPMl8Z0zXEScX7w4rM6L2JD9fvvemfd4famT jdWNuTWTHsI5wOXluD1B/YsOYokzdSt8FNGDeQzGXY3PjHR2EQx9+0iqS4gEzDXm SuALshVAwmagiOR4r29G7ZtEAGPPGYKoIanjazPGJtpImSI2GU965xMnGZ9Gf/sz Ao+56x0GA1BbnE7UZyKQY0/I8qGZDgk7D3HzV2LK7csDn8FLNnQCpgA88CqzNV2d qe+ixbgZIkPLRUlFvyV4E1810WAGBFwB3uFWnK2iH9XO3nq10XULNlfI0nrm2gnQ eLPMcs5PN4fDbjsSbrX/VnTbEWUQJe2r13fswba0YoCDQunBKC2fRj6nX2LyBL+3 d500N+7SkU6oRWY7U1BarO9yfuCWIJ81seeAcLuTugg0u7YMvh3cLrpUIc6OT7GP zejGKmzd1xUzu67Gshr9O+DbuiB9uK6CxN++8ChohvCW5NKOOCy3cXhroOCCyXQi zCEc3WfOXBtuEuR2O468jvNkdDEHwqTcC6m0/gEHwkp9uUcvtuA=
    =zx2R
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar Hellwig@21:1/5 to All on Wed Jul 24 21:40:03 2024
    Am 23.07.2024 um 13:34 schrieb Christoph Pleger:
    Hallo,

    ich möchte viele Rechner mit weitgehend gleicher Paketliste installieren. Dafür kann ich von einem Rechner, auf dem ich vorher von mir gewünschte Standardpakete installiert habe, mit Hilfe von

    dpkg --get-selections > packages.lst

    eine Liste der installierten Pakete erstellen, die ich dann auf anderen Rechnern mit

    cat packages.lst | dpkg --set-selections

    und

    apt-get dselect-upgrade

    realisieren kann.

    Zusätzlich soll aber der erweiterte Status der Pakete übernommen werden, also ob ein Paket automatisch als Abhängigkeit von einem anderen installiert wurde, oder manuell. Daher habe ich in der packages.lst, die normalerweise pro Zeile die Form

    <package> <install_status>

    hat, noch eine dritte Spalte mit dem erweiterten Status hinzugefügt, so dass eine Zeile folgende Form hat:

    <package> <install_status> <extended_status>

    Im konkreten Fall sieht das zum Beispiel so aus:

    virt-viewer install auto


    Das funktioniert bei der Installation eines Rechners so weit auch ganz wunderbar, erst werden die Pakete werden wie gewünscht installiert und dann die erweiterten Status wie gewünscht gesetzt - umgekehrt ist es nicht möglich, weil apt-mark das
    Setzen des erweiterten Status eines nicht installierten Pakets nicht erlaubt.

    Nur besteht die packages.lst, die auf zu installierenden Rechnern angewendet wird, manchmal gar nicht nur aus einer Datei, die auf einem anderen Rechner erstellt wurde, sondern aus mehreren, hintereinander gehängten Dateien, die entweder automatisch
    mit dpkg --set-selections oder manuell angelegt wurden. Dabei kann es z.B. vorkommen, dass in der aus mehreren einzelnen packages.lst entstandenen Gesamt-packages.lst steht:


    Hallo!

    Nichts für ungut, aber das Vorgehen hört sich für mich etwas umständlich an.
    Ich weiß, das beantwortet die konkrete Frage nicht, aber: ich würde das einfach mit ansible machen.
    Pakete mit auto-Status braucht man nicht zu berücksichtigen, da sie als Abhängigkeiten ja sowieso mit gezogen werden.


    Grüße,
    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dietrich Clauss@21:1/5 to Christoph Pleger on Thu Jul 25 12:30:02 2024
    Christoph Pleger wrote:
    ich möchte viele Rechner mit weitgehend gleicher Paketliste
    installieren. Dafür kann ich von einem Rechner, auf dem ich vorher von
    mir gewünschte Standardpakete installiert habe, mit Hilfe von

    dpkg --get-selections > packages.lst

    eine Liste der installierten Pakete erstellen, die ich dann auf
    anderen Rechnern mit

    cat packages.lst | dpkg --set-selections

    und

    apt-get dselect-upgrade

    realisieren kann.

    Das mache ich mit

    #v+
    apt-mark showmanual >liste
    #v-

    auf der Quelle und

    #v+
    apt install $(cat liste)
    #v-

    auf dem Ziel.

    Automatisch installierte Pakete wurden wie der Name sagt automatisch installiert und werden das auch wieder, um die muß man sich bei so einer Aktion gar nicht kümmern.

    Es kann passieren, daß apt aus welchem Grund auch immer auf dem Ziel die Abhängigkeiten anders auflöst und andere Pakete automatisch installiert,
    die aber die Abh. genauso erfüllen. Wenn ich ein bestimmtes autom. installiertes Paket definitiv haben möchte, muß ich es zuvor auf der
    Quelle mit

    #v+
    apt-mark manual <paket>
    #v-

    als manuell markieren. Das ist in dem Fall sowieso eine gute Idee,
    damit man bei einem möglichen Upgrade des Quellsystems keine bösen Überraschungen erlebt.

    Gruß,
    - Dietrich

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christoph Pleger@21:1/5 to All on Fri Jul 26 11:40:02 2024
    Hallo,

    Das mache ich mit

    #v+
    apt-mark showmanual >liste
    #v-

    auf der Quelle und

    #v+
    apt install $(cat liste)
    #v-

    auf dem Ziel.

    Mit wievielen Paketen funktioniert das? Nur die explizit gewünschten
    Pakete in die Liste aufzunehmen, habe ich schon mal versucht, stellte
    aber dann fest, dass bei einer sehr langen Gesamtzahl an Paketen (also
    auch die automatisch installierten), das sind bei mir ca. 6000, apt
    Probleme hat, alle Abhängigkeiten so aufzulösen, dass alle explizit gewünschten gleichzeitig installiert sein können, deswegen habe ich
    dann doch wieder alle Pakete in die Liste aufgenommen. Ist allerdings
    schon eine Weile her.

    Gruß
    Christoph

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEHeqYcooFjlnR4zwFcOXIip7d3fEFAmajbpcACgkQcOXIip7d 3fGLUQ//TOXo6rU7cjMJEPT0cM556BBNDCgORC8M9Av3HMyf2BkkZ3sX38qQe1K/ aXCOhym4wx5IkAxQvvCAJo4cuMnDuc5e7HVewu/G0oXccWUnCVtNnf10EV/FUW6f goTVOv4zmNKBaUnDznvrR9iYHDXFMprb/L4S5F+swj1vhlXKjqGZQNOi79WpDAoZ 3lYwSpDj2kR/5Vw1LZIIwlOv/cywNZB7VIhzTNiI9x4h+kwKKXbEHNhsVGagBGgw aShxBTDXdmRRkpZIAUXVodJS5JQRcoW+BiDxRCPeTdImut4rWR9izcsWOSqRxvRp hdi2k6smHUpSOzF0JiOn5pO9Kcxp3ZAIUgimBhzqbVh+8mq2ut7yyJRubmiirhaH IHWZ2fvVidUxGCWZeoz0bd6p0oAOL7X6oWm/bieKs8Ea2argmx9fkydEBZrmq5Lu Ct9YDlk9GQJwsdJvX6suvBjNFlgJf2cMydRsEcNHw07TDFB8jU7EyLiSciXWEjx0 e1OFPJvBUhayGBczRyzRz/cvFETpCI1TMC5wtnPod+ICVIHOKx01sM3ToV5qFWdj tApXavpV/sLiE/dApmBAPPWRsvy7PxPVST/8X3MEm7H+FYGBBfXZOZy05iAc9Yth PpdfvAEtsC8P2KWMmW6E202TIXjxQ4bhniUrANVGaTsQm3zdrTc=
    =qkva
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christoph Pleger@21:1/5 to All on Fri Jul 26 14:20:01 2024
    Hallo,


    Das mache ich mit

    #v+
    apt-mark showmanual >liste
    #v-

    auf der Quelle und

    #v+
    apt install $(cat liste)
    #v-

    auf dem Ziel.

    Ich habe es mit einem einzigen Paket ausprobiert und festgestellt, dass
    es leider das eigentliche Problem nicht löst, das ja nicht darin
    bestand, wie überhaupt eine Liste an Paketen übergegen werden kann,
    sondern dass die Paketliste aus mehreren Dateien besteht, wo in der
    ersten Liste steht, dass ein Paket installiert werden soll, in einer
    weiter hinten angehängten Datei aber steht, dass das Paket nicht
    installiert werden soll. Das tritt mit apt immer noch auf, wenn auch
    etwas anders:

    root@merkur:~# apt install virt-viewer virt-viewer-
    Paketlisten werden gelesen… Fertig
    Abhängigkeitsbaum wird aufgebaut… Fertig
    Statusinformationen werden eingelesen… Fertig
    Paket »virt-viewer« ist nicht installiert, wird also auch nicht
    entfernt.
    Die folgenden zusätzlichen Pakete werden installiert:
    libvirt-glib-1.0-0 libvirt-glib-1.0-data

    Da bei "apt install" ein Minuszeichen hinter dem Paketnamen bedeutet,
    dass ein Paket deinstalliert werden soll, hatte ich gehofft, dass virt-
    viewer gar nicht erst installiert wird ...

    Gruß
    Christoph

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEHeqYcooFjlnR4zwFcOXIip7d3fEFAmajkmMACgkQcOXIip7d 3fGfJw/+PV2HuIXAKaMNn+qnyEcu9RZSXs3P6pNe20gnBUJv4dEnqndxrPtJCAMq zecKJ763KsVOzMn5mPzDNQR+Xl2mY+gkFL30YUOdsIVVrUFdXwRywIJHOYbV02yZ mbOaRlAn1I0uW6mbRiZ4FPkYYdakdLsH2fvyoovPnAAIVxHcPt9pgz/wS1Q0w1ZV 9p4U4geG5fbmN6y3Q+rKOb0v5dNKdHVYP/fgK7hiJW3Sa2eGMLkf076ONheaD3XD qRUbM6nGU8NwfI+JNMmiRDhVo8DWfHDCp6TP5zCSJszvU/Tt4TpuavVEyGiIGLGf EYAacHgd5cmY5ef4syfhKdH5SeiW7q4NokKSctiS2dOr8SXaO9X6A07Om2u78Xq9 SZRe95kKMPOE/gSbcHBWvjnWM+sbR0SUOuO17ntfNbhjqSjQpyrcmT+WRaFFckJF FgrN0suLBTlaakO6/LPu9Nz1BC2Sr9pLxonM2Pyb0lOffobV0pmBFCFRWBcHMuzV YyD1LWxSRqDxsf/40gszFd3s2q1C7veQfxB/BMyiZsF77F6mOz7kr2LGfgiEDfs5 SbkJ79UvIjYYGE9G8jO29kqJGSnnWxULMfLIdjVjmatel+RDLl99OEwPzEUfoPSk CZjlZWf+nAEN2NhHS9y7aGTyWALHdO7on8d/aY9tsIiNFIjRcws=
    =uaIw
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jens =?iso-8859-1?Q?Sch=FC=DFler?=@21:1/5 to Christoph.Pleger@cs.tu-dortmund.de on Fri Jul 26 17:30:01 2024
    * Christoph Pleger <Christoph.Pleger@cs.tu-dortmund.de> wrote:

    root@merkur:~# apt install virt-viewer virt-viewer-
    Paketlisten werden gelesen… Fertig
    Abhängigkeitsbaum wird aufgebaut… Fertig
    Statusinformationen werden eingelesen… Fertig

    Paket »virt-viewer« ist nicht installiert, wird also auch nicht
    entfernt.
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Die folgenden zusätzlichen Pakete werden installiert:
    libvirt-glib-1.0-0 libvirt-glib-1.0-data

    Da bei "apt install" ein Minuszeichen hinter dem Paketnamen bedeutet,
    dass ein Paket deinstalliert werden soll, hatte ich gehofft, dass virt- viewer gar nicht erst installiert wird ...

    Es wird doch auch nicht installiert. Ich verstehe den Sinn hinter deinem
    Befehl auch nicht. Du sagst apt es soll virt-viewer installieren und gleichzeitig deinstallieren?
    Und zur Klarheit würde ich sowieso immer purge oder remove verwenden und
    keine Minuszeichen. Und LC_MESSAGES=C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dietrich Clauss@21:1/5 to Christoph Pleger on Mon Jul 29 00:30:01 2024
    Christoph Pleger wrote:
    Dietrich Clauss wrote:
    Das mache ich mit

    #v+
    apt-mark showmanual >liste
    #v-

    auf der Quelle und

    #v+
    apt install $(cat liste)
    #v-

    auf dem Ziel.

    Ich habe es mit einem einzigen Paket ausprobiert und festgestellt, dass
    es leider das eigentliche Problem nicht löst, das ja nicht darin
    bestand, wie überhaupt eine Liste an Paketen übergegen werden kann,
    sondern dass die Paketliste aus mehreren Dateien besteht, wo in der
    ersten Liste steht, dass ein Paket installiert werden soll, in einer
    weiter hinten angehängten Datei aber steht, dass das Paket nicht
    installiert werden soll. Das tritt mit apt immer noch auf, wenn auch
    etwas anders:

    OK, den Teil der Frage hatte ich nicht richtig gelesen.

    Du hast also nicht nur mehrere Paketlisten, sondern mehrere Listen von
    Befehlen zum Installieren und Löschen von Paketen, die sich gegenseitig widersprechen, und die nach der Maßgabe

    - order matters
    - last writer wins

    abgearbeitet werden sollen.

    Nein, das kann der dep-resolver von apt nicht, das ist auch nicht dessen Aufgabe. Mir fällt dazu auch nichts besseres ein, als die Listen
    einfach nacheinander abzuarbeiten.

    Alles natürlich nur für die manuell zu installierenden Pakete.
    Automatisch installierte Pakete zunächst manuell zu installieren und
    dann als automatisch zu markieren ergibt irgendwie keinen Sinn.
    Entweder ich will das Paket explizit haben, dann wird es manuell
    installiert und bleibt auch so. Oder es ist mir egal, dann wird es eben
    nicht manuell installiert.

    root@merkur:~# apt install virt-viewer virt-viewer-
    Paketlisten werden gelesen… Fertig
    Abhängigkeitsbaum wird aufgebaut… Fertig
    Statusinformationen werden eingelesen… Fertig
    Paket »virt-viewer« ist nicht installiert, wird also auch nicht
    entfernt.
    Die folgenden zusätzlichen Pakete werden installiert:
    libvirt-glib-1.0-0 libvirt-glib-1.0-data

    Da bei "apt install" ein Minuszeichen hinter dem Paketnamen bedeutet,
    dass ein Paket deinstalliert werden soll, hatte ich gehofft, dass virt- viewer gar nicht erst installiert wird ...

    Hier nun hätte ich erwartet, daß apt mit einem Fehler abbricht, weil es
    den Wunsch, ein Paket zu installieren und es gleichzeitig nicht zu installieren, nicht erfüllen kann. Offenbar macht es das nicht, sondern betrachtet die Löschungen und Installierungen einfach als getrennte
    Schritte und kriegt gar nicht mit, daß eigentlich ein Widerspruch
    vorliegt. Ich wäre mir aber nicht sicher, ob das überhaupt definiertes Verhalten ist. Auf jeden Fall ist es so nicht gedacht.

    Gruß,
    - Dietrich

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)