[Gelöst] Paketliste für Neuinstallation erstellen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
thunder11
Beiträge: 1348
Registriert: 19.04.2023 09:08:30

[Gelöst] Paketliste für Neuinstallation erstellen

Beitrag von thunder11 » 28.06.2023 12:37:06

ich möchte mir gerne eine Paketliste erstellen, mit der ich eine Neuinstallation mit
identischen Paketen machen kann.

Die Ausgabe dpkg --get-selections hat folgendes Format:

Code: Alles auswählen

2to3                                            install
aacplusenc                                      install
nun habe ich aber diverse Pakete installiert, die nicht aus den Repos kommen bzw.
z.T. alter müll sind

z.B:

Code: Alles auswählen

apt-show-versions|grep 'No available version in archive'

flacon:amd64 5.5.1 installed: No available version in archive
libgsoap-2.8.117:amd64 2.8.117-2+b1 installed: No available version in archive
libicu67:amd64 67.1-7 installed: No available version in archive
libisc-export1105:amd64 1:9.11.19+dfsg-2.1+b1 installed: No available version in archive
libjson-c4:amd64 0.13.1+dfsg-9 installed: No available version in archive
libobasis7.5-base:amd64 7.5.1.2-2 installed: No available version in archive
libobasis7.5-calc:amd64 7.5.1.2-2 installed: No available version in archive
Anzahl:

Code: Alles auswählen

apt-show-versions|grep -c 'No available version in archive'
78
Gekürzt auf die Paketnamen, ergibt das dann sowas:

Code: Alles auswählen

apt-show-versions|grep 'No available version in archive'|awk '{FS=":"} {print $1}'
flacon:amd64
libgsoap-2.8.117
libicu67
libisc-export1105
libjson-c4
libobasis7.5-base
libobasis7.5-calc
Wie kann ich die Deitei aus dpkg --get-selections um die "No available's" reduzieren ?

Da steh ich auf dem Schlauch. Bitte um Hilfe
Zuletzt geändert von thunder11 am 29.06.2023 17:01:32, insgesamt 1-mal geändert.

VS2FreeUsers
Beiträge: 58
Registriert: 26.06.2023 09:09:40
Lizenz eigener Beiträge: GNU General Public License

Re: Paketliste für Neuinstallation erstellen

Beitrag von VS2FreeUsers » 28.06.2023 12:44:17

Hi,

- alle pakete in eine Textfile schreiben
- alle pakete ohne Archiv in eine schleife durchgehen und mit sed aus der textfile entfernen

so würde ich das machen.
vs2-free-users community

#vs2-free-users #VS2FreeUsers

Benutzeravatar
thunder11
Beiträge: 1348
Registriert: 19.04.2023 09:08:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von thunder11 » 28.06.2023 12:57:27

VS2FreeUsers hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 12:44:17
- alle pakete ohne Archiv in eine schleife durchgehen und mit sed aus der textfile entfernen
Danke für den Tipp. ABER :
Wäre nett, wenn du mir das als code geben könntest. Wenn ich sed auch nur höre, oder hier im Forum
Codeschnipsel mit sed lese bin ich dem Infarkt nahe.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Paketliste für Neuinstallation erstellen

Beitrag von JTH » 28.06.2023 13:12:44

Nur als Einwurf, für die eigentliche Frage fehlt mir gerade die Zeit ;)

thunder11 hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 12:37:06
ich möchte mir gerne eine Paketliste erstellen, mit der ich eine Neuinstallation mit
identischen Paketen machen kann.
Es ist grundsätzlich kein Problem, wenn in dieser Liste, die du dann wohl an dpkg --set-selections übergeben willst, Pakete drinstehen, die auf dem Zielsystem nicht bekannt sind. dpkg --set-selections ignoriert die unbekannten Paketnamen dann einfach.

Ich empfehle dir, zusätzlich auch die Ausgabe von apt-mark showauto in eine Datei zu sichern und auf dem Zielsystem mit

Code: Alles auswählen

xargs -a SHOWAUTO_DATEI | apt-mark auto
anzuwenden. Sonst hast du in Zukunft noch wesentlich mehr Müll ;)

thunder11 hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 12:37:06
z.T. alter müll sind
Hast du mal apt autopurge laufen lassen?
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
hikaru
Moderator
Beiträge: 13594
Registriert: 09.04.2008 12:48:59

Re: Paketliste für Neuinstallation erstellen

Beitrag von hikaru » 28.06.2023 13:17:18

