Il comando principale per manipolare i pacchetti deb è dpkg-deb.
Per decomprimere il pacchetto, creare una directory vuota e passare ad esso, quindi eseguire dpkg-debper estrarre le informazioni di controllo e i file del pacchetto. Utilizzare dpkg-deb -bper ricostruire il pacchetto.
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Fai attenzione che, a meno che lo script non sia in esecuzione come root, le autorizzazioni e la proprietà dei file verranno danneggiate in fase di estrazione. Un modo per evitarlo è eseguire lo script in fakeroot. Si noti che è necessario eseguire l'intera sequenza in fakeroot, non ciascuna dpkg-debindividualmente, poiché è il fakerootprocesso che mantiene la memoria delle autorizzazioni dei file che non possono essere create così come sono.
fakeroot sh -c '
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
'
Invece di pasticciare con le autorizzazioni, è possibile mantenere intatto l'archivio dati e modificare solo l'archivio di controllo. dpkg-debnon fornisce un modo per farlo. Fortunatamente, i pacchetti di deb sono in un formato standard: sono ararchivi. Quindi è possibile utilizzare arper estrarre l'archivio di controllo, modificare i suoi file e arriutilizzarlo per sostituire l'archivio di controllo con una nuova versione.
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
È necessario aggiungere una voce del log delle modifiche e modificare il numero di versione se si modifica qualcosa nel pacchetto. L'infrastruttura per manipolare i pacchetti Debian presuppone che se due pacchetti hanno lo stesso nome e versione, sono lo stesso pacchetto. Aggiungi un suffisso alla parte debian_revision alla fine del numero di versione; per motivi di ordinamento il suffisso dovrebbe iniziare con ~, ad esempio 1.2.3-4.1diventa 1.2.3-4.1~johnjumper1.
Invece di usare gli strumenti shell, puoi usare Emacs. Il dpkg-dev-elpacchetto (che è il suo upstream in quanto si tratta di un pacchetto Debian nativo) contiene le modalità per modificare i .debfile e modificare i log delle modifiche Debian. Emacs può essere utilizzato in modo interattivo o tramite script.
-einterruttore di FPM per modificare il file di controllo:fpm -e -s deb -t deb ../old.deb. Questo aprirà il file di controllo nel tuo editor.