Портал о бытовой технике

Чем открыть deb файл в linux. Чем открыть deb? Типы файлов DEB

В таблице ниже предоставляет полезную информацию о расширение файла.deb. Он отвечает на вопросы такие, как:

  • Что такое файл.deb ?
  • Какое программное обеспечение мне нужно открыть файл.deb ?
  • Как файл.deb быть открыты, отредактированы или напечатано?
  • Как конвертировать.deb файлов в другой формат?

Мы надеемся, что вы найдете на этой странице полезный и ценный ресурс!

1 расширений и 0 псевдонимы, найденных в базе данных

✅ Debian Package

Описание (на английском языке):
Deb ian packages are standard Unix archives that include two gzipped tar archives: one that holds the control information and another that contains the data.

MIME-тип: application/x-debian-package

Другие типы файлов могут также использовать расширение файла .deb .

🚫 Расширение файла.deb часто дается неправильно!

По данным Поиск на нашем сайте эти опечатки были наиболее распространенными в прошлом году:

eb , db , seb , feb , edb , dwb , drb , dev , deh , de , web , dbe , reb , eeb , dsb

Это возможно, что расширение имени файла указано неправильно?

Мы нашли следующие аналогичные расширений файлов в нашей базе данных:

🔴 Не удается открыть файл.deb?

Если дважды щелкнуть файл, чтобы открыть его, Windows проверяет расширение имени файла. Если Windows распознает расширение имени файла, файл открывается в программе, которая связана с этим расширением имени файла. Когда Windows не распознает расширение имени файла, появляется следующее сообщение:

Windows не удается открыть этот файл:

Пример.deb

Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать для его открытия...

Если вы не знаете как настроить сопоставления файлов .deb , проверьте .

🔴 Можно ли изменить расширение файлов?

Изменение имени файла расширение файла не является хорошей идеей. Когда вы меняете расширение файла, вы изменить способ программы на вашем компьютере чтения файла. Проблема заключается в том, что изменение расширения файла не изменяет формат файла.

Если у вас есть полезная информация о расширение файла .deb , !

🔴 Оцените нашу страницу DEB

Пожалуйста, помогите нам, оценив нашу страницу DEB в 5-звездочной рейтинговой системе ниже. (1 звезда плохая, 5 звезд отличная)

Приемы работы в Ubuntu.
Глава 6: Управление пакетами

Оригинал: "Ubuntu Hacks: Chapter 6 - Package Management"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: сентябрь 2010 г.

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

Управления пакетами в дистрибутивах, основанных на Debian, является очень мощным механизмом и экономит массу усилий, которые можно впустую потратить на поиск последних пакетов и отслеживания зависимостей. Возможностей автоматизированных средств, таких как apt-get , Synaptic и Adept, практически всегда хватает большинству пользователей, и вы должны, по мере возможности, пользоваться ими. Однако иногда возникают обстоятельства, когда вам может потребоваться непосредственно установить пакет .deb .

