Frage Möglich, Deb-Paket von installiert zu rekonstruieren?


Ich habe einige Deb-Pakete von Drittanbietern von einem PPA installiert, die nun die Pakete gelöscht haben.

Ist es irgendwie möglich, die Pakete so zu rekonstruieren, wie ich den Host habe, auf dem sie installiert sind?


5
2017-11-29 16:59


Ursprung




Antworten:


Es ist möglich, dass sich die Pakete noch in Ihrem lokalen .deb-Cache befinden. Sehen Sie, ob es zuerst da ist, bevor Sie versuchen, es neu zu erstellen.

Versuche hineinzuschauen /var/cache/apt/archives. Dort befindet sich der apt-Cache auf meinen Debian-Boxen (er sollte sich am selben Ort auf Ubuntu befinden).

Wie @Zoredache erwähnt: Wenn du es gewohnt bist zu rennen apt-get clean Ihr lokaler Cache ist leer. Bitte lesen Sie seine Antwort, wie das Paket mit der Steuerdatei und den Skripten neu erstellt werden kann.


7
2017-11-29 17:13



Bah, das ist die einfache Antwort, Sie gehen davon aus, dass das Archiv im Cache ist. :) Es ist nicht falsch, aber es geht davon aus, dass Sie nicht laufen apt-get clean häufig. Der Speicherort des Caches ist auf Ubuntu identisch. - Zoredache
Mir wurde immer beigebracht, das "leichte Problem" zuerst zu lösen ... aber du bekommst mein Lob für technische Korrektheit und Vollständigkeit. - kce


Es sollte möglich sein, aber es wird ein bisschen schwierig sein.

Ein ordnungsgemäß erstelltes Debian-Paket wird nach der Installation die meisten wichtigen Details enthalten, die Sie dafür benötigen /var/lib/dpkg/info.

Die erste wichtige Datei ist /var/lib/dpkg/info/foo.list Dies sollte eine Liste aller im Originalpaket enthaltenen Dateien sein, die auf Ihrem System installiert wurden. Also fange an, eine Kopie all dieser Dateien in ein temporäres Verzeichnis zu schreiben.

Die Binärversion eines Debian-Pakets enthält ein Kontrollarchiv mit mehreren Skripten. Greifen /var/lib/dpkg/info/foo.(postinst|postrm|preinst|prerm) Das sind Ihre Installations- / Deinstallations-Skripte. Eine andere Möglichkeit, eine Liste zu erhalten, besteht darin, zu starten dpkg-query -c foo.

Die andere Datei, die Sie zum Erstellen eines Debian-Pakets benötigen, ist die Steuerdatei. AFAIK, die Paketsteuerungsdatei wird nicht irgendwo auf dem System gespeichert, aber Sie können etwas erreichen, das so nah ist, dass Sie es rekonstruieren können, indem Sie den Befehl ausführen dpkg-query -s foo | grep -v 'Status:'.

Sowieso, mit der Datei, die durch das Paket und alle Steuerdateien installiert wird, sollten Sie fähig sein, das Paket neu zu konstruieren. Diese Debian-Binärpaket-Erstellung HOWTO sollte Ihnen genug Details zur Verwendung geben dpkg-deb um dies zu tun.


5
2017-11-29 17:52





Sie könnten herausfinden, wo die Pakete Sachen fallen lassen und benutzen FPM

Ich habe das gerade getan, um eine Deb von einer installierten Webapp zu erstellen. fpm -s dir -t deb -n "webapp1" -v 1.0-mywebapp /var/www/pathtowebapp


4
2017-11-29 17:21





Unter debian hast du Dpkg-Repack für diese Aufgabe. Es ist nur ein Perl-Skript und läuft seit debian / sarge. Es sollte auch unter Ubuntu funktionieren.


3
2017-11-30 08:52



Ich habe das heute auf Ubuntu ausgeführt und es hat perfekt funktioniert. Die fraglichen Pakete wurden während eines Reversionsprozesses aus dem Repository gelöscht. Nichts in unserem lokalen Cache. - ytjohn