Ich würde statt dpkg --get-selections eher apt-mark showmanual verwenden, denn die ganzen automatisch installierten Libs, die als Abhängigkeiten installiert wurden, interessieren dich ja eigentlich ncht. Wenn sie benötigt werden, kommen sie ohnehin wieder, wenn nicht, wird dein System nicht unnötig aufgebläht.

Als Einzeiler könnte das dann so aussehen:

Code: Alles auswählen

apt-mark showmanual | grep -v "$(apt-show-versions | grep 'No available version in archive' | egrep -o '^[^: ]+')"
(P.S.: Ich stehe auf Kriegsfuß mit awk. Möglicherweise wäre eine Lösung damit besser/eleganter/schneller/etc.)

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Paketliste für Neuinstallation erstellen

Beitrag von JTH » 28.06.2023 13:23:57

hikaru hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 13:17:18
Ich würde statt dpkg --get-selections eher apt-mark showmanual verwenden, denn die ganzen automatisch installierten Libs, die als Abhängigkeiten installiert wurden, interessieren dich ja eigentlich ncht. Wenn sie benötigt werden, kommen sie ohnehin wieder, wenn nicht, wird dein System nicht unnötig aufgebläht.
Auf dem Wege vergisst man allerdings Pakete, die zwar als automatisch installiert markiert sind, die man aber trotzdem manuell installiert und dann als erstes markiert hat. Zum Beispiel Empfehlungen oder Vorschläge, die man für extra Funktionalität nachinstalliert hat, aber nur wegen dieser Empfehlung durch ein drittes Pakete behalten möchte. (Ich hoffe, das ist verständlich.)

hikaru hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 13:17:18
Ich stehe auf Kriegsfuß mit awk.
8O
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
hikaru
Moderator
Beiträge: 13594
Registriert: 09.04.2008 12:48:59

Re: Paketliste für Neuinstallation erstellen

Beitrag von hikaru » 28.06.2023 14:14:34

JTH hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 13:23:57
Auf dem Wege vergisst man allerdings Pakete, die zwar als automatisch installiert markiert sind, die man aber trotzdem manuell installiert und dann als erstes markiert hat.
Ja, das stimmt natürlich. Ich verstehe auch technisch den Sinn dahinter, manuell installierte Pakete als automatisch installiert zu markieren, wenn sie nur als Enhancement anderer Pakete dienen.
Allerdings empfinde ich dieses Vorgehen als eine Zweckentfremdung der auto/manual-Markierung, weshalb ich sie so nicht nutze. Daher ist mir das entgangen.

Eigentlich müsste es eine dritte Markierung geben, die bei der Installation wie manuell installierte Pakete eine Markierung erhalten, sich bei der Deinstallation anderer Pakete aber wie automatisch installierte Pakete verhalten.
Dann könnte man sauber zwischen manuell installierten "Programmen", deren bewusst zugewählten "Features" und dem ganzen "Gedöns unter der Haube" unterscheiden. Momentan muss man sich immer entscheiden, was "Features" für einen selbst darstellen. Für mich sind sie Programm, für dich Gedöns.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von MSfree » 28.06.2023 14:31:10

hikaru hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 14:14:34
Eigentlich müsste es eine dritte Markierung geben
Eigentlich sogar 4. Denn es gibt manuell installierte, via Recommends installierte, via Suggests installierte und über Abhängigkeit installierte. Zur Zeit werden Recommends, Suggests und Dependencies als automatic markiert, wenn das System so eingerichtet ist, Suggests und Dependencies mitzuinstallieren.

Grundsätzlich ist es aber so, daß, wenn man die Paketliste mit apt-mark showmanual erstellt, man sich auch merken muß, ob man Recommends und Suggests eingeschaltet hat. Beim Aufbau des neuen Systems muß man nur Recommends und Suggests gleich einstellen wie beim Quellsystem, dann paßt auch die Paketliste, die man mit apt-mark... erstellt hat.

In der Voreinstellung sind Recommends und Suggests sowieso eingeschaltet. Um diese auszuschalten, wird man die Einträge

Code: Alles auswählen

APT::Install-Recommends "0";
APT::Install-Suggests "0";
in die Datei /etc/apt/apt.conf.d/70debconf eintragen, um das nicht ständig auf der Kommandozeile den Programmen apt, apt-get, aptitude ... mitgeben zu müssen.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Paketliste für Neuinstallation erstellen

Beitrag von JTH » 28.06.2023 14:32:42

