чем открыть формат deb
Как собрать Deb-пакеты (Debian Binary Packages) из уже установленных программ
Для решения подобных проблем нам подойдет инструмент dpkg-repack, данная утилита позволяет собирать файлы установленной программы в deb-пакет. Несмотря на то, что инструмент dpkg-repack не имеет графического интерфейса, его работа максимально проста.
Установка dpkg-repack в Debian, Ubuntu и производных
Пакет dpkg-repack доступен в репозиториях по умолчанию в Debian, Ubuntu и его производных. Чтобы установить dpkg-repack достаточно запустить следующую команду:
Как собрать Deb-пакет из установленной программы с помощью dpkg-repack
В качестве примера будет собран deb-пакет стабильной версии браузера Opera.
Я мог бы скачать deb-пакет браузера, но именно в данном случае, имею ввиду в случае с браузером Opera, мне гораздо удобнее будет собрать установочный, исправленный пакет. В браузере Opera есть известная проблема с воспроизведением HTML видео с помощью кодека H.264 (легко можно проверить при включении проигрывания прямых трансляций на Youtube). Проблема встречалась и в Яндекс.Браузере и когда-то в браузере Vivaldi. По этой причине было бы гораздо лучше иметь deb-пакет браузера Opera для Linux с решенной проблемой воспроизведения видео.
Перейдём к непосредственной сборке deb-пакета Opera-stable. Выполняем следующую команду:
Времени на сборку пакета ушло чуть меньше одной минуты. Собранный установочный пакет будет расположен в Домашней папке
В случае проблем, связанных с разрешениями попробуйте собрать пакет из среды fakeroot:
При этом при сборке другой программы я столкнулся с ошибкой “ предупреждение: неизвестное информационное поле «Original-Maintainer» во входных данных в элемент в файле состояния dpkg”, решить которую не получилось.
Просмотр содержимого deb-файла
Посмотреть содержимое установочного файла можно следующей командой:
Установить собранный пакет рекомендую либо с помощью утилиты Gdebi, либо консольным вариантом:
Для решения возможных проблем с зависимостями стоит воспользоваться следующей командой:
Для более подробной информации по работает с утилитой dpkg-repack обратитесь к справочным страницам:
Пользователи операционных систем Debian, Ubuntu и производных, если у вас не установлена версия браузера Opera с исправлением проблемы воспроизведения видео, то было бы интересно узнать ваш опыт проверки исправленной версии браузера. Скачать можно по ссылке: opera-stable_69.0.3686.36_amd64.deb
Установка deb пакетов в Ubuntu
Нередко возникает необходимость поставить программу, для которой уже есть собранные deb пакеты в интернете. Это может быть какая-нибудь не очень популярная программа или даже драйвера, которые вы скачали и хотите установить на компьютер где нет сети. На компьютере без сети установка программ с флешки ubuntu может стать единственным решением. В этой статье будет рассмотрена установка deb пакетов в ubuntu. Мы рассмотрим где их взять и как установить deb в ubuntu.
Где взять deb пакеты?
Дальше выбираем архитектуру:
И осталось получить deb файл для нашей системы:
Если у вас есть другой компьютер с интернетом или вы планируете устанавливать программы потом, а сейчас нужно только скачать deb пакеты, то это можно сделать с помощью apt:
apt download имя_пакета
Пакет будет сохранен в текущей папке и дальше вы сможете все без проблем установить. Но будет скачан только сам пакет, без его зависимостей. Зависимости мы можем получить только в системе с интернетом используя команду apt-rdepends:
Теперь у вас есть не только пакет, но и все его зависимости.
Установка deb пакетов Ubuntu
Установить Deb пакет Ubuntu не так уж сложно, для этого даже есть несколько утилит. Можно устанавливать как с помощью графического интерфейса, так и в терминале.
Выполните двойной клик по deb пакету, далее откроется центр приложений, где вы посмотреть информацию о пакете и запустить установку нажав кнопку установить.
sudo apt-get install gdebi
Теперь кликаем правой кнопкой мыши по файлу, выбираем открыть с помощью и gdebi:
Дальше осталось нажать кнопку установить и дождаться завершения установки пакета ubuntu. Программа автоматически установит все зависимости, если есть доступ к сети.
Установка deb из консоли Ubuntu выполняется не намного сложнее. Для этого используется утилита dpkg. Сначала переходим в папку куда был загружен deb пакет:
Для этой команды доступны символы сокращений, например, можно написать вот так, чтобы установить все deb пакеты из этой директории:
Программа не умеет разрешать зависимости, даже если есть доступ к сети, она только устанавливает пакет, поэтому для установки зависимостей после установки deb ubuntu выполните:
Теперь, когда зависимости были загружены, вы можете запускать и использовать программу.
Это не единственный способ установки пакетов ubuntu через терминал, утилиту gdebi тоже можно запустить таким способом:
sudo gdebi имя_пакета.deb
Возможно, вы не знали, но apt тоже умеет устанавливать deb пакеты и даже более чем успешно разрешает зависимости. Только утилите нужно передать полный путь к файлу для установки. Если вы находитесь в папке с deb пакетом выполните:
Программа автоматически установит все зависимости и больше ничего не придется выполнять.
Выводы
Вот и все. Теперь установка deb пакетов в Ubuntu не вызовет у вас проблем. Оказывается, есть несколько способов установки программ в ubuntu и все они имеют свои преимущества. Если у вас остались вопросы, спрашивайте в комментариях!
Типичный способ установки пакета из файла DEB:
С помощью этих команд устанавливаются пакеты из стандартных репозиториев — это самый надёжный способ в том плане, что для устанавливаемого пакету будут установлены зависимости и в будущем этот пакет будет обновляться вместе с другими программами в системе. То есть установка из стандартных репозиториев является приоритетной.
Установка без учёта зависимостей
Следующая команда установит пакет без проверки зависимостей:
При выполнении операции менеджером пакетов, например, обновление кэша:
может возникнуть сообщение об отсутствующих зависимостях, исправить это можно командой:
Установка DEB файла с помощью apt
Программа apt также умеет устанавливать пакеты из указанных файлов, при этом одновременно будут установлены необходимые зависимости для этого пакета:
Установка пакетов с помощью gdebi
Вы можете установить программу gdebi:
И затем устанавливать пакеты с помощью неё:
gdebi также установит необходимые зависимости. На самом деле, gdebi появилась когда apt-get не могла устанавливать локальные файлы (или эта возможность не была документирована), сейчас же вместо gdebi можно использовать apt, которая предустановлена в каждом дистрибутиве, основанном на Debian.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
.deb — расширение имён файлов «бинарных» пакетов для распространения и установки программного обеспечения в ОС проекта Debian, и других, использующих систему управления пакетами dpkg. Deb — это часть слова Debian, в свою очередь, образованного от слов Debra — имени подруги (впоследствии — жены, ныне — бывшей) основателя Дебиана Яна Мердока и Ian от его собственного имени.
Содержание
Формат
Старый формат (до версии Debian 0.93)
deb-файл в старом формате представляет собой две строки ASCII-текста, за которыми следуют два сцепленных архива формата tar.gz. Первая строка содержит номер версии формата, дополненный до 8 цифр (0,939000 для всех старых форматов). Вторая строка содержит десятичную строку (без начальных нулей), определяющую длину первого архива формата tar.gz. Каждая из этих строк завершается одним символом новой строки. [Источник 1]
Новый (текущий) формат (с версии Debian 0.93)
Начиная с Debian версии 0.93, deb файл представляет собой архив формата ar.
Обычно архив содержит 3 файла в нижеприведенной последовательности:
Сontrol.tar
Архив содержит набор файлов:
Программное обеспечение
Стандартная программа для управления этими пакетами — dpkg, часто используемая с помощью apt и aptitude.
Deb-пакеты могут быть преобразованы в другие пакеты, и наоборот, с помощью программы alien.
Создают пакеты deb обычно с помощью утилит dpkg — в частности, dpkg-buildpackage. Основы создания пакетов описаны в Руководстве нового сопровождающего Debian и Справочнике разработчика Debian. [Источник 3]
Совсем простые, но малопригодные для серьёзного сопровождения пакеты можно создавать с помощью программы CheckInstall.
Установка с использованием командной строки
Установка из командной строки позволяет получить больше информации о процессе установки и позволяет гибко его настраивать, хотя и может показаться неудобной начинающему пользователю. Запустите терминал. Обновить данные о доступных в репозиториях программах можно командой:
По запросу введите пароль. Учтите, что при вводе в терминале пароль не отображается, ни звёздочками, ни кружками, никак. Это нормально. Для установки нужной программы введите команду:
Если нужно установить несколько программ, то их можно перечислить через пробел, например:
К сожалению не все программы входят в основные репозитории Ubuntu. Поэтому вам придется вручную подключать необходимые репозитории с нужными вам программами или пакетами, для этого вы можете воспользоваться статьей: Подключение репозитория. Или же попытаться найти необходимую информацию по установке, на официальном сайте программы.
Для поиска программы в списке доступных пакетов воспользуйтеcь командами:
Разновидности
Именование пакетов
Структура имени пакетов такова: имя-дополнение-версия_архитектура.deb
Описание процесса сборки пакета deb
Данная инструкция является шпаргалкой по сборке пакетов для deb-систем (Debian, Ubuntu, Mint и так далее). Мы рассмотрим пример работы с исходниками nginx, а также разберем подробнее опции, которые можно задействовать при сборке. На практике, данное действие не имеет смысла, так как уже собранный nginx можно получить на сайте разработчика или в репозитории системы, но для нас важно понять процесс сборки, после чего можно будет применить данные знания для своих проектов.
Подготовка системы
Процесс сборки требует установки дополнительных компонентов, что приводит к скоплению мусора из ненужных пакетов. Рекомендуется делать сборку на отдельном компьютере или в контейнере Docker. Подробнее об установке последнего в инструкции Установка Docker на Linux.
Независимо от среды, в которой мы будем собирать пакеты, необходимо выполнить предварительные настройки.
1. Установка пакетов:
apt-get install dpkg-dev devscripts wget
2. Создание пользователя.
Делать готовые установочные сборки пакетов очень опасно от пользователя root. Если мы допустим ошибку с путями, файлы могут перетереть или удалить важные для работы директории. Стоит создать отдельного пользователя и работать под ним. Однако, если мы работаем в специальной виртуальной среде или контейнере Docker, нам это не страшно. Тогда данный пункт можно пропустить и работать из-под root.
* в данном примере мы создадим пользователя builder. Опция -m сразу создаст домашний каталог для пользователя.
Теперь заходим под данным пользователем — последующие команды мы будем выполнять от него:
3. Создадим каталог, в котором будет происходит сборка:
Перейдем в debbuild:
Мы готовы к сборке.
Сборка из исходников
Рассмотрим каждый из этапов подробнее.
Подготовка
Создадим каталог с названием собираемого приложения (с учетом версии):
* в нем обязательно каталог debian.
Перейдем в созданный каталог:
Теперь создадим несколько важных файлов.
Создание файлов сборки (основные)
Для выполнения сборки нужно создать, минимум, 4 файла.
1. Control-файл.
Это основной файл с описанием процесса сборки. Вводим:
Пример для нашего случая:
Source: nginx
Section: misc
Priority: optional
Maintainer: Dmitriy Moks
Build-Depends: libpcre3-dev,
zlib1g-dev
Standards-Version: 1.20.1
Homepage: https://nginx.org
Package: nginx
Architecture: amd64
Provides: nginx
Description: NGINX packages.
The description can be written in several lines.
Each line have to be 73 chars maximum.
* значения для опции Build-Depends задаются экспериментально — лучше всего попробовать сначала собрать требуемый пакет вручную, чтобы понять, какие потребуется доустановить пакеты. Рекомендуется это делать на чистой системе, чтобы не получить искаженный результат (на используемой системе уже могут быть пакеты, которых не будет на другом компьютере, где будет происходить сборка).
* более подробное описание файла control представлено ниже.
2. Файл changelog.
В данном файле описывается история изменений пакета. Также сборщик берет из этого файла номер версии и релиза.
Создаем файл командой:
nginx (1.20.1) stable; urgency=medium
* Initial release
— Dmitriy Mosk Tue, 03 Aug 2021 17:34:42 +0300
* в файле указано, что первые изменения внес Dmitriy Mosk 03 августа. Для начала сборки этого будет достаточно. Описание ниже.
3. Файл rules.
Описываем правила компиляции пакета во время его сборки. Создаем файл:
* важно обратить внимание на факт, что содержимое файла может сильно отличаться в зависимости от того, что мы собираем и какой версии собираемое программное обеспечение. В данном примере мы создали файл для независимой работы — сборщик сам скачает исходник и распакует его в рабочий каталог (в данном примере, nginx). Также мне пришлось переопределить этап dh_usrlocal, так как на нем возникала ошибка, связанная с невозможностью удалить каталог командой rmdir.
* в нашей системе должен быть установлен wget, как и все остальные утилиты, которыми мы захотим воспользоваться.
* более подробное описание файла rules ниже.
4. Файл compat.
Указываем на уровень совместимости с debhelper (вспомогательный инструмент для сборки пакетов). Создаем файл:
* на момент обновления инструкции рекомендовано использовать версию не ниже 9. Сама по себе сборка без данного файла (или при указании версии ниже 9) запустится, но быстро остановится с ошибкой dh_auto_clean: Compatibility levels before 9 are deprecated (level X in use), где Х — текущий уровень совместимости.
Дополнительные файлы сборки
Данные файлы не являются обязательными. Они могут увеличить возможности собираемого пакета, а также нужны для нашего удобства.
1. Файл postinst.
Является скриптом, который будет запущен после установки пакета на целевой системе. Любые постинсталляционные настройки можно выполнить с его помощью, например:
#!/bin/sh
# postinst script for dmosk
#
# see: dh_installdeb(1)
Может быть использован более сложный сценарий с обработкой аргументов, например:
*)
echo «postinst called with unknown argument \`$1′» >&2
exit 1
;;
esac
2. Файл postrm.
Это скрипт, который выполнится после удаления пакета:
#!/bin/sh
# postrm script for dmosk
#
# see: dh_installdeb(1)
* в данном примере мы предположили, что после удаления нужно удалить 2 каталога /var/log/app и /opt/app/test.
3. Файл preinst.
Скрипт выполнения перед установкой пакета.
4. Файл prerm.
Скрипт выполнения перед удалением пакета.
Сборка пакета
У нас созданы все необходимые файлы, выполнены предварительные действия, и мы готовы к сборке.
Проверяем, что у нас установлены необходимые пакеты и, при необходимости, установим их:
* команда является частью пакета devscripts, который мы установили в начале инструкции. Она читает опцию Build-Depends файла control и устанавливает необходимые пакеты.
Выполним сборку командой:
Если мы все сделали правильно, в конце мы увидим что-то на подобие:
W: nginx: missing-depends-line
E: nginx: no-copyright-file
E: nginx: description-starts-with-package-name
E: nginx: dir-in-usr-local usr/local/nginx/
E: nginx: dir-in-usr-local usr/local/nginx/conf/
E: nginx: file-in-usr-local usr/local/nginx/conf/fastcgi.conf
W: nginx: file-in-unusual-dir usr/local/nginx/conf/fastcgi.conf
E: nginx: file-in-usr-local usr/local/nginx/conf/fastcgi.conf.default
W: nginx: file-in-unusual-dir usr/local/nginx/conf/fastcgi.conf.default
E: nginx: file-in-usr-local usr/local/nginx/conf/fastcgi_params
W: nginx: file-in-unusual-dir usr/local/nginx/conf/fastcgi_params
E: nginx: file-in-usr-local usr/local/nginx/conf/fastcgi_params.default
W: nginx: file-in-unusual-dir usr/local/nginx/conf/fastcgi_params.default
E: nginx: file-in-usr-local usr/local/nginx/conf/koi-utf
W: nginx: file-in-unusual-dir usr/local/nginx/conf/koi-utf
E: nginx: file-in-usr-local usr/local/nginx/conf/koi-win
W: nginx: file-in-unusual-dir usr/local/nginx/conf/koi-win
E: nginx: file-in-usr-local usr/local/nginx/conf/mime.types
W: nginx: file-in-unusual-dir usr/local/nginx/conf/mime.types
E: nginx: file-in-usr-local usr/local/nginx/conf/mime.types.default
W: nginx: file-in-unusual-dir usr/local/nginx/conf/mime.types.default
E: nginx: file-in-usr-local usr/local/nginx/conf/nginx.conf
W: nginx: file-in-unusual-dir usr/local/nginx/conf/nginx.conf
E: nginx: file-in-usr-local usr/local/nginx/conf/nginx.conf.default
W: nginx: file-in-unusual-dir usr/local/nginx/conf/nginx.conf.default
E: nginx: file-in-usr-local usr/local/nginx/conf/scgi_params
W: nginx: file-in-unusual-dir usr/local/nginx/conf/scgi_params
E: nginx: file-in-usr-local usr/local/nginx/conf/scgi_params.default
W: nginx: file-in-unusual-dir usr/local/nginx/conf/scgi_params.default
E: nginx: file-in-usr-local usr/local/nginx/conf/uwsgi_params
W: nginx: file-in-unusual-dir usr/local/nginx/conf/uwsgi_params
E: nginx: file-in-usr-local usr/local/nginx/conf/uwsgi_params.default
W: nginx: file-in-unusual-dir usr/local/nginx/conf/uwsgi_params.default
E: nginx: file-in-usr-local usr/local/nginx/conf/win-utf
W: nginx: file-in-unusual-dir usr/local/nginx/conf/win-utf
E: nginx: dir-in-usr-local usr/local/nginx/html/
E: nginx: file-in-usr-local usr/local/nginx/html/50x.html
W: nginx: file-in-unusual-dir usr/local/nginx/html/50x.html
E: nginx: file-in-usr-local usr/local/nginx/html/index.html
W: nginx: file-in-unusual-dir usr/local/nginx/html/index.html
E: nginx: dir-in-usr-local usr/local/nginx/logs/
E: nginx: dir-in-usr-local usr/local/nginx/sbin/
E: nginx: file-in-usr-local usr/local/nginx/sbin/nginx
W: nginx: file-in-unusual-dir usr/local/nginx/sbin/nginx
Finished running lintian.
Пакет сформирован и должен находится в директории на уровень ниже:
Среди списка файлов мы должны увидеть пакет с нашим названием:
nginx-1.20.1 nginx_1.20.1_amd64.build nginx_1.20.1_amd64.changes
nginx-dbgsym_1.20.1_amd64.deb nginx_1.20.1_amd64.buildinfo nginx_1.20.1_amd64.deb
Описание служебных файлов
Попробуем разобраться в синтаксисе обязательных файлов, которые мы создали для выполнения сборки.
Control
Данный файл содержит основную информацию о собираемом пакете. Рассмотрим по отдельности обязательные опции и дополнительные.
Основные (без которых сборщик вернет ошибку):
Опция | Описание | Пример |
---|---|---|
Source | Определяет имя пакета источника. | nginx |
Maintainer | Имя и адрес электронной почты сборщика пакета. | Dmitriy Moks |
Package | Имя собираемого пакета. | nginx |
Architecture | Архитектура собираемого пакета. | amd64 |
Дополнительные опции файла control:
Опция | Описание |
---|---|
Section | Классификация задачи, для которой может быть использовано приложение. Чаще всего применяются: misc, utils, net, mail, text, x11. Возможные значения: admin, base, comm, contrib, devel, doc, editors, electronics, embedded, games, gnome, graphics, hamradio, interpreters, kde, libs, libdevel, mail, math, misc, net, news, non-free, oldlibs, otherosfs, perl, python, science, shells, sound, tex, text, utils, web, x11. |
Priority | Определяет важность пакета для системы. Возможные варианты: required, standard, optional, extra, important. Влияет на поведение при удалении — например, пакет, отмеченный как required, не может быть удален. |
Build-Depends | Перечисляет список пакетов, которые требуются для сборки. Если в системе не будет перечисленных пакетов, сборщик вернет ошибку. Есть разные форматы записи, например: 1. Перечисляем зависимости: libpcre3-dev, zlib1g-dev 2. Используем логическое или: apache2 | httpd, php — в данном примере мы трубем, чтобы были установлены php и одни из веб-серверов (apache2 или httpd). 3. Указание версии: libpcre3-dev (= 13), zlib1g-dev (> 14), apache2 (>= 15), httpd ( — Josip Rodin Mon, 22 Mar 2010 00:37:31 +0100
|