Podstawowym poleceniem do manipulowania pakietami deb jest dpkg-deb.
Aby rozpakować pakiet, utwórz pusty katalog i przejdź do niego, a następnie uruchom, dpkg-debaby wyodrębnić informacje sterujące i pliki pakietu. Użyj, dpkg-deb -baby przebudować pakiet.
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Uwaga: chyba że skrypt działa jako root, uprawnienia i prawa własności plików zostaną uszkodzone na etapie wyodrębniania. Jednym ze sposobów uniknięcia tego jest uruchomienie skryptu fakeroot. Zauważ, że musisz uruchomić całą sekwencję fakeroot, a nie każdą dpkg-debosobno, ponieważ jest to fakerootproces, który utrzymuje pamięć uprawnień plików, których nie można utworzyć takimi, jakie są.
fakeroot sh -c '
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
'
Zamiast zadzierać z uprawnieniami, możesz zachować archiwum danych nienaruszone i zmodyfikować tylko archiwum kontrolne. dpkg-debnie zapewnia na to sposobu. Na szczęście pakiety deb są w standardowym formacie: są to ararchiwa. Możesz więc użyć ardo wyodrębnienia archiwum kontrolnego, zmodyfikować jego pliki i użyć arponownie, aby zastąpić archiwum kontrolne nową wersją.
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
Powinieneś dodać pozycję dziennika zmian i zmienić numer wersji, jeśli zmodyfikujesz cokolwiek w pakiecie. Infrastruktura do manipulowania pakietami Debian zakłada, że jeśli dwa pakiety mają tę samą nazwę i wersję, są one tym samym pakietem. Dodaj przyrostek do części debian_revision na końcu numeru wersji; z powodów sortowania przyrostek powinien zaczynać się ~, np . 1.2.3-4.1staje 1.2.3-4.1~johnjumper1.
Zamiast używać narzędzi powłoki, możesz użyć Emacsa. dpkg-dev-elPakiet (który jest jego własny prąd, jak to jest rodowitym pakiet Debiana) zawiera tryby do edycji .debplików i edycję changelog Debiana. Emacsa można używać interaktywnie lub skryptowo.
-eprzełącznika z FPM zmienić plik kontrolny:fpm -e -s deb -t deb ../old.deb. Spowoduje to otwarcie pliku sterującego w edytorze.