dpkg-repack
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Mithilfe von dpkg-repack 🇬🇧 kann man bereits installierte Programme wieder in ein .deb-Paket packen, welches sich wie gewohnt über die Paketverwaltung installieren lässt. Dies kann nützlich sein, wenn zum Beispiel das installierte Paket aus den Quellen genommen wurde und man es trotzdem noch auf einem anderen Computer oder nach einer Neuinstallation installieren möchte.
Falls man Änderungen, beispielsweise an Konfigurationsdateien, vorgenommen hat, so werden diese Änderungen in das Paket übernommen. Somit ist es sehr einfach, Pakete mit einer eigenen Konfiguration zu erstellen und diese an mehrere Systeme zu verteilen.
Außerdem kann man mit dem Programm den aktuellen Zustand eines Paketes sichern, um die Möglichkeit zu haben, es nach einem Upgrade des Paket durch eine ältere, selbst erstellte Version zu ersetzen.
Installation¶
dpkg-repack ist nicht in der Standardinstallation enthalten, kann aber direkt aus den offiziellen Paketquellen installiert [1] werden:
dpkg-repack
Befehl zum Installieren der Pakete:
sudo apt-get install dpkg-repack
Oder mit apturl installieren, Link: apt://dpkg-repack
Nach der Installation kann das Programm über ein Terminal [2] aufrufen werden.
Bedienung¶
Zum Ausführen des Programms sind Root-Rechte [3] nötig. Der Befehl setzt sich folgendermaßen zusammen:
sudo dpkg-repack [OPTIONEN] [--generate] PAKETNAME1 [PAKETNAME2 ...]
Möchte man dpkg-repack nicht als root
ausführen, kann man den es auch mithilfe von fakeroot
ausführen. Dann lautet der Befehl:
fakeroot -u dpkg-repack PAKETNAME
Hinweis:
Man muss fakeroot mit der Option -u
ausführen, da sonst root
auch Besitzer aller Programmdateien ist, die eigentlich dem normalen Benutzer gehören. Ohne diese Option würde das erstellte Paket nicht mehr für einen Nutzer ohne Root-Rechte funktionieren.
In dem meisten Fällen reicht folgender Befehl aus:
sudo dpkg-repack PAKETNAME
Folgende Optionen sind verfügbar:
Kommandozeilenoptionen von dpkg-repack | |
Verfügbare Optionen | Bedeutung |
--root=ORDNER | Erstellt das Paket aus einem Rootverzeichnis, welches nicht unter / eingehängt ist, sondern im Verzeichnis ORDNER liegt. Dies ist hilfreich, wenn man zum Beispiel ein System per LiveCD eingehängt hat und Pakete von Programmen erstellen will, die auf dem eingehängten System installiert sind. |
--arch=ARCHITEKTUR | Erstellt das Paket für eine andere Prozessor-Architektur. dpkg-repack kann nicht erkennen, ob das ursprüngliche Paket architektur-unabhängig oder speziell für die eigene Systemarchitektur erstellt wurde. Daher sollte man vorher mit dem Befehl dpkg --print-architecture prüfen, welche Architektur man verwendet. Falls man weiß, dass das Paket, welches man packen möchte, architektur-unabhängig ist, dann kann man mit diesem Befehl das Benutzen einer bestimmten Architektur erzwingen. |
--generate | Generiert einen temporären Ordner, aus dem heraus das Paket erstellt werden kann, erzeugt dieses Paket aber noch nicht. Dies kann hilfreich sein, wenn man vor dem Packen des Pakets noch manuell Änderungen an diesem vornehmen will. Das Paket kann später (aus dem temporären Ordner heraus) mit dem Befehl dpkg --build erstellt werden. |
PAKETNAME | Der Name des Pakets, welches wieder gepackt werden soll. Es können auch mehrere Pakete gleichzeitig angegeben werden. |
Beispiel¶
Auf einem 64-bit-Ubuntu ist gedit in der Version 3.10.1-0ubuntu1~saucy1
installiert. Mit dem Befehl
sudo dpkg-repack gedit
wird das Programm in ein .deb-Paket gepackt und das erstellte Paket im Arbeitsverzeichnis unter dem Namen gedit_3.10.1-0ubuntu1~saucy1_amd64.deb abgespeichert.
Bekannte Probleme¶
Modifizierte Dateien werden von dpkg nicht als modifiziert erkannt¶
Wenn man ein modifiziertes Paket, welches mit Hilfe von dpkg-repack erstellt wurde, installiert, dann erkennt dpkg die geänderten Dateien nicht als modifiziert an und überschreibt beim nächsten Upgrade des Paketes diese Dateien (ohne nachzufragen, ob die geänderten Dateien beibehalten werden sollen).
Links¶
Projektseite 🇬🇧
dpkg-repack 🇩🇪 im Debian-Anwenderbuch
Manpage 🇬🇧