Воссоздайте бинарные пакеты Debian с помощью Dpkg-repack
В этом кратком руководстве представлена полезная утилита под названием dpkg-repack
, которая используется для воссоздания бинарных пакетов Debian, которые уже установлены в системе на базе Debian.
Что такое dpkg-repack?
Представьте себе этот сценарий. Вы установили несколько пакетов в свою систему на базе Debian. И вы хотите установить те же пакеты в другую систему. Но вы потеряли двоичные архивы, то есть файлы deb. Вы бы загрузили их снова с официального сайта или репозитория?
Что делать, если конкретная версия определенного пакета больше не доступна где-либо еще? Не беспокойся! Поскольку они уже установлены в вашей системе, вы можете легко воссоздать файлы .deb
. Привет dpkg-repack
!
dpkg-repack
— это инструмент архивирования пакетов Debian с командной строкой, позволяющий воссоздать двоичные пакеты Debian, которые уже установлены в вашей системе.
Короче говоря, утилита dpkg-repack
может создать файл .deb
из пакета Debian, который уже установлен в вашей системе.
Утилита dpkg-repack
может быть полезна во многих ситуациях, когда вам нужно:
- воссоздать файлы
.deb
из существующих установленных пакетов Debian, - легко копировать пакеты из одной системы в другую,
- сохранить текущее состояние пакета перед его обновлением,
- резервное копирование определенной версии пакета для будущего использования,
- сохранить определенные пакеты, которые больше не доступны для загрузки.
Установите dpkg-repack в Debian, Ubuntu и производных.
dpkg-repack
доступен в репозиториях по умолчанию Debian, Ubuntu и их вариантов. Чтобы установить dpkg-repack
, просто выполните следующую команду:
sudo apt install dpkg-repack
Воссоздайте бинарные пакеты Debian с помощью dpkg-repack.
1. Для целей данного руководства давайте воспользуемся приложением Microsoft Teams, которое я недавно установил на свой рабочий стол Ubuntu.
dpkg -l | grep teams
Пример вывода:
ii teams 1.3.00.5153 amd64 Microsoft Teams for Linux is your chat-centered workspace in Office 365.
У меня больше нет файла teams.deb
. Я удалил его сразу после установки приложения Microsoft Teams. Я могу перейти на официальную страницу загрузки и загрузить ее еще раз. Но зачем загружать его снова и снова? Теперь я могу просто воссоздать файл teams.deb
с помощью dpkg-repack.
2. Чтобы создать файл teams.deb
из уже установленного пакета Teams с помощью утилиты dpkg-repack
, запустите:
dpkg-repack teams
Пример вывода:
dpkg-deb: building package 'teams' in './teams_1.3.00.5153_amd64.deb'.
Воссоздайте двоичные пакеты Debian с помощью утилиты dpkg-repack.
Как видите, приведенная выше команда воссоздала файл "teams_1.3.00.5153_amd64.deb'"
из пакета Teams, который уже установлен на моем рабочем столе Ubuntu. Вновь созданный файл deb будет сохранен в текущем рабочем каталоге.
Аналогичным образом вы можете преобразовать любые установленные пакеты Debian обратно в пакеты .deb
с помощью утилиты dpkg-repack
.
3. Также возможно воссоздать несколько файлов deb, разделенных пробелами:
dpkg-repack <package1> <package2> <package3>
4. Если вы не можете пересобрать файл deb из-за каких-либо проблем с разрешениями, попробуйте использовать среду fakeroot, как показано ниже:
fakeroot -u dpkg-repack teams
Одна интересная особенность утилиты dpkg-repack заключается в том, что если в пакет были внесены какие-либо изменения во время его распаковки (т. е. были изменены файлы в /etc), новый пакет унаследует эти изменения.
Просмотр содержимого deb-файла
Шаг 1: Вы можете просмотреть содержимое этого файла deb с помощью команды:
dpkg --contents teams_1.3.00.5153_amd64.deb
Пример вывода:
drwxr-xr-x root/root 0 2020-05-26 15:15 ./
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/bin/
-rwxr-xr-x root/root 286 2020-02-20 16:46 ./usr/bin/teams
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/share/
.
.
.
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/share/teams/swiftshader/
-rwxr-xr-x root/root 286264 2020-02-20 16:46 ./usr/share/teams/swiftshader/libEGL.so
-rwxr-xr-x root/root 2677296 2020-02-20 16:46 ./usr/share/teams/swiftshader/libGLESv2.so
-rwxr-xr-x root/root 114964776 2020-02-20 16:46 ./usr/share/teams/teams
-rw-r--r-- root/root 1040912 2020-02-20 16:46 ./usr/share/teams/v8_context_snapshot.bin
Просмотр содержимого файлов deb в Linux
Шаг 2: dpkg-repack пригодится при установке одного и того же набора пакетов в нескольких системах: просто перенесите их с помощью внешнего жесткого диска или через локальную сеть в другие системы и установите их с помощью команды dpkg:
sudo dpkg -i <package-name>
Шаг 3. Обратите внимание, что вам все равно необходимо загрузить зависимости. Чтобы установить зависимости, запустите:
sudo apt-get -f install
Альтернативно вы можете найти зависимости пакета, как описано по следующей ссылке:
- Как составить список зависимостей пакета в Linux
А затем воссоздайте их все с помощью dpkg-repack
, как описано выше.
Шаг 4. Это также поможет, если вы захотите выполнить откат пакета до предыдущей рабочей версии. Например, предположим, что вы только что обновили пакет Vim
до новой доступной версии. Если новая версия не работает должным образом, вы можете просто вернуться к старой версии, созданной ранее, с помощью dpkg-repack
.
Более подробную информацию можно найти на страницах руководства:
man dpkg-repack
Связанное чтение:
- Как собрать пакеты Debian из исходного кода
- Как собрать пакеты из исходного кода с помощью CheckInstall
- Как конвертировать пакеты Linux с помощью Alien
Ресурс:
- Репозиторий dpkg-repack на GitHub