Der primäre Befehl zum Manipulieren von deb-Paketen lautet dpkg-deb.
Um das Paket zu entpacken, erstellen Sie ein leeres Verzeichnis, wechseln Sie zu diesem und führen Sie es aus dpkg-deb, um die Steuerinformationen und die Paketdateien zu extrahieren. Verwenden Sie dpkg-deb -b, um das Paket neu zu erstellen.
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Beachten Sie, dass die Berechtigungen und der Besitz der Dateien in der Extraktionsphase beschädigt werden, es sei denn, Ihr Skript wird als Root ausgeführt. Eine Möglichkeit, dies zu vermeiden, besteht darin, Ihr Skript unter auszuführen fakeroot. Beachten Sie, dass Sie die gesamte Sequenz ausführen müssen fakeroot, nicht jede für sich dpkg-deb, da es der fakerootProzess ist, der die Berechtigungen der Dateien speichert, die nicht so erstellt werden können, wie sie sind.
fakeroot sh -c '
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
'
Anstatt mit Berechtigungen herumzuspielen, können Sie das Datenarchiv intakt halten und nur das Steuerarchiv ändern. dpkg-debbietet keine Möglichkeit, dies zu tun. Glücklicherweise haben Deb-Pakete ein Standardformat: Sie sind arArchive. So können Sie ardas Kontrollarchiv extrahieren, seine Dateien ändern und arerneut verwenden, um das Kontrollarchiv durch eine neue Version zu ersetzen.
mkdir tmp
cd tmp
ar p ../original.deb control.tar.gz | tar -xz
# edit postinst
cp ../original.deb ../fixed.deb
tar czf control.tar.gz *[!z]
ar r ../fixed.deb control.tar.gz
Sie sollten einen Changelog-Eintrag hinzufügen und die Versionsnummer ändern, wenn Sie etwas im Paket ändern. Die Infrastruktur zur Manipulation von Debian-Paketen geht davon aus, dass zwei Pakete mit demselben Namen und derselben Version dasselbe Paket sind. Fügen Sie dem debian_revision- Teil am Ende der Versionsnummer ein Suffix hinzu . aus sortierungsgründen sollte das suffix mit ~zB beginnen 1.2.3-4.1werden 1.2.3-4.1~johnjumper1.
Anstelle von Shell-Tools können Sie auch Emacs verwenden. Das dpkg-dev-elPaket (welches sein eigenes Upstream ist, da dies ein natives Debian-Paket ist) enthält Modi zum Bearbeiten von .debDateien und zum Bearbeiten von Debian-Änderungsprotokollen. Emacs können interaktiv oder als Skript verwendet werden.
-eSchalter von fpm , um die Steuerdatei zu ändern:fpm -e -s deb -t deb ../old.deb. Dadurch wird die Steuerdatei in Ihrem Editor geöffnet.