So erstellen Sie eine Liste der installierten Pakete für die einfache / automatische Neuinstallation nach der Formatierung der Festplatte

8

Ich werde mein System von 32 Bit auf 64 Bit ändern und es wird das gleiche sein, das ich zuvor hatte, Debian Squeeze, aber ich möchte die zuvor installierten Programme nicht verlieren, weil ich mich nicht an den Namen aller erinnere.

Daher wollte ich, dass ein Befehl dies für mich erledigt, den Namen aller Programme speichert, die ich in einer Datei installiert habe, aber nicht die Standardprogramme, die mit dem System geliefert wurden, und wenn ich das andere System verwende, würde ich den Namen von erwähnen die Datei und Ihr Verzeichnis, damit alles automatisch installiert wird.

Noch eine Frage: Ist dies mit Programmen möglich, die manuell mit installiert wurden dpkg-i package.deb? Wenn ja, wie kann ich das machen?

Zignd
quelle

Antworten:

7

Haben Sie versucht zu verwenden dpkg --get-selections >packages? Wenn Sie einige Pakete ausschließen möchten, können Sie die Ausgabedatei bearbeiten packages. Wenn Sie fertig sind, übertragen Sie es auf das Zielsystem und sagen Sie:

dpkg --set-selections <packages

Und Pakete werden für die Installation markiert. Sie müssen höchstwahrscheinlich auch sagen aptitude update; aptitude dist-upgrade.

Die andere Frage: Wenn diese Pakete i386Architekturpakete sind und Sie multiarchinstalliert haben, können Sie das .debs mit dem üblichen installieren dpkg -i package.deb. Aber es ist wahrscheinlich besser, von Fall zu Fall nachzuforschen und 64-Bit-Versionen der Pakete zu installieren, die sie haben.

Alexios
quelle
Vielen Dank, Sie haben mir wirklich geholfen, als Sie sagten, dass die bereits installierten Pakete in der i386-Architektur vorliegen. Ich hatte nicht darüber nachgedacht. Ich denke, es ist besser, diese anderen erneut zu installieren.
Zignd
9

In aktuellen Debian-Versionen können Sie eine Liste explizit installierter Pakete mit erhalten

apt-mark showmanual

Für diejenigen, die alte Versionen von Debian apt-mark showmanualausführen, in denen es keine gibt, oder wenn Sie zusätzliche Auswahlen durchführen möchten, können Sie aptitude verwenden.

aptitude search '~i !~M' -F %p >package.list

~ipasst zu installierten Paketen; !~Mlässt die Pakete weg, die automatisch als Abhängigkeit von einem anderen Paket installiert wurden. -F %pÄndert das Ausgabeformat so, dass nur der Paketname enthalten ist.

Sie können diese Pakete später mit installieren

apt-get install $(cat package.list)

Debian Squeeze hat nicht apt-mark showmanual, aber es hat apt-mark showautowelche automatisch installierten Pakete auflistet. Wenn Sie dies verwenden, können Sie alle Pakete auf dem alten System mit dpkg --get-selections >package.listauflisten, alle wiederherstellen und dann die automatischen Pakete mit markieren apt-mark markauto. Für Ihren Anwendungsfall (32-Bit bis 64-Bit) werden bei diesem Ansatz wahrscheinlich einige Bibliotheken als manuell markiert, da sie unter verschiedenen Architekturen unterschiedliche Namen haben.

Beachten Sie, dass es jetzt ein Tool namens apt-clone gibt (seit Debeezy in Debian verteilt), das alles automatisch erledigt , wenn der Anwendungsfall darin besteht, eine identische Installation zu reproduzieren, anstatt die Pakete beizubehalten, aber die Architektur zu ändern .

Gilles 'SO - hör auf böse zu sein'
quelle
Das ist leider nicht perfekt. Wenn ich das mache, ist das erste, was aufgelistet wird, "acl", das ich nicht explizit geladen habe. Wenn man sich rdepends ansieht, scheint es, dass systemd davon abhängt und in Debian 8, das bereits installiert ist. Und systemd ist auch auf dieser Liste. Obwohl systemd und acl installiert wurden, werden sie von aptitude nicht als "automatisch" identifiziert. Könnte dies ein Mangel an Eignung sein?
Liam
@ Liam Ich denke, das Installationsprogramm markiert kein Paket als automatisch. Selbst wenn dies der aclFall wäre, was für Bibliotheken sinnvoll wäre, könnte ein Paket wie ein wichtiger Bestandteil des Basissystems angesehen und daher als manuell installiert markiert werden. Es wurde "manuell" vom Erstinstallationsprogramm und nicht vom Benutzer installiert. Trotzdem bedeutet "automatisch installiert" "Sie können dies sicher entfernen, wenn es keine Abhängigkeiten aufhebt" und grundlegende Pakete, die für die Erstellung erforderlich sind System funktioniert nicht richtig die Rechnung.
Gilles 'SO - hör auf böse zu sein'
1

Ich sehe keinen einfachen Standard dafür. Ich fürchte, Sie müssen mit dpkgden Protokollen und Optionen herumspielen, da dpkgdie "Standardprogramme, die mit dem System geliefert wurden" und die anderen nicht unterschieden werden.

DAS WIRD NICHT GERADE VORWÄRTS SEIN . Ich ziehe es vor, dies durch die Verwendung von fettem, großgeschriebenem Text zu verdeutlichen , aber Sie können so etwas tun

  • Extrahieren Sie die Liste der installierten Software aus den /var/log/dpkg.log*Dateien.

  • Entfernen Sie die während der Systeminstallation installierten. (Verwenden Sie die Installationszeit, um sie zu erkennen.)

  • Speichern Sie die Liste im dpkg --get-selectionsFormat

Et voilà! Wenn Ihr System betriebsbereit ist, installieren Sie Ihre Programme mit neu

 apt-get update
 dpkg --set-selections < yourSelection
 apt-get -u dselect-upgrade
deviantkarot
quelle