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








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

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

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

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

Совет # 63: Компилируем пакет с исходным кодом

Пересобираем пакеты с параметрами, настроенными в соответствие с вашей архитектурой, средой или личными предпочтениями.

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

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

Подключаем репозитарий с исходными кодами

Для каждого репозитария с пакетами в двоичном коде в файле /etc/apt/sources.list есть соответствующий репозитарий пакетов в исходном коде, имеющий точно такой же адрес, но вместо префикса deb использующий префикс deb-src:

deb http://archive.ubuntu.com/ubuntu dapper main restricted
deb-src http://archive.ubuntu.com/ubuntu dapper main restricted

Вы можете обратиться к разделу "Изменение списка репозитариев пакетов" [Совет # 60], если у вас репозитарии с исходными кодами еще не установлены.

Устанавливаем инструментальные средства создания пакетов

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

$ sudo apt-get install devscripts build-essential fakeroot

Устанавливаем зависимости, необходимые в процессе сборки пакета, и получаем исходный код

Пакеты различаются по требованиям к зависимостям, нужным в процессе сборки пакетов. Эти требования определяются в заголовке пакета. Например, для повторной сборки пакета модуля PHP требуется, чтобы у вас в вашей системе были заголовочные файлы PHP, которые будут использованы при сборке пакета (слинкованы с пакетом — прим.пер.) после того, как модуль будет откомпилирован. Система управления пакетами может позаботиться о подготовке всех зависимостей, необходимых в процессе сборки пакетов, которые она для вас подготовит автоматически:

$ sudo apt-get build-dep packagename

Например, следующая команда получает зависимости для модуля php4-apd:

$ sudo apt-get build-dep php4-apd

Затем нужно получить пакет с исходным кодом, который вы хотите пересобрать. Обратите внимание, что в отличие практически от всех других случаев использования apt-get, вам не нужно запускать эту команду с привилегиями root, поскольку она, в действительности, не устанавливает пакет; все,что она делает, это скачивает пакет с исходными кодами и помещает его в текущей директории. Для того, чтобы содержать файловую систему в порядке, вы перед тем, как получать пакет с исходным кодом, можете создать директорий, в котором будет происходить сборка и изменение пакета:

$ mkdir php4-apd
$ cd php4-apd
$ apt-get source php4-apd

В результате в текущем директории будет создано несколько файлов, в том числе директорий, в котором будет находиться полностью разархивированная копия пакета:

jon@jon:~/php4-apd$ ls -l
drwxr-xr-x 6 jon jon   4096 2005-11-30 14:43 php4-apd-0.4p2
-rw-r--r-- 1 jon jon    532 2005-12-02 04:25 php4-apd_0.4p2-6.dsc
-rw-r--r-- 1 jon jon 368800 2005-12-02 04:25 php4-apd_0.4p2-6.tar.gz

Меняем настройки

Перейдите в директорий с разархивированным пакетом:

$ cd php4-apd-0.4p2

Теперь над разархивированной копией пакета можно производить любые необходимые изменения, но заметьте, что процесс сборки будет контролироваться специальной утилитой makefile, которая расположена в debian/rules, а не утилитами makefiles, имеющимися в комплекте с оригинальной программой. Если вам нужно внести в настройки изменения или установить флаги, вы должны это сделать с помощью редактирования файла debian/rules.

Создаем двоичный пакет

Если вы не указаны в debian/control и в debian/changelog как лицо, поддерживающее пакет, вам нужно с помощью флагов указать утилите debuild не подписывать новый пакет:

$ debuild -us -uc -b

Флаги -us и -uc означают, что исходный код и файлы изменений не будут подписаны, а флаг -b означает, что будет создаваться только двоичный пакет.

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


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