Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist

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

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

Совет # 62: Создаем пакет Ubuntu

Создаем из вашей программы пакет с тем, чтобы ее было легко устанавливать в Ubuntu.

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

Существует большое количество разнообразных вспомогательных инструментальных средств и комплексов программ, которые помогут создавать пакеты в Debian, и примерно столько же есть приемов оптимизации, применяемых в процессе создания пакетов, которые используются в программах, предназначенных для поддержки работы с пакетами. Для того чтобы полностью разобраться с тем, как работают пакеты Debian, начните с изучения Debian New Maintainers Guide (Новое руководство Debian по использованию пакетов - http://www.debian.org/doc/maint-guide), Debian Policy Manual (Инструкция по политике Debian - http://www.debian.org/doc/debian-policy) и Debian Developers Reference (Справочник разработчиков Debian - http://www.debian.org/doc/manuals/developers-reference), в которых представлено огромное количество подробной информации.

Этот совет является быстрой и краткой инструкцией, рассказывающей вам о том, как максимально быстро создать основной двоичный пакет. При этом предполагается, что программа, из которой вы хотите создать пакет, находится в архиве с исходными кодами с названием myprogram-version.tar.gz и его можно установить с помощью простой процедуры [Совет # 59], такой как:

$ ./configure
$ make
$ sudo make install

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

Сначала установите некоторые инструментальные средства, предназначенные для разработчиков:

$ sudo apt-get install fakeroot debhelper build-essential \\
              lintian dh-make devscripts

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

$ mkdir myprogram

Скопируйте архив с исходными кодами в директорий myprogram и распакуйте его (в результате будет создан директорий, в имени которого должен быть номер версии, например, myprogram-1.0):

$ tar zxf myprogram-1.0.tar.gz

Создаем файлы пакета

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

$ cd myprogram-1.0
               
$ dh_make -e user@example.com -f ../myprogram-1.0.tar.gz

dh_make спросит вас, какой пакет вы хотите создать. В данном случае, это single binary package (отдельный двоичный пакет), так что выберите этот вариант (укажите s, а не b). Затем dh_make создаст директорий debian, в котором будут находиться все файлы, необходимые при создании пакета, а в пакет изменений changelog автоматически будет добавлен указанный вами адрес электронной почты. Теперь перейдите в только что созданный директорий debian и, если потребуется, скорректируйте некоторые файлы, но не запускайте снова команду dh_make: она должен запускаться только один раз только тогда, когда выполняется предварительная настройка пакета, и если запустить ее снова, она, почти наверняка, испортит почти настроенный пакет. Ниже перечислены файлы, которые можно скорректировать:

control

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

rules

Файл rules является файлом makefile, который выполняется во время сборки пакета при компиляции исходных кодов пакета в двоичный формат. Файл автоматически конфигурируется с помощью dh_make так, чтобы он соответствовал типичному процессу сборки, но, если пакет требует каких-либо необычных мер, подлежащих выполнению, возможно, потребуется скорректировать соответствующий раздел файла rules.

preinst

postinst

prerm

postrm

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

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

Теперь, когда директорий с исходным кодом пакета настроен, вы можете создать реальный пакет. Это следует делать внутри директория с распакованным исходным кодом, так что если вы после настройки скриптов пакета все еще находитесь в директории debian, вам нужно выполнить команду cd .. с тем, чтобы перейти на один уровень выше, а затем запустить команду dpkg-buildpackage:

$ dpkg-buildpackage -b -uc -rfakeroot

Параметр -b указывает, что должен быть построен только двоичный (бинарный) пакет. Если вы также хотите собрать пакет с исходным кодом, то не указывайте этот параметр. Параметр -uc указывает, что файл changes в пакете не должен подписываться ключом GPG, так что если у вас есть ключ GPG ключ и хотите подписать пакет, вы можете опустить этот параметр. Параметр -rfakeroot указывает, что следует использовать fakeroot чтобы создать временную среду окружения.

Как только этот процесс завершится, у вас появится несколько новых файлов, находящихся вне вашей исходной директории, в том числе пакет с именем myprogram-1.0_i386.deb или с каким нибудь похожим именем. Прежде, чем двигаться дальше, вы можете воспользоваться программой lintian для запуска некоторых автоматических проверок пакета и проверки отсутствия очевидных ошибок. Программа lintian выполняет сотни проверок, чтобы убедится, что пакет соответствует официальной политике Debian и правилам создания пакетов. Несмотря на то, что эта программа может выдавать предупреждения, на которые можно не обращать внимание, т. к. вы создаете пакет для личного использования, все равно это отличный способ проверить, что вы не пропустили какие-нибудь важные шаги.

Запустите программу lintian указав путь к файлу changes, который был создан вместе с вашим новым пакетом:

$ lintian myprogram_1.0.1_i386.changes

Теперь вы можете использовать инструкции, приведенные в разделе "Устанавливаем и удаляем отдельные файлы .deb" [Совет # 57], чтобы установить и протестировать новый пакет, и даже можете воспользоваться разделом "Создаем свой собственный репозиторий пакетов" [Совет # 65], если вы хотите опубликовать его с тем, чтобы им пользовался весь мир.

Обновление пакета

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

$ cp -a myprogram-1.0 /debian  myprogram-1.1/

Затем войдите в новый директорий с исходным кодом и сделайте добавление в файл изменений changelog:

$ cd myprogram-1.1
               
$ dch -i

Команда dch -i перенаправит вас в редактор и автоматически поместит новую запись в верхнюю часть файла изменений changelog; команда также автоматически занесет в файл ваше имя и электронный адрес, а также увеличит номер версии. Если новый номер версии окажется не тем, какой нужен, просто замените его новым правильным номером, напишите краткое пояснение к новой версии, сохраните изменения и выйдите из редактора.

Теперь перезапустите команду, которая создаст пакет:

$ dpkg-buildpackage -b -uc -rfakeroot

Назад Оглавление Вперед



Средняя оценка 5 при 1 голосовавших

Комментарии