Kann ich das Installationsverzeichnis eines bestimmten Pakets auf einen anderen Computer übertragen, um den Installationsschritt zu vermeiden?

Kann ich das Installationsverzeichnis eines bestimmten Pakets auf einen anderen Computer übertragen, um den Installationsschritt zu vermeiden?

Ich habe ein Paket auf meinem Linux-Rechner installiert und möchte dasselbe Paket auf einem anderen Linux-Rechner installieren. Kann ich das installierte Verzeichnis direkt von einem Computer auf einen anderen Computer kopieren? Ich meine das Klonen des Installationsverzeichnisses.

Antwort1

Berücksichtigung von mit APT/DPKG installierter Software

Auf den meisten Linux-Systemen, einschließlich Ubuntu, gibt es kein einzelnes Installationsverzeichnis für ein Paket, obwohl bei Software von Drittanbietern manchmal alle Dateien in einem einzigen Verzeichnis vorhanden sein können.

Stattdessen enthält ein Paket eine Reihe von Dateien, die an mehreren Speicherorten im Dateisystem abgelegt sind. whereisBeim Ausführen eines Pakets werden die Verzeichnisse angezeigt, die dessen Hauptteile enthalten:

$ whereis gimp
gimp: /usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz

Wir können sehen, dass Gimp mindestens in /usr/bin, /usr/lib, /etcund Dateien hat /usr/share, die alle viele Dateien enthalten, die zu anderen Paketen gehören.

Sie können dpkg-query -Loder die --listfilesOption verwenden, um die Dateiliste eines dpkg bekannten Pakets zu lesen:

$ dpkg --listfiles g++
/.
/usr
/usr/bin
/usr/share
/usr/share/doc
/usr/share/man
/usr/share/man/man1
/usr/bin/g++
/usr/bin/x86_64-linux-gnu-g++
/usr/share/doc/g++
/usr/share/man/man1/g++.1.gz
/usr/share/man/man1/x86_64-linux-gnu-g++.1.gz

Beachten Sie, dass die Liste alle übergeordneten Verzeichnisse enthält, auch wenn diese offensichtlich nicht vom G++-Paket bereitgestellt wurden (um nur Dateien abzurufen, können Sie etwas wie tun for i in $(dpkg --listfiles g++); do [[ -f "$i" ]] && echo "$i"; done, aber bei einigen Paketinstallationen werden tatsächlich Verzeichnisse erstellt).

Das eine g++ist eine sehr kleine Dateiliste ...

$ dpkg --listfiles gimp | wc -l
254
$ dpkg --listfiles xkb-data | wc -l
331
$ dpkg --listfiles linux-image-4.10.0-24-generic | wc -l
1312

Bedenken Sie auch, dass, wenn Sie einfach alle relevanten Dateien an alle relevanten Speicherorte auf einem anderen System kopieren würden, der Paketmanager nichts davon wüsste, sodass das Paket nicht aktualisiert würde und seine Abhängigkeiten nicht installiert würden, sodass es aus schwer zu debuggenden Gründen wahrscheinlich überhaupt nicht funktionieren würde.

Im Endeffekt ist es bei Software, die mit APT installiert werden kann, bei weitem am einfachsten, sie mit APT zu installieren. Wenn Sie sich das Herunterladen auf jedem System sparen möchten, lesen SieWie kann ich Software oder Pakete ohne Internet (offline) installieren?.

Manche Leute halten diese verteilte Installationsart für einen Fehler. Und viele von ihnen unternehmen etwas dagegen, indem sie beispielsweise Distributionen erstellen, die Pakete diskret installieren, oder plattformübergreifende Paketlösungen wie Snaps entwickeln, die eine diskrete Installation einschließlich aller Abhängigkeiten ermöglichen.

verwandte Informationen