Библиотека сайта 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], если вы хотите распространять пакет с вашими настройками по всему миру.
Назад | Оглавление | Вперед |