Предостережение. В Ubuntu используются автоматизированные средства установки пакетов по веской причине. С их помощью реализованы специальные средства защиты, обеспечивающих совместимость пакетов и наличие библиотек, если они необходимы пакетам. Если устанавливаете отдельно взятые файлы .deb (особенно те, которые не упакованы для конкретной версии Ubuntu), вы не только теряете всю массу этих преимуществ, вы также можете из-за несовместимости библиотек вывести из строя отдельные части системы, перезаписать файлы, от которых зависят другие программы Ubuntu, или добавить уникальные версии, которые усложнят обновление вашей системы в процессе ее эксплуатации. Перед тем, как устанавливать отдельный пакет .deb , особенно если вы новичок в Ubuntu, пожалуйста, изучите все другие возможности установки, в том числе использование репозитариев universe и multiverse [Совет # 60 ]. Вы создали свое собственное ядро "в стиле Ubuntu" Если вы с помощью утилиты make-kpkg откомпилировали из исходного кода свое собственное ядро, вы в итоге должны получить пакет .deb , в котором будет находиться двоичный код ядра, и файлы .deb для любого дополнительного модуля, которые вы, возможно, соберете (конкретные шаги этой процедуры описаны в разделе "Сборка ядер в стиле Ubuntu" [Совет # 78 ]). Вы откомпилировали свой собственный пакет из исходных кодов Ubuntu Как и при компиляции ядра, вы компилировали исходный код Ubuntu при помощи утилиты dpkg , и, в конечном счете, вы получили отдельный файл .deb , который вам нужно установить вручную. Вы хотите вернуться к старой версии программы Такая ситуация может возникнуть, в частности, в случае, если вы используете релиз Ubuntu, предназначенный для разработчиков. Иногда последних версиях релизов, предназначенных для разработчиков, имеются ошибки. В этим случае вам может потребоваться вернуться к предыдущей версии пакета. Один из самых простых способов сделать это состоит в нахождении более старой версии пакета .deb (возможно, в вашем локальном кэше пакетов в /var/cache/apt/archives/ ) и установке его вручную. Программа, которую вы хотите установить, имеет расширение.deb, но ее нет в репозитариях Ubuntu Могут возникнуть обстоятельства, при которых в репозитариях Ubuntu отсутствует пакет .deb , который вы хотите установить, поскольку это более новый пакет, чем тот, что предлагает Ubuntu, поскольку вы нашли более универсальный вариант файла .deb , или третья сторона предоставила файл .deb для Ubuntu, но еще не создала свой собственный репозитарий пакетов (например, как веб браузер Opera Web в его текущем варианте пакета).

Подсказка

Если вы нашли программу, упакованную в формате.deb, то в девяти случаях из десяти есть большая вероятность, что эта программа уже есть в одном из репозитариев Ubuntu. Подробности о дополнительных репозитариях, которые предоставляются Ubuntu и третьими сторонами, смотрите в разделе "Изменение списка репозитариев пакетов" [Совет # 60 ].

Программа, которую вы устанавливали или обновляли, была установлена не полностью из-за того, что есть другой установленный пакет, в котором имеются такие же файлы В сравнительно редких случаях мы сталкивались с ситуациями, когда в двух пакетах используются одинаковые файлы и когда один из них обновляется, выдается сообщение об ошибке, свидетельствующее о том, что делается попытка переписать файлы из другого пакета. В этих случаях вам необходимо с помощью утилиты dpkg вручную установить этот пакет, используя параметр --force .

Установка файла.deb

Всякий раз, когда вам, независимо от причины, требуется установить файл .de b, нужно обратиться к утилите dpkg . Утилита dpkg является инструментом, который в дистрибутивах, базирующихся на Debian, используется для установки файлов .deb . (Даже когда вы пользуетесь автоматическими средствами управления пакетами, на самом деле за кулисами в системе для установки пакетов используется dpkg ). Если вы знакомы с инструментальным средством rpm , используемых в дистрибутивах, базирующихся на пакетах RPM, то обнаружите, что у dpkg похожий синтаксис. Чтобы установить из командной строки обычный файл .deb , наберите следующее:

Whiprush@ubuntu:~$ sudo dpkg -i packagename.deb

Замените packagename.deb на имя файла .deb , который вы хотите установить. Если у вас есть несколько файлов, которые вы хотите одновременно установить, вы можете в командной строке перечислить их один за другим

Whiprush@ubuntu:~$ sudo dpkg -i package1.deb package2.deb package3.deb

или используйте универсальный символ [Совет # 13 ], чтобы установить все файлы.deb, которые есть в текущем каталоге:

Whiprush@ubuntu:~$ sudo dpkg -i *.deb

Утилита dpkg также имеет параметр, задающий рекурсивное исполнение (-R). Если у вас есть директорий, заполненный файлами deb, вы можете установить их следующим образом:

Whiprush@ubuntu:~$ sudo dpkg -i -R /path/to/directory

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

Иногда, когда вы устанавливаете пакет с помощью утилиты dpkg , установка может прерваться из-за того, пакет помечен как hold , поскольку он конфликтует с другим пакетом, или он зависит от других пакетов, которые не установлены, или при установке пакета делается попытка переписать файлы, относящиеся к другому пакету, или по ряду других причин. В dpkg есть ряд параметров --force , которые вы можете использовать для того, чтобы игнорировать эти проблемы и продолжить установку пакета.

Предостережение

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

Чтобы посмотреть полный список параметров --force , наберите следующее:

Whiprush@ubuntu:~$ dpkg --force-help

К числу наиболее полезных параметров относятся следующие:

Установка пакета, даже если он отмечен как hold .

Force-overwrite

Установка пакета, даже если он может переписать файлы из другого пакета.

Выдать список ошибок об отсутствующих зависимостях и в любом случае продолжить установку.

Force-conflicts

Даже если пакет конфликтует с другим пакетом, в любом случае продолжить установку.

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

Whiprush@ubuntu:~$ sudo dpkg -i --force-overwrite packagename.deb

Удаление пакета

Иногда вам может потребоваться удалить отдельный пакет вручную. В dpkg есть параметры -r и -P , предназначенные для удаления пакета и удаления пакета с очисткой конфигурационных файлов, соответственно. Чтобы удалить пакет, введите:

Whiprush@ubuntu:~$ sudo dpkg -r packagename

Обратите внимание, что вы не указываете расширение .deb в имени файла, который вы, возможно, перед этим устанавливали, - только имя самого пакета. Когда указывается параметр -r , dpkg будет искать и удалять все файлы этого пакета, кроме конфигурационных файлов, которые будут оставлены на случай, если программа будет устанавливаться еще раз. Если вы хотите очистить систему от всех файлов, включая конфигурационные файлы, используйте параметр -P:

Whiprush@ubuntu:~$ sudo dpkg -P packagename

Даже если вы новичок в Linux и работаете с ним совсем не долго, вы знаете, что самый распространенный способ установки программ в дистрибутивах, основанных на данном ядре, это установка из репозиториев. Однако, бывают случаи, когда это невозможно, а нужная программа распространяется в виде пакета rpm или deb. И поскольку более распространенными на сегодняшний день являются дистрибутивы, основанные на Debian (Ubuntu, Elementary OS, Linux Mint и т.п), в которых используются deb пакеты, рассмотрим как устанавливать именно их.

Установка deb пакета в Ubuntu

В Ubuntu установить deb пакет можно через Центр приложений:

  • скачайте нужный файл;
  • кликните по нему два раза левой клавишей мыши;
  • в открывшемся Центре Приложений выберите «Установить».

Установка deb пакета через терминал

Как всегда, самый простой и универсальный способ как для настройки Linux, так и установки deb пакетов в частности, это терминал. Чтобы установить deb пакет через терминал достаточно выполнить несколько команд. Рассмотрим на примере установки Google Chrome:

  • естественно, сначала скачиваем сам пакет;
  • дальше открываем терминал и переходим в каталог с файлом, поскольку чаще всего это «Загрузки», то команда будет выглядеть так: cd ~/Загрузки/
  • и выполняем установку при помощи пакетного менеджера dpkg: sudo dpkg -i google-chrome-stable_current_i386.deb
  • вводим пароль суперпользователя и ждем окончания установки.

То есть, для установки deb пакета через терминал нужно использовать конструкцию:

Sudo dpkg -i имя_пакета.deb Предыдущая запись

Мы надеемся, что помогли Вам решить проблему с файлом DEB. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.

Что еще может вызвать проблемы?

Поводов того, что Вы не можете открыть файл DEB может быть больше (не только отсутствие соответствующего приложения).
Во-первых - файл DEB может быть неправильно связан (несовместим) с установленным приложением для его обслуживания. В таком случае Вам необходимо самостоятельно изменить эту связь. С этой целью нажмите правую кнопку мышки на файле DEB, который Вы хотите редактировать, нажмите опцию "Открыть с помощью" а затем выберите из списка программу, которую Вы установили. После такого действия, проблемы с открытием файла DEB должны полностью исчезнуть.
Во вторых - файл, который Вы хотите открыть может быть просто поврежден. В таком случае лучше всего будет найти новую его версию, или скачать его повторно с того же источника (возможно по какому-то поводу в предыдущей сессии скачивание файла DEB не закончилось и он не может быть правильно открыт).

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла DEB мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся и отправьте нам свою информацию о файле DEB.

Чтобы начать создавать deb пакеты, нужно установить несколько пакетов:

$ sudo apt-get install dh_make

Подготовка папки с исходниками

Для того, чтобы dh_make и другие утилиты могли работать с папкой с исходниками, нужно привести ее в специфичный вид.

Папка должна называться имяпакета-версия . Т.е. если у меня есть папка Plugins с программой версии 0.1, то я создаю папку с именем plugins-0.1 .

$ ls VKSPlugins $ mv VKSPlugins/ libvksplugins-0.1 $ ls libvksplugins-0.1
Теперь нужно создать архив с этой папкой. Архив должен содержать в имени *.orig.tar.gz , т.е.:

$ tar -zcf libvksplugins_0.1.orig.tar.gz libvksplugins-0.1 $ ls libvksplugins-0.1 libvksplugins_0.1.orig.tar.gz
Последний подготовительный шаг, это создание в папке с исходниками папки debian со множеством служебных файлов. Чтобы это сделать, нужно выполнить команду:

$ cd libvksplugins-0.1/ $ dh_make Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch? l Maintainer name: User Name Email-Address: [email protected] Date: Wed, 19 Aug 2015 14:55:53 +0300 Package Name: libvksplugins Version: 0.1 License: blank Type of Package: Single Hit to confirm: Skipping creating ../libvksplugins_0.1.orig.tar.gz because it already exists Done. Please edit the files in the debian/ subdirectory now. plugins uses a configure script, so you probably don’t have to edit the Makefiles.
В процессе выполнения этой команды будет задан вопрос о том, какой тип архива мы создаем, самый простой это single.

О типе пакета

На самом деле документация говорит, выбирать вариант только single . Т.к. я не смог понять всех требований к пакету типа library но меня вполне устраивает результат, то описание и дальше пойдет про пакет типа library .

Настройка пакета

Вся настройка пакета происходит путем редактирования файлов в каталоге debian . Рассмотрим те файлы, которые будем использовать:
  • changelog - история пакета.
  • control - главный конфиг пакета;
  • rules - аналог Makefile для пакета;
Кроме этих файлов, в папке debian будет создано много файлов *.ex которые являются примерами для конфигурации различных вещей, но мы не будем их использовать и поэтому их нужно удалить.

changelog

Данный файл содержит историю изменения пакета и текущую версию пакета. Посмотрим на его содержимое:

$ cat changelog libvksplugins (0.1-1) unstable; urgency=low * Initial release (Closes: #nnnn) -- User Name Wed, 19 Aug 2015 15:03:51 +0300
В начале идет название пакета - libvksplugins , затем его версия. Версия делиться на две части символом «-». Первая часть показывает версию программы в пакете, вторая «ревизию» пакета. Ревизия это версия пакета, т.е. если раньше такого пакета не было, то ревизия равна 1. Если же пакет с такой версией программы уже был, но в нем произошли изменения, то ревизия увеличивается.

Слово unstable показывает, что пакет является не стабильным, т.е. он не был протестирован должным образом на машинах пользователей.

Надпись urgency=low показывает срочность изменения. Т.к. срочности нет, то значение равно low . Если бы, мы делали пакет для исправления серьезной уязвимости или ошибки, то значение можно было бы установить в high .

После первой строки идет пустая строка, а за ней первая запись:

* Initial release (Closes: #nnnn)
В Debian, changelog используется для автоматического закрытия ошибок в системах отслеживания ошибок в программных продуктах. Т.к. в данном случае, я не использую такую систему, то эта строка принимает вид:

* Initial release

Замечание

При проверке пакета программой lintian , отсутствие Closes: #XXXX считается ошибкой.


Последняя строка является подписью человека, сделавшего запись. В ней содержится имя и адрес, а также дата изменения.

После установки deb пакета, файл changelog устанавливается в

/usr/share/doc/<пакет>/changelog.Debian.gz

control

Файл debian/control является главным конфигом, при создании deb пакета. Вот пример такого файла:

$ cat control Source: libvksplugins Priority: optional Maintainer: User Name Build-Depends: debhelper (>= 9), cmake Standards-Version: 3.9.5 Section: libs Homepage: #Vcs-Git: git://anonscm.debian.org/collab-maint/plugins.git #Vcs-Browser: http://anonscm.debian.org/?p=collab-maint/plugins.git;a=summary Package: libvksplugins-dev Section: libdevel Architecture: any Depends: libvkspluginsBROKEN (= ${binary:Version}), ${misc:Depends} Description: Package: libvkspluginsBROKEN Architecture: any Description:
Видно, что файл разбит на секции при помощи пустых строк. Каждая секция описывает один пакет, создаваемый из папки с исходниками. Рассмотрим их по порядку:

Source Данная секция говорит о том, что нужно создать пакет исходных кодов. Параметром указано libvksplugins , это значит, что пакет исходных кодов будет называться libvksplugins .

Priority Эта секция устанавливает приоритет пакета. Т.к. система может прекрасно обойтись без нового пакета, то значение секции установлено в optional . Т.е. этот пакет не обязателен для установки. Подробнее о приоритетах написано .

Maintainer Эта секция описывает контакты человека, создающего пакет. Ее формат довольно прост и дополнительного описание не требует.

Build-Depends Одна из самых важных секций, устанавливающая зависимости пакета. Зависимости, указанные в данной секции должны быть выполнены, чтобы можно было собрать пакет. Т.е. список зависимостей для сборки и установки могут отличаться.

Видно, что в зависимостях стоят debhelper (>= 9), cmake . Зависимость debhelper (>= 9) ставиться для всех пакетов по умолчанию. Она нужна для корректной работы программ вида dh_* .

Второй элемент cmake был добавлен потому, что папка с исходниками содержала файл CMakeLists.txt , т.е. для сборки используется система сборки CMake . Для того, чтобы узнать, какие зависимости есть у программы, можно почитать ее документацию. Кроме этого, можно воспользоваться командой dpkg-depcheck . Данная команда должна запускаться так:

$ dpkg-depcheck -d ./configure
Но, т.к. при использовании CMake нет скрипта конфигурирования, то я использую ее так:

$ mkdir build && cd build $ dpkg-depcheck -d cmake ../ ..... Packages needed: libxml2:amd64 cmake libkrb5support0:amd64 language-pack-ru-base libnettle4:amd64 ..... libedit2:amd64 libtasn1-6:amd64 qt4-qmake libgssapi-krb5-2:amd64 libhcrypto4-heimdal:amd64 ..... libroken18-heimdal:amd64 libsqlite3-0:amd64 libqt4-dev libssl1.0.0:amd64 .....
Из примечательных тут можно отметить:

Cmake
qt4-qmake
libqt4-dev

Остальные являются зависимостями данных. Причем, cmake уже есть в списке зависимостей сборки. В принципе, можно его оставить как есть или указать используемую версию:

$ apt-cache show cmake | grep Version: Version: 2.8.12.2-0ubuntu6
При этом в CMakeLists.txt указана версия cmake, которую нужно использовать:

$ cat CMakeLists.txt | grep cmake_minimum cmake_minimum_required(VERSION 2.8.4)
Я думаю, что разработчику виднее, и поэтому указываю версию из CMakeLists.txt. Для Qt 4 все понятно с номерами версий, но для очистки совести проверим и их версии:

$ apt-cache show qt4-qmake | grep Version: Version: 4:4.8.6+git49-gbc62005+dfsg-1ubuntu1.1 Version: 4:4.8.6+git49-gbc62005+dfsg-1ubuntu1 $ apt-cache show libqt4-dev | grep Version: Version: 4:4.8.6+git49-gbc62005+dfsg-1ubuntu1.1 Version: 4:4.8.6+git49-gbc62005+dfsg-1ubuntu1
Т.е. для Qt 4 указываем версию 4.8.6:

Build-Depends: debhelper (>= 9), cmake (>= 2.8.4), qt4-qmake (>= 4.8.6), libqt4-dev (>= 4.8.6)
Standards-Version Версия стандарта, в соответствии с которым создан файл. Это значение не нужно менять.

Section . Секция для пакета, т.е. группа пакетов, выполняющая одну задачу. В Политике Debian разделе 2.4 этот вопрос описан более подробно.

Homepage Домашняя страница проекта. Т.к. данный код писал я и у него нет страницы, просто удаляю эту строку.

Другие пакеты После секции файла, где описывается пакет с исходниками, идут секции, которые описывают другие пакеты, создаваемые из пакета с исходниками. Схема создания пакетов:

Из схемы видно, что из исходников программы, я хочу получить 4 пакета:

  • пакет с исходными кодами;
  • пакет с бинарником (самой библиотекой);
  • пакет для разработки (заголовочные файлы);
  • пакет с документацией.
Возникает вопрос, зачем так много пакетов? Ответов на него может быть несколько, если прочитать соответствующие обсуждения на stackoverflow.com то основная идея разбиения в том, что большинству пользователей не нужны заголовочные файлы и документация, поэтому разделение этих файлов способствует снижению нагрузки на сеть и скорости установки программ.

Мой персональный ответ на данный вопрос, заключается в том, что такое разбиение помогает структурировать программу по тому, как я хочу с ней работать. Для разработки я поставлю dev пакет, а для использования нет.

Кроме описанных выше пакетов, можно создать dbg пакет с отладочной сборкой программы. Это может пригодиться, если программа падает и у Вас есть под рукой отладчик. Однако, я так и не смог понять как это делать. Документация не дает ответа на этот вопрос. Если делать так как описано в ней, то я либо получаю пустой пакет либо получаю кучу ошибок при сборке.

Схема на рисунке выше показывает, что пакет с исходниками называется libvksplugins_source , однако, в файле control указано, что пакет с исходниками будет называться libvksplugins . На самом деле, он действительно будет называться libvksplugins , а пакет с бинарниками, будет называться libvksplugins… deb . Суть этой путаницы в том, что пакет с исходниками представляет собой tar архив и служебные файлы, тогда как пакет бинарников это архив с расширение deb.

Настройка пакета библиотеки Посмотрим внимательно на описание пакета библиотеки:

Package: libvksplugins
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Library for creating plugins with VKS 2
This library provides a mechanism for creating plugins
to use in project VKS 2.

Параметр Architecture устанавливает архитектуру собираемого пакета. Значение any означает, что после сборки бинарников нужная архитектура будет подставлена системой сборки. Т.е. на 64х битной машине, получится пакет ..._amd64... а на 32х битной пакет ..._i386... .

Для пакетов, содержащих скрипты или тексты, нужно указывать значение как all .

Третья строка, описывает зависимости создаваемого пакета. Вот как она описана в 4й главе Руководства начинающего разработчика Debian:

Утилита dh_shlibdeps вычисляет зависимости двоичного пакета от общих библиотек. Она генерирует список исполняемых файлов ELF и общих библиотек, которые находит для каждого двоичного пакета. Этот список подставляется вместо ${shlibs:Depends} .

Утилита dh_perl вычисляет зависимости Perl. Она генерирует список зависимостей от perl или perlapi для каждого двоичного пакета. Этот список подставляется вместо ${perl:Depends} .

Некоторые команды пакета debhelper могут добавлять зависимости к вашему генерируемому пакету. Каждая команда генерирует список необходимых пакетов для каждого двоичного пакета. Этот список подставляется вместо
${misc:Depends} .

Утилита dh_gencontrol генерирует файл DEBIAN/control для каждого двоичного пакета, заменяя ${shlibs:Depends} , ${perl:Depends} , ${misc:Depends} и т.д на полученные значения.


Т.е. эта строка говорит о том, что сборщик пакета сам определит зависимости.

Последний раздел данной секции это описание пакета. Первая строка содержит кратное описание, последующие строки содержат более подробное описание. Подробное описание, должно иметь определенный формат:

  • строка должна начинаться с пробела;
  • строка не должна быть длиннее 80 символов;
  • пустая строка должна начинаться с пробела и состоять из символа точки.
Настройка пакета заголовочных файлов Пакет с заголовочными файлами, будет называться libvksplugins-dev, вот его описание:

Package: libvksplugins-dev
Section: libdevel
Architecture: any
Depends: libvksplugins (= ${binary:Version}), ${misc:Depends}
Description: Development package for libvksplugins
This package provides development files for
library libvksplugins.
.
Also, it contains pkg-config file, to use.

В данном примере, интересна строка Depends . В ней указано, что данный пакет будет зависеть от пакета библиотеки libvksplugins , причем (= ${binary:Version} ) говорит о том, что необходимо строгое совпадение версий бинарного пакета и пакета разработчика. Это важный момент потому, что заголовочные файлы должны строго соответствовать бинарникам.

Настройка пакета документации Вместе с библиотекой поставляется документация, чтобы она была в отдельном пакете, добавляем его описание:

Package: libvksplugins-doc
Architecture: all
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Documentation for libvksplugins
Package contains html documentation files for libvksplugins

Тут должно быть все понятно.

rules

Данный файл является аналогом Makefile для сборки пакетов. По умолчанию, он создается в таком виде:

$ cat rules #!/usr/bin/make -f # See debhelper(7) (uncomment to enable) # output every command that modifies files on the build system. #DH_VERBOSE = 1 # see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk # see FEATURE AREAS in dpkg-buildflags(1) #export DEB_BUILD_MAINT_OPTIONS = hardening=+all # see ENVIRONMENT in dpkg-buildflags(1) # package maintainers to append CFLAGS #export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic # package maintainers to append LDFLAGS #export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed # main packaging script based on dh7 syntax %: dh $@ # debmake generated override targets # This is example for Cmake (See http://bugs.debian.org/641051) #override_dh_auto_configure: # dh_auto_configure -- \ # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
Видно, что это bash скрипт с синтаксисом Makefile. Единственная интересная конструкция здесь это

%: dh $@
Это шаблон, который для всех целей вызывает dh команду с передачей аргументов ей. Для сборки пакета важно, чтобы текст dh $@ начитался с символа табуляции. Т.е. отступ это не пробелы, а табуляция.

Т.к. исходники используют систему сборки CMake, то нужно изменить эту запись следующим образом:

%: dh $@ --buildsystem=cmake

Содержимое пакетов

После того, как мы указали в debian/control какие пакеты мы хотим получить, нужно указать какие файлы в какой пакет помещать. Для этого, для каждого названия пакета из файла control , нужно создать в папке debian два файла. Первый должен называться пакет.dirs , а второй пакет.install . Суть файлов в том, что первый указывает, какие папки нужно создать для пакета, а второй, какие файлы включить в пакет.

Посмотрим на их содержимое:

$ cat libvksplugins-dev.dirs usr/lib usr/include $ cat libvksplugins-dev.install usr/include/* usr/lib/lib*.a usr/lib/lib*.so usr/lib/pkgconfig/* usr/share/pkgconfig/*
Важный момент, отсутствие начальной дроби в путях и отсутствие дроби в конце пути к папке. Проверив, куда CMake устанавливает файлы библиотеки, можно сформировать такие файлы:

$ for item in $(ls libvksplugins*); do echo "$item:"; cat $item; done libvksplugins-dev.dirs: usr/include/dep572 usr/lib/pkgconfig libvksplugins-dev.install: usr/include/dep572/plugins/* usr/lib/dep572/lib*.so usr/lib/pkgconfig/* libvksplugins.dirs: usr/lib/dep572 libvksplugins-doc.dirs: usr/share/doc/libplugins-0.1 libvksplugins-doc.install: usr/share/doc/libplugins-0.1/*.tgz libvksplugins.install: usr/lib/dep572/lib*.so.*

Завершение настройки

Т.к. исходники мои, то никаких дополнительных описаний и ограничений copyright у меня нет, поэтому я удаляю все лишние файлы из каталога debian.

Сборка пакетов

После настройки, сборка пакетов происходит довольно просто, нужно в папке проекта (которая включает подпапку debian) выполнить команду:

$ dpkg-buildpackage -rfakeroot -us -uc
Параметры -us -uc говорят о том, что не нужно подписывать gpg ключом созданные пакеты. Их можно не использовать, если настроен ключ подписи gpg по умолчанию. Как указать ключ подписи по умолчанию, я тоже не понял. Если все прошло хорошо, то у нас поваляется набор пакетов в папке выше:

$ ls -l ../ итого 748 drwxrwxr-x 10 user user 4096 авг. 20 10:46 libvksplugins-0.1 -rw-rw-r-- 1 user user 2210 авг. 20 10:47 libvksplugins_0.1-1_amd64.changes -rw-r--r-- 1 user user 6418 авг. 20 10:47 libvksplugins_0.1-1_amd64.deb -rw-rw-r-- 1 user user 1504 авг. 20 10:46 libvksplugins_0.1-1.debian.tar.xz -rw-rw-r-- 1 user user 1008 авг. 20 10:46 libvksplugins_0.1-1.dsc -rw-rw-r-- 1 user user 36713 авг. 19 14:52 libvksplugins_0.1.orig.tar.gz -rw-r--r-- 1 user user 3262 авг. 20 10:47 libvksplugins-dev_0.1-1_amd64.deb -rw-r--r-- 1 user user 699564 авг. 20 10:47 libvksplugins-doc_0.1-1_all.deb

Заключение

Если вы дочитали до сюда - значит вы любите читать.

Этот текст является результатом моего опыта внедрения deb пакетов на работе. Опыт показал, что наличие сетевого репозитория (reprepro) и внимательное отслеживание версий, позволяют без проблем обновлять и тестировать различные версии ПО на парке из 30 машин с системами Astra Linux 1.3, 1.4 и Эльбрус ОС.

Загрузка...