[[Vorlage(Getestet, general)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Paketen] [:Terminal:Ein Terminal öffnen] [:sudo:Root-Rechte] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/package.png, 48, align=left)]] Mithilfe von [http://joeyh.name/code/dpkg-repack/ dpkg-repack] {en} 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: {{{#!vorlage Paketinstallation 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl fakeroot -u dpkg-repack PAKETNAME }}} {{{#!vorlage 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: {{{#!vorlage Befehl sudo dpkg-repack PAKETNAME }}} Folgende Optionen sind verfügbar: {{{#!vorlage Tabelle <-2 tablestyle="width: 97%;" rowclass="titel"> 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 {{{#!vorlage 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 = * [http://joeyh.name/code/dpkg-repack/ Projektseite] {en} * [http://debiananwenderhandbuch.de/dpkg-repack.html dpkg-repack] {de} im Debian-Anwenderbuch * [man:dpkg-repack.1:Manpage] {en} #tag: System, Shell, Installation, Paketverwaltung