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:

  1. Installation von Paketen

  2. Ein Terminal öffnen

  3. Root-Rechte

Inhaltsverzeichnis
  1. Installation
  2. Bedienung
  3. Beispiel
  4. Bekannte Probleme
  5. Links

Wiki/Icons/package.png 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:

Paketliste zum Kopieren:

sudo apt-get install dpkg-repack 

Oder mit apturl die Pakete 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).