Основна команда для маніпулювання пакетами deb dpkg-deb
.
Щоб розпакувати пакунок, створіть порожній каталог та перейдіть до нього, після чого запустіть, dpkg-deb
щоб витягти його керуючу інформацію та файли пакунків. Використовуйте dpkg-deb -b
для відновлення пакета.
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Не забудьте, що якщо ваш сценарій не працює як root, дозволи та файли файлів будуть пошкоджені на етапі вилучення. Одним із способів уникнути цього є запуск сценарію під fakeroot
. Зауважте, що потрібно запускати всю послідовність під fakeroot
, а не кожну dpkg-deb
окремо, оскільки це fakeroot
процес, який зберігає пам'ять про дозволи файлів, які неможливо створити такими, якими вони є.
fakeroot sh -c '
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
'
Замість того, щоб возитися з дозволами, ви можете зберігати архів даних неушкодженими та змінювати лише архів керування. dpkg-deb
не дає способу це зробити. На щастя, пакети дебютів у стандартному форматі: це ar
архіви. Таким чином, ви можете використовувати ar
для вилучення архіву керування, модифікувати його файли та ar
знову використовувати для заміни архіву управління новою версією.
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
Вам слід додати запис змін і змінити номер версії, якщо ви щось модифікували в пакеті. Інфраструктура для маніпулювання пакунками Debian передбачає, що якщо два пакети мають одне ім’я та версію, вони є тим же пакетом. Додайте суфікс до частини debian_revision в кінці номера версії; для сортування причин суфікс повинен починатися з ~
, наприклад , 1.2.3-4.1
стає 1.2.3-4.1~johnjumper1
.
Замість використання інструментів оболонки ви можете використовувати Emacs. dpkg-dev-el
Пакет (який є його власним вгору по течії , як це рідний пакет Debian) містить режими для редагування .deb
файлів і редагування списків змін Debian. Emacs можна використовувати в інтерактивному режимі або сценарії.
-e
перемикач FPM змінити файл управління:fpm -e -s deb -t deb ../old.deb
. Це відкриє керуючий файл у вашому редакторі.