MyTetra Share
Делитесь знаниями!
Как перепаковать deb-пакет, внеся в него собственные изменения
Время создания: 29.06.2022 14:05
Текстовые метки: linux, debian, deb, dpkg, перепаковать, распаковать, упаковать, пакет, изменить
Раздел: Компьютер - Linux - Инсталляция программ - Пакетный менеджер APT: apt-get и прочее
Запись: xintrea/mytetra_syncro/master/base/1656500708hce2fhoroe/text.html на raw.github.com

Пакет deb представляет из себя архив, в котором лежат файлы с заданной форматом пакета структурой. Пакет deb можно легко распаковать, внести в него изменения и снова собрать. Как это сделать рассказано ниже.


Чтобы распаковать какой-нибудь пакет, нужно, находясь в директории с файлом пакета, выполнить команду:

dpkg -x some-prog-123.deb ./someprog



Данная команда извлечет в каталог ./someprog все файлы, которые устанавливаются из данного пакета. Однако в пакете имеется специальная информация о версиях и зависимостях, которую тоже надо извлечь в виде служебных файлов. Иногда такую информацию называют контрольной информацией. Извлекается она следующим образом:



mkdir ./someprog/DEBIAN
dpkg -e some-prog-123.deb ./someprog/DEBIAN



В результате будет создан каталог ./someprog/DEBIAN внутри которого будет находиться два служебных файла:



control

dirs



Можно изменить, например, файл control - поправить в нем версию или зависимости. После чего надо заново создать deb-пакет. Чтобы собрать обратно пакет нужно выполнить команду:


dpkg -b ./someprog some-prog-123-new.deb



После чего можно проверить полученный новый пакет, например, зайдя в него клавишей Enter в Midnight Commander. Если ошибок нет, значит пакет собран правильно и можно пытаться его устанавливать.



Внимание! После пересборки пакета, хеш-суммы deb-файла изменяются. Если пакет прописан в репозитарии, например в файле Packages.gz, тогда в данном файле нужно изменить и хеш-суммы. Контрольные суммы можно вычислить командами:



md5sum имя_пакета.deb

sha256sum имя_пакета.deb

sha1sum имя_пакета.deb



Помимо изменения хеш-сумм, изменится и размет deb-пакета в байтах. Новый размер можно посмотреть командой:



ls -l имя_пакета.deb



После сбора информация об измененном пакете, файл Packages.gz можно распаковать командой:



gunzip Packages.gz



В результате файл Packages.gz будет удален и вместо него появится файл Packages. В нем надо найти описание нужного пакета, и поменять контрольные суммы (поля MD5sum, SHA1, SHA256) и размер (Size). Далее файл Packages надо опять упаковать:



gzip Packages



В результате чего файл Packages будет заменен упакованным файлом Packages.gz.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования