Как пересобрать deb-пакет
Debian package - это основная система управления пакетами в Debian подобных системах. dpkg используется для установки, удаления и получения информации о .deb пакетах.
Использование
Требуются права суперпользователя для работы
Установка пакета
sudo dpkg -i имя_пакета.deb Вывод списка установленных пакетов
dpkg -l [маска] Удаление пакета
dpkg -r имя_пакета
Инструменты разработчика
Пакет dpkg-dev содержит серию инструментов, которые вызываются для создания пакета.
- dpkg-source - архивирует и распаковывает исходные файлы пакета Debian.
- dpkg-deb - архивирует и распаковывает двоичные пакеты.
- dpkg-gencontrol - читает информацию из распакованного пакета Debian о дереве исходных файлов и генерирует двоичный пакет.
- dpkg-shlibdeps - прослеживает зависимости пакета.
- dpkg-genchanges - читает информацию из распакованного пакета Debian о дереве исходных файлов. которые запущены единожды создают контрольный файл (.changes).
- dpkg-buildpackage - контрольный скрипт, который может быть использован для автоматического создания пакета.
- dpkg-distaddfile - добавляет файл в файлы Debian.
- dpkg-parsechangelog - читает информацию из файла с изменениями распакованного пакета Debian и создаёт удобный файл с этими изменениями для просмотра его пользователем.
Содержание папки DEBIAN/*
- DEBIAN/control: Основная информация
- DEBIAN/copyright: © / лицензия
- DEBIAN/changelog: история изменений
- DEBIAN/rules: правила компиляции
- DEBIAN/conffiles: список файлов конфигурации
- DEBIAN/dirs: список папок для создания
- DEBIAN/menu: создание пунктов меню
- DEBIAN/md5sums: контрольные суммы файлов
- DEBIAN/watch: мониторинг сайта, откуда была скачана прога
- DEBIAN/cron.d: инсталляция заданий cron
- DEBIAN/inid.d: init-скрипт
- DEBIAN/(preinst|postinst|prerm|postrm): скрипты установки
- DEBIAN/templates: шаблоны для диалогов
Подробнее можно посмотеть тут.
Как пересобрать deb-пакет
-
Скачиваем непосредственно сам пакет, который хотим установить.(Если, конечно такой есть и не надо всё компилить). Будем полагать что он называется proga-0.1.5.deb.
apt download proga-0.1.5.deb
-
Создаём папку с произвольным названием и кладём туда наш пакет.
mkdir /tmp/deb mkdir /tmp/deb/DEBIAN/ # Именно так: папка DEBIAN должна быть написана в верхнем регистре (большими буквами)
Таким образом мы создаём папки в которые будем распаковывать наш пакет.
- Далее распаковываем пакет: И информацию, которую в дальнейшем будет использовать инсталлятор:
dpkg -x /tmp/deb/proga-0.1.5.deb /tmp/deb
dpkg -e /tmp/deb/proga-0.1.5.deb /tmp/deb/DEBIAN/
-
Переходим при помощи файлового менеджера в папку
/tmp/deb/DEBIAN/
и открываем файл с названиемcontrol
любимым текстовым редактором. При этом терминал не закрываем! -
Ищем строку начинающуюся на
Depends
: - она содержит информацию о зависимостях пакета и именно эту строку мы будем редактировать. Для этого открываемсинаптик
и сравниваем версии пакетов-зависимостей, указанных в файле с теми что имеются в репозитории. Если есть необходимость, понижаем версию зависимого пакета/тов и сохраняем файл. -
Теперь собираем наш пакет:
dpkg -b /tmp/deb /tmp/deb/DEBIAN/proga-0.1.5_new.deb
- Устанавливаем пересобранный пакет даблкликом или при помощи
sudo dpkg -i /tmp/deb/DEBIAN/proga-0.1.5_new.deb
- PROFIT!!! Или, в некоторых случаях, FAIL! Тут всё зависит от многих факторов.
Удаление пакета
dpkg -r proga-0.1.5_new.deb
# Полное удаление пакета
dpkg -P proga-0.1.5_new.deb
Запросы к базе данных dpkg и анализ файлов .deb
- --listfiles package (or -L), список файлов, установленных этим пакетом;
- --search file (or -S), находит пакет(ы), содержащий файл;
- --status package (or -s), отображает заголовки установленного пакета;
- --list (or -l), wотображает список пакетов, известных системе, и статус их установки;
- --contents file.deb (or -c), перечисляет файлы в указанном пакете Debian;
- --info file.deb (or -I), отображает заголовки этого пакета Debian.
$ dpkg --search /bin/mount
mount: /bin/mount