- Файлы формата DEB – как писать, редактировать и конвертировать файлы DEB
- Как открыть файл DEB
- Как конвертировать файл DEB
- DEB – Пакет программного обеспечения Debian (Debian Software Package)
- Расширение DEB
- Чем открыть файл DEB
- Описание расширения DEB
- [Технологии] Что такое DEB файл? Установка/удаление.
- Еще раз о deb пакетах
- Подготовка
- Подготовка папки с исходниками
- Настройка пакета
- changelog
- control
- rules
- Содержимое пакетов
- Завершение настройки
- Сборка пакетов
- Заключение
Файлы формата DEB – как писать, редактировать и конвертировать файлы DEB
Файл с расширением DEB является файлом пакета программного обеспечения Debian. Они используются, в основном, в операционных системах на основе Unix, включая Ubuntu.
Каждый файл DEB состоит из двух архивов TAR, которые составляют исполняемые файлы, документацию и библиотеки. Он может быть сжат или не сжат с использованием GZIP, BZIP2, LZMA или XZ.
Аналогично файлам DEB, файлы micro deb (.UDEB) содержат некоторую, но не всю информацию, аналогичную обычному файлу DEB.
Как открыть файл DEB
Открыть файл DEB можно с помощью любой популярной программы сжатия / распаковки, одним из примеров которой является бесплатный инструмент 7-Zip. Любой из этих типов программ распаковывает (извлекает) содержимое файла DEB, а некоторые создают сжатые файлы DEB.
Хотя некоторые из этих файловых инструментов сжатия/распаковки также будут работать на компьютерах с Linux, на самом деле они не устанавливают пакет, как вы ожидаете, – они просто извлекают содержимое архива.
Чтобы установить файлы DEB, используйте бесплатный инструмент gdebi, который позволяет щелкнуть правой кнопкой мыши файл .DEB и выбрать его в контекстном меню.
Хотя это и не так просто, как использовать gdebi, вы также можете установить DEB-файлы с помощью dpkg, используя командную строку (замените /path/to/file.deb на путь к вашему собственному файлу .DEB):
Несколько файлов DEB можно установить с помощью:
Удалить файлы DEB можно с помощью этой команды:
Если вы не можете открыть файл, возможно, вы путаете файл DEM с файлом DEB. Файл DEM, скорее всего, является либо демонстрационным файлом видеоигры, либо цифровой моделью.
Как конвертировать файл DEB
Бесплатный конвертер файлов, такой как FileZigZag может преобразовать файл DEB в файл другого формата, такого как TGZ, BZ2, BZIP2, 7Z, GZIP, TAR, TBZ, ZIP и др.
Преобразовать файл DEB в RPM можно с помощью этой команды:
DEB – Пакет программного обеспечения Debian (Debian Software Package)
Расширение DEB
Чем открыть файл DEB
В Windows: 7-Zip, WinArchiver, ZipZag, PeaZip
В Linux: Debian package management system, Synaptic Package Manager, Adept, GDebi, Alien
В Apple iOS (iPhone, iPad, iPod): Cydia, Jailbreak
Описание расширения DEB
Популярность:
Раздел: Архивы
Расширение DEB обычно используется для пакетов Debian. Пакеты Debian – это бинарные файлы, которые содержат выполняемые и конфигурационные файлы, номер версии формата, информацию об авторских правах, а также другую документацию, необходимую для установки программы из пакета. .DEB – это стандартный Unix архив AR, который содержит следующие файлы:
— debian-binary – версия формата deb файла. Для нового формата стоит «2.0»
— control.tar.gz – информация о пакете
— data.tar.gz или data.tar или data.tar.lzma или data.tar.bz2 – устанавливаемые файлы
DEB – это сокращение от Debian, что в свою очередь произошло от Debra – это имя подруги и от его собственного имени Ian (Ян Мердок).
Файл DEB используется в операционной системе Debian Linux и ее производных (Ubuntu, Edubuntu, Kubuntu, PCLinuxOS) в качестве основного источника инсталляционных пакетов.
Используйте терминал или инструмент управления программами в Linux, чтобы открыть или устанавить программу из пакета DEB. Чтобы установить *.DEB необходимо использовать терминал Linux и написать следующую команду:
Файлы DEB могут быть извлечены некоторыми архиваторами, такими как 7-Zip или конвертированы в другой пакет установки с помощью специализированных программ Linux, например, таких как alien. Создать файл deb можно с помощью утилит dpkg или dpkg-buildpackage.
Расширение .DEB так же связан с Cydia. Cydia является альтернативой официальной App Store в Iphone, Ipad и Ipod Touch. Cydia работает только на устройствах IOS, которые имеют Jailbreak.
iPhone Jailbreak (iOS Jailbreak) – это программа, которая удаляет официальное ограничение на IOS устройствах. Одним из таких ограничений является установка новых приложений только через Apple App Store.
Cydia использует собственный репозиторий приложений, которые содержат оба типа приложений – и бесплатные, и платные. Приложения в репозиториях Cydia не хранятся в виде файла приложения IPA, который использует App Store, а хранится в DEB-пакетах. Пакет прикладных программ DEB использует аналогичный формат файла как и пакеты DEB Debian.
Файлы приложения DEB так же установлены на Jailbreak iPhone (или другие устройства JB IOS) из Cydia через консоль SSH.
Если вы хотите установить DEB пакеты на ваш iPhone. Идите в папку /var/root/Media/Cydia/AutoInstall. Скопируйте туда файл .DEB и просто перезагрузите устройство IOS.
[Технологии] Что такое DEB файл? Установка/удаление.
Файл с DEB расширением является файлом программного обеспечения Debian . Они используются главным образом в операционных системах на базе Unix , включая Ubuntu и iOS.
Каждый файл DEB состоит из двух архивов TAR, которые составляют исполняемые файлы, документацию и библиотеки. Он может или не может быть сжат с использованием GZIP, BZIP2, LZMA или XZ.
Как открыть файл DEB
Файлы DEB можно открывать с помощью любой популярной программы сжатия/декомпрессии, в качестве примера можно использовать бесплатный инструмент 7-Zip . Любой из этих типов программ будет распаковывать (извлекать) содержимое файла DEB, а некоторые могут также иметь возможность создавать сжатые файлы DEB.
Хотя некоторые инструменты сжатия/декомпрессии будут работать и на машинах Linux, они фактически не устанавливают пакет, как вы ожидали бы от них, — они просто извлекают содержимое архива.
Чтобы установить файлы DEB, вы можете использовать бесплатный инструмент gdebi , который позволяет вам щелкнуть правой кнопкой мыши на файл .DEB и открыть его из контекстного меню.
Хотя это не так просто, как использование gdebi, но вы также можете установить файлы DEB с помощью dpkg и этой команды:
Несколько файлов DEB можно установить, используя:
dpkg -i -R /path/to/folder/with/deb/files/
Вы также можете удалить файлы DEB с помощью этой команды:
Еще раз о deb пакетах
Подготовка
Чтобы начать создавать deb пакеты, нужно установить несколько пакетов:
Подготовка папки с исходниками
Для того, чтобы dh_make и другие утилиты могли работать с папкой с исходниками, нужно привести ее в специфичный вид.
Папка должна называться имяпакета-версия. Т.е. если у меня есть папка Plugins с программой версии 0.1, то я создаю папку с именем plugins-0.1.
Теперь нужно создать архив с этой папкой. Архив должен содержать в имени *.orig.tar.gz, т.е.:
Последний подготовительный шаг, это создание в папке с исходниками папки debian со множеством служебных файлов. Чтобы это сделать, нужно выполнить команду:
В процессе выполнения этой команды будет задан вопрос о том, какой тип архива мы создаем, самый простой это single.
Настройка пакета
Вся настройка пакета происходит путем редактирования файлов в каталоге debian. Рассмотрим те файлы, которые будем использовать:
- changelog — история пакета.
- control — главный конфиг пакета;
- rules — аналог Makefile для пакета;
Кроме этих файлов, в папке debian будет создано много файлов *.ex которые являются примерами для конфигурации различных вещей, но мы не будем их использовать и поэтому их нужно удалить.
changelog
Данный файл содержит историю изменения пакета и текущую версию пакета. Посмотрим на его содержимое:
В начале идет название пакета — libvksplugins, затем его версия. Версия делиться на две части символом «-». Первая часть показывает версию программы в пакете, вторая «ревизию» пакета. Ревизия это версия пакета, т.е. если раньше такого пакета не было, то ревизия равна 1. Если же пакет с такой версией программы уже был, но в нем произошли изменения, то ревизия увеличивается.
Слово unstable показывает, что пакет является не стабильным, т.е. он не был протестирован должным образом на машинах пользователей.
Надпись urgency=low показывает срочность изменения. Т.к. срочности нет, то значение равно low. Если бы, мы делали пакет для исправления серьезной уязвимости или ошибки, то значение можно было бы установить в high.
После первой строки идет пустая строка, а за ней первая запись:
В Debian, changelog используется для автоматического закрытия ошибок в системах отслеживания ошибок в программных продуктах. Т.к. в данном случае, я не использую такую систему, то эта строка принимает вид:
Последняя строка является подписью человека, сделавшего запись. В ней содержится имя и адрес, а также дата изменения.
После установки deb пакета, файл changelog устанавливается в
control
Файл debian/control является главным конфигом, при создании deb пакета. Вот пример такого файла:
Видно, что файл разбит на секции при помощи пустых строк. Каждая секция описывает один пакет, создаваемый из папки с исходниками. Рассмотрим их по порядку:
Source Данная секция говорит о том, что нужно создать пакет исходных кодов. Параметром указано libvksplugins, это значит, что пакет исходных кодов будет называться libvksplugins.
Priority Эта секция устанавливает приоритет пакета. Т.к. система может прекрасно обойтись без нового пакета, то значение секции установлено в optional. Т.е. этот пакет не обязателен для установки. Подробнее о приоритетах написано здесь.
Maintainer Эта секция описывает контакты человека, создающего пакет. Ее формат довольно прост и дополнительного описание не требует.
Build-Depends Одна из самых важных секций, устанавливающая зависимости пакета. Зависимости, указанные в данной секции должны быть выполнены, чтобы можно было собрать пакет. Т.е. список зависимостей для сборки и установки могут отличаться.
Видно, что в зависимостях стоят debhelper (>= 9), cmake. Зависимость debhelper (>= 9) ставиться для всех пакетов по умолчанию. Она нужна для корректной работы программ вида dh_*.
Второй элемент cmake был добавлен потому, что папка с исходниками содержала файл CMakeLists.txt, т.е. для сборки используется система сборки CMake. Для того, чтобы узнать, какие зависимости есть у программы, можно почитать ее документацию. Кроме этого, можно воспользоваться командой dpkg-depcheck. Данная команда должна запускаться так:
Но, т.к. при использовании CMake нет скрипта конфигурирования, то я использую ее так:
Из примечательных тут можно отметить:
cmake
qt4-qmake
libqt4-dev
Остальные являются зависимостями данных. Причем, cmake уже есть в списке зависимостей сборки. В принципе, можно его оставить как есть или указать используемую версию:
При этом в CMakeLists.txt указана версия cmake, которую нужно использовать:
Я думаю, что разработчику виднее, и поэтому указываю версию из CMakeLists.txt. Для Qt 4 все понятно с номерами версий, но для очистки совести проверим и их версии:
Т.е. для Qt 4 указываем версию 4.8.6:
Standards-Version Версия стандарта, в соответствии с которым создан файл. Это значение не нужно менять.
Section. Секция для пакета, т.е. группа пакетов, выполняющая одну задачу. В Политике Debian разделе 2.4 этот вопрос описан более подробно.
Homepage Домашняя страница проекта. Т.к. данный код писал я и у него нет страницы, просто удаляю эту строку.
Vcs-* Ссылки на репозитории проекта. Их у меня тоже нет, поэтому удаляю эти строки.
Другие пакеты После секции файла, где описывается пакет с исходниками, идут секции, которые описывают другие пакеты, создаваемые из пакета с исходниками. Схема создания пакетов:
Из схемы видно, что из исходников программы, я хочу получить 4 пакета:
- пакет с исходными кодами;
- пакет с бинарником (самой библиотекой);
- пакет для разработки (заголовочные файлы);
- пакет с документацией.
Возникает вопрос, зачем так много пакетов? Ответов на него может быть несколько, если прочитать соответствующие обсуждения на stackoverflow.com то основная идея разбиения в том, что большинству пользователей не нужны заголовочные файлы и документация, поэтому разделение этих файлов способствует снижению нагрузки на сеть и скорости установки программ.
Мой персональный ответ на данный вопрос, заключается в том, что такое разбиение помогает структурировать программу по тому, как я хочу с ней работать. Для разработки я поставлю dev пакет, а для использования нет.
Кроме описанных выше пакетов, можно создать dbg пакет с отладочной сборкой программы. Это может пригодиться, если программа падает и у Вас есть под рукой отладчик. Однако, я так и не смог понять как это делать. Документация не дает ответа на этот вопрос. Если делать так как описано в ней, то я либо получаю пустой пакет либо получаю кучу ошибок при сборке.
Схема на рисунке выше показывает, что пакет с исходниками называется libvksplugins_source, однако, в файле control указано, что пакет с исходниками будет называться libvksplugins. На самом деле, он действительно будет называться libvksplugins, а пакет с бинарниками, будет называться libvksplugins… deb. Суть этой путаницы в том, что пакет с исходниками представляет собой tar архив и служебные файлы, тогда как пакет бинарников это архив с расширение deb.
Настройка пакета библиотеки Посмотрим внимательно на описание пакета библиотеки:
Package: libvksplugins
Architecture: any
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 и общих библиотек, которые находит для каждого двоичного пакета. Этот список подставляется вместо $ .
Утилита dh_perl вычисляет зависимости Perl. Она генерирует список зависимостей от perl или perlapi для каждого двоичного пакета. Этот список подставляется вместо $ .
Некоторые команды пакета debhelper могут добавлять зависимости к вашему генерируемому пакету. Каждая команда генерирует список необходимых пакетов для каждого двоичного пакета. Этот список подставляется вместо
$ .
Утилита dh_gencontrol генерирует файл DEBIAN/control для каждого двоичного пакета, заменяя $ , $ , $ и т.д на полученные значения.
Т.е. эта строка говорит о том, что сборщик пакета сам определит зависимости.
Последний раздел данной секции это описание пакета. Первая строка содержит кратное описание, последующие строки содержат более подробное описание. Подробное описание, должно иметь определенный формат:
- строка должна начинаться с пробела;
- строка не должна быть длиннее 80 символов;
- пустая строка должна начинаться с пробела и состоять из символа точки.
Настройка пакета заголовочных файлов Пакет с заголовочными файлами, будет называться libvksplugins-dev, вот его описание:
Package: libvksplugins-dev
Section: libdevel
Architecture: any
Depends: libvksplugins (= $
Description: Development package for libvksplugins
This package provides development files for
library libvksplugins.
.
Also, it contains pkg-config file, to use.
В данном примере, интересна строка Depends. В ней указано, что данный пакет будет зависеть от пакета библиотеки libvksplugins, причем (= $ ) говорит о том, что необходимо строгое совпадение версий бинарного пакета и пакета разработчика. Это важный момент потому, что заголовочные файлы должны строго соответствовать бинарникам.
Настройка пакета документации Вместе с библиотекой поставляется документация, чтобы она была в отдельном пакете, добавляем его описание:
Package: libvksplugins-doc
Architecture: all
Depends: $
Description: Documentation for libvksplugins
Package contains html documentation files for libvksplugins
Тут должно быть все понятно.
rules
Данный файл является аналогом Makefile для сборки пакетов. По умолчанию, он создается в таком виде:
Видно, что это bash скрипт с синтаксисом Makefile. Единственная интересная конструкция здесь это
Это шаблон, который для всех целей вызывает dh команду с передачей аргументов ей. Для сборки пакета важно, чтобы текст dh $@ начитался с символа табуляции. Т.е. отступ это не пробелы, а табуляция.
Т.к. исходники используют систему сборки CMake, то нужно изменить эту запись следующим образом:
Содержимое пакетов
После того, как мы указали в debian/control какие пакеты мы хотим получить, нужно указать какие файлы в какой пакет помещать. Для этого, для каждого названия пакета из файла control, нужно создать в папке debian два файла. Первый должен называться пакет.dirs, а второй пакет.install. Суть файлов в том, что первый указывает, какие папки нужно создать для пакета, а второй, какие файлы включить в пакет.
Посмотрим на их содержимое:
Важный момент, отсутствие начальной дроби в путях и отсутствие дроби в конце пути к папке. Проверив, куда CMake устанавливает файлы библиотеки, можно сформировать такие файлы:
Завершение настройки
Т.к. исходники мои, то никаких дополнительных описаний и ограничений copyright у меня нет, поэтому я удаляю все лишние файлы из каталога debian.
Сборка пакетов
После настройки, сборка пакетов происходит довольно просто, нужно в папке проекта (которая включает подпапку debian) выполнить команду:
Параметры -us -uc говорят о том, что не нужно подписывать gpg ключом созданные пакеты. Их можно не использовать, если настроен ключ подписи gpg по умолчанию. Как указать ключ подписи по умолчанию, я тоже не понял. Если все прошло хорошо, то у нас поваляется набор пакетов в папке выше:
Заключение
Если вы дочитали до сюда — значит вы любите читать.
Этот текст является результатом моего опыта внедрения deb пакетов на работе. Опыт показал, что наличие сетевого репозитория (reprepro) и внимательное отслеживание версий, позволяют без проблем обновлять и тестировать различные версии ПО на парке из 30 машин с системами Astra Linux 1.3, 1.4 и Эльбрус ОС.