Как открыть файл deb. Установка DEB-пакета в Ubuntu

deb - расширение имён файлов «бинарных» пакетов для распространения и установки программного обеспечения в ОС проекта Debian, и других, использующих систему управления пакетами dpkg. И сегодня мы посмотрим три инструмента командной строки, чтобы помочь вам установить локальный Debian пакет.

Если вы спрашиваете себя: “Как я могу установить Deb пакет в Ubuntu или Debian?”, То вы пришли в нужное место.

Вы можете щелкнуть правой кнопкой мыши на загруженном DEB пакете и выбрать установку из контекстного меню, но с помощью графического инсталлятора это будет очень медленно по сравнению с терминальными командами. Вот 3 различных инструмента командной строки, чтобы помочь вам установить Deb-пакеты. Они же Dpkg, Gdebi и APT.

Dpkg

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

Используйте dpkg для установки локального Debian пакета, как показано ниже.

Sudo dpkg -i версия_пакета.deb

Dpkg сам по себе не может решить проблему зависимостей, потому что он не понимает репозиториев. Но вы можете использовать следующую команду, чтобы решить эту проблему.

Sudo apt install -f

Установочный пакет Gdebi

Gdebi - программа для установки.deb пакетов, разработанная корпорацией Canonical специально для Ubuntu.

Gdebi не устанавливается по умолчанию в Ubuntu, так что вам нужно ее в первую очередь установить, для этого открываем терминал и пишем следующую строку.

Sudo apt install gdebi

Для установки локального deb-пакета используйте

Sudo gdebi версия_пакета.deb

Если есть проблема зависимостей, Gdebi автоматически установит их для вас, если конечно эти пакеты зависимостей доступны из репозитория программного обеспечения.

Apt

apt (advanced packaging tool ) - программа для установки, обновления и удаления программных пакетов в операционных системах Debian и основанных на них (Ubuntu, Linux Mint и т. п.), иногда также используется в дистрибутивах, основанных на Mandrake, например Mandriva, ALTLinux и PCLinuxOS. Способна автоматически устанавливать и настраивать программы для UNIX-подобных операционных систем как из предварительно откомпилированных пакетов, так и из исходных кодов.

Обычно вы будете использовать APT для установки пакетов из интернет-хранилищ программного обеспечения, как в этом примере:

Sudo apt install Firefox

Знаете ли вы, что он также может быть использован для установки локальных Deb пакетов? Это еще одна причина, почему вы должны использовать apt вместо apt-get, который не имеет такой возможности. Вам нужно просто перейти в каталог, где хранится deb-пакет и установите его, как показано на примере ниже.

Cd/путь/к/файлу/deb-пакеты/ sudo apt install ./версия_пакета.deb

Например, чтобы установить TeamViewer 12 в Ubuntu 16.04/16.10, сначала загрузите пакет TeamViewer.deb в текущий каталог

Wget https://downloadus1.teamviewer.com/download/version_12x/teamviewer_12.0.69753_i386.deb

Затем установите его с помощью:

Sudo apt install ./teamviewer_12.0.69753_i386.deb

Он автоматически устанавливает зависимости, если эти зависимости доступны из репозитория программного обеспечения.

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

Вот и все!

Я надеюсь, что этот пост помог вам установить локальные Debian пакеты из командной строки. Если вы нашли этот пост полезным, то пожалуйста поделитесь им в социальных сетях, а также можете подписаться на новые новости в правой части сайта.

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

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

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

Возможные проблемы с файлами в формате DEB

Отсутствие возможности открытия и работы с файлом DEB, совсем не должен значить, что мы не имеем установленного на своем компьютере соответствующего программного обеспечения. Могут выступать другие проблемы, которые также блокируют нам возможность работы с файлом Debian Linux Package Format. Ниже находится список возможных проблем.

  • Повреждение открываемого файла DEB.
  • Ошибочные связи файла DEB в записях реестра.
  • Случайное удаление описания расширения DEB из реестра Windows
  • Некомплектная установка аппликации, обслуживающей формат DEB
  • Открываемый файл DEB инфицирован нежелательным, вредным программным обеспечением.
  • На компьютере слишком мало места, чтобы открыть файл DEB.
  • Драйверы оборудования, используемого компьютером для открытия файла DEB неактуальные.

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

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

Universal Extractor – удобная утилита для распаковки различных архивов, а также некоторых дополнительных типов файлов. Данная программа, прежде всего, подходит тем пользователям, которые занимаются созданием архивов на компьютере, а лишь скачивают различные архивы из интернета, а затем распаковывают их. Утилита Universal Extractor вполне справляется с этой задачей. Она позволяет распаковать все известные архивы, а также файлы dll, exe, mdi и другие типы файлов. По сути, программа может служить, в некоторой степени, своеобразным установщиком программ, т.к. она позволяет распаковывать некоторые из установщиков, а затем запускать...

HaoZip - китайский клон популярного архиватора Winrar, как с точки зрения функциональности так и интерфейса в целом. Архиватор умеет работать со всеми популярными форматами, среди которых 7Z, ZIP, TAR, RAR, ISO, UDF, ACE, UUE, CAB, BZIP2, ARJ, JAR, LZH, RPM, Z, LZMA, NSIS, DEB, XAR, CPIO, SPLIT, WIM, IMG и другие. Кроме этого с помощью Haozip можно монтировать ISO образы и посмотреть картинки через встроенный просмотрщик, что весьма полезная фича для архиваторов. Что касается интерфейса, то здесь китайские разработчики хорошо потрудились. Они не только скопировали дизайн и функционал с архиватора Winrar, но и добави...