hikaru hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 14:14:34
Ich verstehe auch technisch den Sinn dahinter, manuell installierte Pakete als automatisch installiert zu markieren, wenn sie nur als Enhancement anderer Pakete dienen.
Ich händel das nicht in jedem Fall so. Wenn diese empfohlene Abhängigkeit ein eigenständiges Programm ist, dass man vllt auch einmal direkt verwenden könnte, spare ich mir eher die Automatisch-installiert-Markierung. Aber wenn die empfohlene Abhängigkeit „nur“ eine Bibliothek ist (durch die dann z.B. ein weiterer Codec, ein weiteres Dateiformat etc. unterstützt wird), von der kein anderes Programm (-paket) etwas hat – dann seh ich keinen Sinn darin, diese Bibliothek nicht als automatisch installiert zu markieren. Im Gegenteil, ohne diese Markierung wird diese Bibliothek womöglich irgendwann zu unbenutztem Müll.

hikaru hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 14:14:34
Eigentlich müsste es eine dritte Markierung geben, die bei der Installation wie manuell installierte Pakete eine Markierung erhalten, sich bei der Deinstallation anderer Pakete aber wie automatisch installierte Pakete verhalten.
Ich seh und versteh nicht ganz, wo sich das beim (De-) Installieren anders verhalten würde, als die vorhandene Automatisch-installiert-Markierung. Höchstens bei der Auflistung installierter Pakete könnte man das als zusätzliches Kriterium benutzen.

hikaru hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 14:14:34
Für mich sind sie Programm, für dich Gedöns.
Jaa, bei

Code: Alles auswählen

apt-mark gedöns
apt-mark showgedöns
apt install --no-install-gedöns
apt autoremovegedöns
geh ich mit :mrgreen:
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
thunder11
Beiträge: 1348
Registriert: 19.04.2023 09:08:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von thunder11 » 28.06.2023 14:51:12

Erst mal danke für die Tipps.
Ich hatte das vor Ewigkeiten mal in einer VM probiert.
Minimalinstallation ----> und dann die mit viel Mühe korrigierte Liste von dpkg --get-selection eingespielt.
Zum schluss hat das sogar funktioniert, und die VM lief rund.
Das Problem ist dann halt, wenn apt das Paket nicht findet, bleibt apt stehen.
@hikaru
dein Ein-Zeiler ergibt:

Code: Alles auswählen

~$ apt-mark showmanual | grep -v "$(apt-show-versions | grep 'No available version in archive' | egrep -o '^[^: ]+')"|wc  -l
594

Manuell installiert sind aber 661
insgesamt (dpkg -l) 3300 Pakete

Das Problem was ich da zuerst sehe: es sind z.B. nur xfce4 - Plugins in der Liste, die alle nicht von Debianxfce4 abhängen.
Da müsste ich dann einen ganzen Haufen nachinstallieren bzw. xfce4 vorinstallieren.

der Befehl von hikaru ersetzt mit dpkg -l
Ergibt

Code: Alles auswählen

dpkg -l|grep -v "$(apt-show-versions | grep 'No available version in archive' | egrep -o '^[^: ]+')"|wc -l
3228
Das wären alle Pakete, abzüglich der "No available's". Das wäre ja (aufgeblasen) das was ich ursprünglich wollte.
Müsste dann nur noch mit mit awk das zusammenstutzen:

Code: Alles auswählen

dpkg -l | grep -v "$(apt-show-versions | grep 'No available version in archive' | egrep -o '^[^: ]+')"|awk '{print $2}'|awk '{FS=":"} {print $1}'
Allerdings erkläre mir doch bitte bitte noch das egrep -o '^[^: ]+'.
Das ist für mich einfach nur Bahnhof. Aber <CopyPaste Funktioniert ja :facepalm: :mrgreen:

Und nun noch einen Frage, an der ich nicht weiter weiss: Mein Befehl ergibt

Code: Alles auswählen

dpkg -l | grep -v "$(apt-show-versions | grep 'No available version in archive' | egrep -o '^[^: ]+')"|awk '{print $2}'|awk '{FS=":"} {print $1}'
Löschen/Halten
Status=Nicht/Installiert/Config/U=Entpackt/halb
installiert/Trigger
Fehler?=(kein)/R=Neuinstallation
Name

2to3
aacplusenc
....
....
Hier müssten die ersten Zeilen bis zum "2to3" bei der Ausgabe irgendwie gelöscht werden. ginge natürlich auch
zu Fuß in der entsprechenden Datei. Aber wenn schon denn schon :mrgreen:

Benutzeravatar
thunder11
Beiträge: 1348
Registriert: 19.04.2023 09:08:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von thunder11 » 28.06.2023 15:02:52

