Инструмент dpkg-repack позволяет собирать файлы установленной программы в deb-пакет. Рассмотрим установку и работу утилиты в Debian, Ubuntu и производных
Представьте себе следующий сценарий. Вы установили несколько пакетов Debian в своей системе. И вы хотите установить те же пакеты в другой системе. Но вы потеряли двоичные архивы, то есть файлы deb. При этом у вас нет возможности скачать пакеты с их официального сайта или репозитория? Что если конкретная версия определенного пакета больше не доступна? Или, например, вы хотите собрать deb-пакет из установленной программы, но в файлах программы (не конфигурационном файле) внесены важные для вас изменения? Не переживайте! Поскольку они уже установлены в вашей системе, вы можете легко восстановить файлы .deb.
Для решения подобных проблем нам подойдет инструмент dpkg-repack, данная утилита позволяет собирать файлы установленной программы в deb-пакет. Несмотря на то, что инструмент dpkg-repack не имеет графического интерфейса, его работа максимально проста.
Установка dpkg-repack в Debian, Ubuntu и производных
Пакет dpkg-repack доступен в репозиториях по умолчанию в Debian, Ubuntu и его производных. Чтобы установить dpkg-repack достаточно запустить следующую команду:
sudo apt install dpkg-repack
Как собрать Deb-пакет из установленной программы с помощью dpkg-repack
В качестве примера будет собран deb-пакет стабильной версии браузера Opera.
dpkg -l | grep opera-stable
Я мог бы скачать deb-пакет браузера, но именно в данном случае, имею ввиду в случае с браузером Opera, мне гораздо удобнее будет собрать установочный, исправленный пакет. В браузере Opera есть известная проблема с воспроизведением HTML видео с помощью кодека H.264 (легко можно проверить при включении проигрывания прямых трансляций на Youtube). Проблема встречалась и в Яндекс.Браузере и когда-то в браузере Vivaldi. По этой причине было бы гораздо лучше иметь deb-пакет браузера Opera для Linux с решенной проблемой воспроизведения видео.
Проблему с воспроизведением HTML видео в браузере Opera я решил заменой файла libffmpeg.so в директории /usr/lib/x86_64-linux-gnu/opera , это именно та директория в которую устанавливается браузер. Поэтому собранный пакет будет содержать в себе рабочий файл libffmpeg.so и при этом в нем не будет файлов пользователя (конфигурационных файлов).
Перейдём к непосредственной сборке deb-пакета Opera-stable. Выполняем следующую команду:
dpkg-repack opera-stable
Времени на сборку пакета ушло чуть меньше одной минуты. Собранный установочный пакет будет расположен в Домашней папке
В случае проблем, связанных с разрешениями попробуйте собрать пакет из среды fakeroot:
fakeroot -u dpkg-repack opera-stable
При этом при сборке другой программы я столкнулся с ошибкой “ предупреждение: неизвестное информационное поле «Original-Maintainer» во входных данных в элемент в файле состояния dpkg”, решить которую не получилось.
Просмотр содержимого deb-файла
Посмотреть содержимое установочного файла можно следующей командой:
dpkg --contents opera-stable_68.0.3618.125_amd64.deb
Установить собранный пакет рекомендую либо с помощью утилиты Gdebi, либо консольным вариантом:
sudo dpkg -i opera-stable_68.0.3618.125_amd64.deb
Для решения возможных проблем с зависимостями стоит воспользоваться следующей командой:
sudo apt install -f
Для более подробной информации по работает с утилитой dpkg-repack обратитесь к справочным страницам:
man dpkg-repack
Пользователи операционных систем Debian, Ubuntu и производных, если у вас не установлена версия браузера Opera с исправлением проблемы воспроизведения видео, то было бы интересно узнать ваш опыт проверки исправленной версии браузера.