Peazip - универсальный и мощный архиватор с графической оболочкой. Отличная замена платному аналогу - Winrar. PeaZip поддерживает шифрование данных, создание многотомных архивов, работу с несколькими архивами одновременно, экспорт задания в виде командной строки, установку фильтров на содержимое архива. Кроме этого архиватор поддерживает все известные и даже неизвестные форматы архивов включая 7Z, 7Z-sfx, BZ2/TBZ2, GZ/TGZ, PAQ/LPAQ, TAR, UPX, ZIP и другие. Интерфейс PeaZip очень примитивен и в то же время насыщенна полезными функциями. Можно с помощью помощника интегрировать в проводник Windows или вернуть обратно, установ...

При разработке архиватора FreeArc автор решил создать программу, которая выполняет сжатие файлов с максимальной скоростью. Для этого потребовались лучшие качества библиотек сжатия LZMA, PPMD и GRZipLib. В процессе упаковки архиватор формирует файлы по типам и производит сжатие благодаря применению наиболее подходящего алгоритма. При работе архиватор использует более десяти различных алгоритмов и фильтров. Если сравнить это с распространёнными архиваторами, то у 7-zip всего три, а у RAR использует всего семь алгоритмов. Архиватор легко адаптируется для установки на различных системах. Он разработан на открытой платформе дающей в...

FileOptimizer – удобное приложение для сжатия файлов, созданное одной из независимых команд программистов. Данное приложение отличается улучшенными алгоритмами сжатия и высокой скоростью работы. Программа позволяет сжимать файлы практически всех типов, включая архивы, текстовые форматы, форматы изображений и т.п. Также, данная программа может работать со скриптами, а также через командную строку, что будет особенно полезно опытным пользователям. Для начинающих пользователей же, всё очень просто. Программа интегрируется в контекстное меню, что позволяет очень быстро сжимать файлы, находящиеся на любом диске и в любой папке.

TUGZip – удобный архиватор, имеющий понятный пользовательский интерфейс, а также обладающий рядом дополнительных возможностей. Программа TUGZip позволяет работать почти со всеми популярными архивами. Однако на этом возможности программы TUGZip не ограничиваются. Утилита TUGZip позволяет работать с образами оптических дисков, например, img, nrg, iso и т.п. Также, программа TUGZip может быть интегрирована в контекстное меню. Но если большинство архиваторов лишь добавляют в него подменю, то программа TUGZip может похвастаться возможностью использовать различные скрипты для автоматизирования процесса создания архивов, либо их распа...

7-Zip – известный архиватор с открытым исходным кодом. Такая особенность позволяет вносить изменения в структуру программы, добавляя в неё определённые функции. Программа отличается понятным и простым интерфейсом и обладает уникальными алгоритмами, позволяющими ускорить архивацию данных и их распаковку. Также, данная программа может выполнять стандартные операции с архивом, например, вы можете установить пароль на файл, либо установить степень сжатия архива. Также, если необходимо, вы можете создать самораспаковывающийся архив с необходимыми параметрами, которые задаются в специальных комментариях к архиву.

ExtractNow является удобной программой, позволяющей распаковать заархивированные файлы достаточно быстро: всего лишь нажатием одной кнопки. Особенно удобна такая опция покажется тем пользователям, которым регулярно приходится распаковывать множество файлов. Единственный минус - программа не поддерживает создание архивов, т.к. является исключительно распаковщиком (качественным и удобным), а не архиватором. Чтобы совершить распаковку файла, нужно перетащить архивы в окно программы и нажать кнопку Extract. Поддерживает популярные форматы архивов. Таким образом, программа может распаковать все популярные и наиболее часто использующ...

Simplyzip – удобный архиватор со всеми необходимыми функциями, которые использует большинство пользователей. Программа работает практически со всеми популярными форматами архивов, включая rar или zip. Тем не менее, из-за того, что разработчики программы winRar не разрешают использовать алгоритмы своего формата, архивы Rar можно только распаковывать или просматривать их содержимое. Однако программа Simplyzip поддерживает установку различных модулей и плагинов, которые могут расширить функционал данного архиватора. Если установить необходимый плагин, то программу можно научить создавать, как Rar архивы, так и архивы других формат...

Ashampoo ZIP - программа-архиватор, помогающая сжимать и хранить нужную информацию. Работает с множеством форматов, позволяя пользователям отправлять объемные документы в сжатом виде. Ashampoo ZIP имеет широкий набор различных функций. Посредством приложения можно создавать, распаковывать и разделять архивы. Помимо этого в программе поддерживается чтение, восстановление, шифрование, а также мгновенное конвертирование. Список форматов, которые поддерживаются Ashampoo ZIP довольно внушительный. Помимо создания архивов программа поддерживает распаковку документов более 30 различных архивных форматов.

IZArc – удобная программа для работы с архивами, отличающаяся понятным и простым интерфейсом, а также рядом дополнительных возможностей. Программа IZArc поддерживает огромное количество форматов, включая самые популярные rar и zip. Уникальные алгоритмы, используемые в программе, позволяют увеличить скорость работы с архивами. Однако главная особенность программы IZArc состоит в том, что она может легко конвертировать архивы из одного формата в другой. Это особенно необходимо, если вам нужно передать некоторые файлы другому пользователю, у которого нет соответствующего архиватора.Кроме того, программа IZArc позволяет просматрива...

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

Чтобы начать создавать 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 и Эльбрус ОС.

Даже если вы новичок в 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 Предыдущая запись