JTH hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 13:12:44
Hast du mal apt autopurge laufen lassen?
Das mach ich öfter. da kommt nichts mehr.
Ich hab schon bestimmt 30 Pakete per Hand aus den "No availables" entfernt.
Das ist ziemlich aufwändig. Waren meist uralte Versionen z.B, von Python /Java , die wahrscheinlich
in irgendeinem Zusammenhang bei mir gelandet sind.Muss da halt immer vorher soweit es geht checken, ob
irgendwas davon noch abhängt
Zuletzt geändert von thunder11 am 28.06.2023 15:22:29, insgesamt 1-mal geändert.

Benutzeravatar
thunder11
Beiträge: 1348
Registriert: 19.04.2023 09:08:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von thunder11 » 28.06.2023 15:21:53

Wenn das geklärt ist , habe ich noch eine zusätzliche Frage (neuer Thread ??):

Die jetzt erstellte Liste kann man wohl nicht mit den Befehlen

Code: Alles auswählen

dpkg --set-selections < DATEINAHME
und

Code: Alles auswählen

apt-get -u dselect-upgrade
einspielen.

ich vermute mal,dass das nur mit diesem Format klappt.
thunder11 hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 12:37:06
Die Ausgabe dpkg --get-selections hat folgendes Format:

Code: Alles auswählen

2to3                                            install
aacplusenc                                      install
Dann müsste man das wohl so oder ähnlich machen:

Code: Alles auswählen

xargs -a "DATEINAME" apt install
Gibt es da Unterschiede ??

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von MSfree » 28.06.2023 15:43:11

thunder11 hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 15:21:53
Dann müsste man das wohl so oder ähnlich machen:

Code: Alles auswählen

xargs -a "DATEINAME" apt install

Code: Alles auswählen

apt-get install `cat DATEINAME`
ist effizienter, weil nicht mit jeder Ausführung von apt der Abhängigkeitsbaum neu aufgebaut werden muß.
Gibt es da Unterschiede ??
Im Gegensatz zu apt(-get) löst dpkg keine Abhängigkeiten auf.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Paketliste für Neuinstallation erstellen

Beitrag von fischig » 28.06.2023 16:34:25

thunder11 hat geschrieben:ich möchte mir gerne eine Paketliste erstellen, mit der ich eine Neuinstallation mit
identischen Paketen machen kann.
Schaut für mich aus nach der Suche nach der perfekten „eierlegenden Wollmilchsau“ deren Anwendung jegliche weitere eigene mentale Anstrengung überflüssig machte.
Neuinstallation eines existierenden Debian-Systems ist böse! :P
thunder11 hat geschrieben:nun habe ich aber diverse Pakete installiert, die nicht aus den Repos kommen bzw.
z.T. alter Müll sind
Die höbe ich mir vor dem dist-upgrade gut auf (soweit ich den „alten Müll“ noch benutzen wollte), deinstallierte sie erstmal und schaute nach dem dist-upgrade, ob/wie die noch funktionieren könnten. Was die überflüssig gewordenen libs angeht: Debiandeborphan ist dein Freund (falls da noch was übrig bleibt, was

Code: Alles auswählen

apt-get autoremove
nicht auf dem Schirm hatte).

Benutzeravatar
thunder11
Beiträge: 1348
Registriert: 19.04.2023 09:08:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von thunder11 » 28.06.2023 17:11:38

