Skip to main content

Руководство по упаковке Ubuntu - упаковка с помощью Debhelper

Основы Ubuntu Linux: apt-get, bash, командная строка (Май 2025)

Основы Ubuntu Linux: apt-get, bash, командная строка (Май 2025)
Anonim

Упаковка с Debhelper

Важный

Требования: Требования из раздела «Упаковка с нуля» плюс debhelper и dh-make

Как упаковщик, вы редко создадите пакеты с нуля, как мы это делали в предыдущем разделе. Как вы можете себе представить, многие задачи и информация в правила файл, например, являются общими для пакетов. Чтобы сделать упаковку проще и эффективнее, вы можете использовать debhelper чтобы помочь в решении этих задач. Debhelper - это набор скриптов Perl (с префиксом dh_), которые автоматизируют процесс создания пакетов. С помощью этих сценариев создание пакета Debian становится довольно простым.

В этом примере мы снова создадим пакет GNU Hello, но на этот раз мы будем сравнивать нашу работу с Ubuntu привет-debhelper пакет. Снова создайте каталог, в котором будете работать:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

Затем получите исходный пакет Ubuntu:

apt-get source hello-debhelper cd ..

Как и в предыдущем примере, первое, что нам нужно сделать, это распаковать исходный (верхний) tarball.

tar -xzvf hello-2.1.1.tar.gz

Вместо копирования архива вверх по течению hello_2.1.1.orig.tar.gz как мы это делали в предыдущем примере, мы позволим dh_make сделай работу для нас. Единственное, что вам нужно сделать, это переименовать исходную папку, чтобы она была в форме - где packagename - строчный. В этом случае просто распаковка tarball создает правильно названный исходный каталог, чтобы мы могли перейти в него:

cd привет-2.1.1

Чтобы создать начальную «девианизацию» источника, мы будем использовать dh_make.

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

Затем dh_make задаст вам ряд вопросов:

Тип пакета: один двоичный, множественный двоичный, библиотека, модуль ядра или cdbs? С / м / л / к / Ь s Название владельца: Captain Packager Адрес электронной почты: [email protected] Дата: Чт, 6 апр 2006 10:07:19 -0700 Название пакета: hello Версия: 2.1.1 Лицензия: пустая Тип пакета: Single Hit подтвердить: Войти

Внимание

Только запустить dh_make -e один раз. Если вы запустите его снова после того, как сделаете это в первый раз, он не будет работать должным образом. Если вы хотите изменить его или совершили ошибку, удалите исходный каталог и распакуйте предыдущий tarball заново. Затем вы можете перейти в исходный каталог и повторите попытку.

Бег dh_make -e делает две вещи:

  • Создает hello_2.1.1.orig.tar.gz файл в родительском каталоге,
  • Создает основные файлы, необходимые в Debian / и многие файлы шаблонов (.ex), которые могут потребоваться.

Привет программа не очень сложна, и, как мы видели в разделе «Упаковка из нуля», упаковка не требует гораздо больше, чем базовые файлы. Поэтому удалим .ex файлы:

cd debian rm * .ex * .EX

За Привет, вы также не будете

* Лицензия

* Индекс руководства по упаковке Ubuntu

необходимость README.Debian (Файл README для определенных проблем Debian, а не README программы), каталоги (использован dh_installdirs для создания необходимых каталогов), документы (использован dh_installdocs для установки программной документации), или Информация (использован dh_installinfo для установки файла info) в Debian каталог. Дополнительные сведения об этих файлах см. В разделе «Файлы примеров dh_make».

На данный момент у вас должно быть только изменений, Compat, контроль, авторское право, а также правила файлов в Debian каталог. Из раздела «Упаковка из нуля» единственным новым, новым является Compat, который является файлом, который содержит debhelper версии (в данном случае 4), которая используется.

Вам необходимо будет настроить измененийнемного в этом случае, чтобы отразить, что этот пакет назван привет-debhelper а не просто Привет:

hello-debhelper (2.1.1-1) dapper; срочность = низкая * Первоначальный выпуск - Captain Packager Чт, 6 апр 2006 10:07:19 -0700

Используя debhelper, единственное, что нам нужно изменить в контроль это имя (подставляя Привет за привет-debhelper) и добавление debhelper (> = 4.0.0) к Build-Depends поле для исходного пакета. Пакет Ubuntu для привет-debhelper похоже:

Источник: hello-debhelper Раздел: devel Приоритет: дополнительный Контейнер: Capitan Packager Стандарты-Версия: 3.6.1 Build-Depends: debhelper (> = 4) Пакет: hello-debhelper Архитектура: любая Зависит: $ {shlibs: Зависит} Конфликты: hello Предоставляет: hello Заменяет: hello Описание: Классическое приветствие и Хороший пример Программа приветствия GNU дает знакомое приветливое приветствие. Это позволяет не программистам использовать классический инструмент для компьютерных наук, который в противном случае был бы недоступен для них. , Серьезно, однако: это пример того, как сделать пакет Debian. Это версия Debian для программы «hello world» проекта GNU (которая сама по себе является примером для проекта GNU). , Это то же самое, что и пакет приветствия, за исключением того, что он использует debhelper для создания deb. Пожалуйста, см. Debhelper относительно того, что это.

Мы можем скопировать авторское право файла и postinst а также prerm скрипты из Ubuntu привет-debhelper пакет, поскольку они не изменились со времен раздела «Упаковка с нуля». Мы также скопируем правила файл, чтобы мы могли его проверить.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

Последний файл, который нам нужно посмотреть, это правила, где мощность debhelper сценарии можно увидеть. debhelper версии правила несколько меньше (54 строки в отличие от 72 строк в версии из раздела под названием «правила»).

debhelper версия выглядит так:

#! / usr / bin / make -f package = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean : dh_testdir dh_clean rm -f build - $ (MAKE) -i distclean install: build dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (пакет) / usr mandir = $ (CURDIR) / debian / $ (пакет) / usr / share / man infodir = $ (CURDIR) / debian / $ (пакет) / usr / share / info install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Нет загружаемых без архитектуры файлов #, сгенерированных этим пакетом. Если бы они были, они были бы сделаны здесь. binary-arch: install dh_testdir -a dh_testroot -a dh_installdocs -a НОВОСТИ dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a двоичный: двоичный-двоичный двоичный-двоичный- arch .PHONY: двоичный двоичный двоичный двоичный двоичный ключ

Обратите внимание, что такие задачи, как тестирование, если вы находитесь в правильном каталоге (dh_testdir), убедившись, что вы создаете пакет с правами root (dh_testroot), установка документации (dh_installdocs а также dh_installchangelogs), и очистка после сборки (dh_clean) обрабатываются автоматически. Многие пакеты намного сложнее, чем Привет иметь правила файлов больше, поскольку debhelper скрипты обрабатывают большинство задач. Полный список debhelper сценарии, см. раздел «Список debhelper скриптов ". Они также хорошо документированы в соответствующих человек страницы. Это полезное упражнение для чтения справочной страницы (они хорошо написаны и не длинны) для каждого вспомогательного скрипта, используемого в приведенном выше правила файл.