@ fischig
Ja wat denn nu ?
fischig hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 16:34:25
Schaut für mich aus nach der Suche nach der perfekten „eierlegenden Wollmilchsau“ deren Anwendung jegliche weitere eigene mentale Anstrengung überflüssig machte.
Neuinstallation eines existierenden Debian-Systems ist böse!
oder:
fischig hat geschrieben: ↑ zum Beitrag ↑
28.06.2023 16:34:25
Die höbe ich mir vor dem dist-upgrade gut auf (soweit ich den „alten Müll“ noch benutzen wollte), deinstallierte sie erstmal und schaute nach dem dist-upgrade, ob/wie die noch funktionieren könnten. Was die überflüssig gewordenen libs angeht: deborphan ist dein Freund (falls da noch was übrig bleibt.
Ich will: Neuinstallation mit dem gleichen Paket(Programm) Umfang. Die "mentale Anstrengung" versuche ich vorher.
Für andere (konstruktive) Vorschläge bin ich natürlich immer empfänglich :wink: :hail:

Und nein - bei mir ist nichts kaputt, mein System läuft seit 4 Jahren. Und Neuinstallation ist nicht böse, wenn man z.B.
eine identische VM aufsetzen will. Also muss ich auch nichts deinstallieren, weil ich das alles haben möchte.
Blos apt meckert, wenn es Pakete nicht findet.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Paketliste für Neuinstallation erstellen

Beitrag von fischig » 28.06.2023 18:43:15

Und Neuinstallation ist nicht böse
Das war nicht so ernst gemeint. :wink:
Die "mentale Anstrengung" versuche ich vorher.
Ich wollt' halt nur zu bedenken geben: 1. kommt es anders und 2. als man denkt. :wink:

Darüber hinaus fand ich meinen Alternativvorschlag schon konstruktiv.
Neuinstallation mit dem gleichen Paket(Programm) Umfang.
Sofern es sich um Fremdpakete handelt (und nur darum ging's mir) ist halt ungewiss, wie die mit einem Systemupgrade zurechtkommen. Kann man vorher zu klären versuchen, keine Frage. Ich verließe mich darauf nicht.

Ich finde, dein Vorhaben zeugt von sportlichem Ehrgeiz. Der Spaß dabei und die eventuell erreichte Erfolgsbefriedigung gönne ich dir von Herzen.

mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

Re: Paketliste für Neuinstallation erstellen

Beitrag von mino23 » 28.06.2023 20:27:06

Ich stimme dem TO zu, solch eine Liste sollte ohne sed und ähnlichem Gedöns vom Betriebssystem erstellt werden. Dem ist seit 1993 bei Debian nicht so. Irgendwann tauchte apt-mark showmanual auf. Das ist eine am Endverbraucher vorbeigedachte F*ickelei eines Debian Entwicklers. Ich würde die nicht nehmen, weil es bessere Lösungen gibt.

Ohne sed, awk und so weiter wird es aber nicht gehen. Ich empfehle dem TO bei stackoverflow, unix.com, linuxquestions, ubuntuforen usw. nachzuschauen. Dort gibt es gefühlt mehrere hundert Lösungen. Ich würde bei stackoverflow anfangen. Dort sitze geballte Expertise und Fehlerkontrolle.

Benutzeravatar
grubenlicht
Beiträge: 422
Registriert: 10.06.2021 22:35:56

Re: Paketliste für Neuinstallation erstellen

Beitrag von grubenlicht » 29.06.2023 12:49:05

evt. ist auch -> das hier hilfreich? (allerdings weiß ich nicht, wieweit das auf Debian übertragbar ist, dazu kenne ich mich zu wenig aus)

Benutzeravatar
thunder11
Beiträge: 1348
Registriert: 19.04.2023 09:08:30

Re: Paketliste für Neuinstallation erstellen

Beitrag von thunder11 » 29.06.2023 16:58:14

so - Projekt (fast) zufriedenstellend durchgezogen.
1) neue VM angelegt
2) Minimalinstallation (nur die Debian Tools)
3) Eine andere VM gebootet
4) auf diese VM die Paket-Datei und einiges aus meinem Home kopiert.
5) dieses vdi - Image in die Minimal-VM integriert (2. SATA_Platte)
6) Mini-VM hochgefahren und die andere VDI-Platte gemountet
dann

Code: Alles auswählen

xargs -a "DATEINAME" apt install
1 Paket ist auf der Liste "durch gerutscht" (python 2.7 minimal)
in der Liste gelöscht ---> kapp 9 Minuten für die fast 3000 Pakete --- > alles fertig :mrgreen: :THX:
Die additions in der VM installiert, und mein /home erstmal als "gemeinsamen Ordner" in die VM gepackt.
Dann hab ich fast mein gesamtes /home und anschliessend /opt in die VM kopiert.

Die Programm laufen alle, mein Layout ist auch vorhanden.

Aber irgendwie hat es mir dabei das Netzwerk zerschossen. :facepalm:
Jedenfalls hab ich in der VM kein Internet mehr.
Nur "Lo"
Aber das wird dann, wenn ich wieder Lust habe, die nächste Baustelle. :oops:

VS2FreeUsers
Beiträge: 58
Registriert: 26.06.2023 09:09:40
Lizenz eigener Beiträge: GNU General Public License

Re: [Gelöst] Paketliste für Neuinstallation erstellen

Beitrag von VS2FreeUsers » 29.06.2023 18:44:37

Hi,

vielleicht ausversehen network-manager installiert ohne das er vorher drauf war? Damit habe ich mir auch schonmal das Netzwerk aufm Server zerlegt.
vs2-free-users community

#vs2-free-users #VS2FreeUsers

Antworten