Я немного воспроизвожу руководство, которое я написал для вики zabbix в надежде, что оно будет полезным.
Это руководство будет сосредоточено в первую очередь на Debian , хотя сборка из исходников в другие производные должны быть в основном тем же процессом. Восходящий поток документация по управлению пакетами, в конечном счете, является наиболее авторитетным источником мудрости.
Пакеты облегчают вашу жизнь во многих аспектах:
Проверьте, какие версии можно найти в официальных репозиториях Debian и Ubuntu
В остальной части руководства предполагается, что команды выполняются пользователем без полномочий root с доступом sudo
$ sudo -l
Установите необходимую инфраструктуру для сборки, перекомпиляции и упаковки
$ sudo aptitude install build-essentials devscripts quilt
Это тот случай, когда вы хотите активировать / деактивировать некоторую функцию, которая построены по умолчанию в предварительно скомпилированных двоичных файлах, примените дополнительный патч, выполните резервное копирование используйте оптимизацию времени компиляции (нацелена на конкретную платформу, параметры усиления ). Шаги следующие:
Создайте временный каталог для работы в
$ mkdir ~/temp && cd ~/temp
Получите исходный пакет
$ apt-get source curl
или в качестве альтернативы (если у вас нет строки deb-src
в вашем sources.list
указывая на стабильную версию), вы можете получить файл .dsc из Интернета,
для текущей стабильной версии это будет
$ dget http://security.debian.org/debian-security/pool/updates/main/c/curl/curl_7.21.0-2.1+squeeze3.dsc
Любой из двух альтернативных методов
Проверить debian / rules makefile
$ cd curl*
$ vi debian/rules
Это основной make-файл для процесса упаковки, здесь вы можете просмотреть дополнительные параметры настройки, а также могут включать / отключать функции, касающиеся все пакеты, которые будут собраны (сервер, агент, прокси)
Просмотрите исправления с помощью quilt
Предположим, вас интересует один или несколько исправлений дистрибутива , а не . Чтобы проверить, какие исправления доступны в источниках, используйте
$ quilt series
Проверить наличие уже примененных исправлений (на этом этапе список должен быть идентичным)
$ quilt applied
Отменить все исправления
$ quilt pop -a
При необходимости удалить ненужные
$ quilt delete -r $patch_name
Применить остальные патчи
$ quilt push -a
Установите зависимости пакета, который вы собираетесь перекомпилировать.
$ apt-get build-dep curl
При желании пометьте пакет
$ dch -l +local 'Rebuilt from sources'
Проверьте страницу руководства dch, если вам нужно добавить более подробную запись в журнал изменений.
Наконец, перекомпилируйте пакет. package
$ debuild -us -uc
После процесса за пределами каталога zabbix- * вы найдете deb пакеты, которые вы только что скомпилировали, готовы к установке
$ sudo dpkg -i $deb_package
. Этот процесс известен как backporting
Применяются следующие меры предосторожности
Процесс такой же, как и восстановление для стабильного выпуска, с исключение из пакета с исходным кодом, который можно получить либо из apt репозиториев, используя такую строку в вашем sources.list (обратите внимание, только один из две альтернативы)
deb-src http://ftp.de.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.de.debian.org/debian/ unstable main non-free contrib
или снова через Интернет
$ dget http://ftp.de.debian.org/debian/pool/main/c/curl/curl_7.30.0-1.dsc
. Дополнительной мерой предосторожности может быть маркировка пакетов для облегчения идентификации в случае требуется удаление.
$ dch -l ~local 'Sid backport'
Остальная часть процесса идентична, результат будет перенесен пакеты, которые можно установить вместе с остальными.
. Если вы хотите или вам нужна более свежая версия, чем та, которую можно найти в Сид, ты все еще можешь проверить экспериментальный репозиторий и git репозиторий mantainer (ов), чтобы увидеть, есть ли что-то в работе. Помимо этого, вам нужно использовать репозиторий проекта upstream, но все же один может извлечь выгоду из структуры пакетов Debian. С этой целью был сделан снимок последнюю стабильную или альфа-версию можно загрузить . Итак, после загрузки исходного пакета из репозитория дистрибутива (Debian или Ubuntu, в зависимости от ситуации), как указано выше, следующие шаги будут (могут иметь место различия в используемых версиях):
$ wget https://github.com/bagder/curl/archive/curl-7_30_0.zip
$ mv master.zip curl-7.30.0.zip
$ cd curl-${stable}
$ uupdate ../curl-7.30.0.zip -v 7.30.0
$ cd ../curl-7.30.0
После этого все исправления в debian / patches должны быть проверены, чтобы определите, полезны ли они по-прежнему, или от них нужно отказаться. Используйте квилт, как описано над. Завершите процесс перекомпиляции, отметив
$ dch -l ~local 'Upstream packaging'
, перестроив
$ debuild -us -uc
и установив
$ sudo dpkg -i $deb_package
пакет (ы).
Некоторые люди находят систему упаковки Debian слишком сложной, но все же хотите воспользоваться преимуществами использования пакетного программного обеспечения. Некоторые проекты существуют, которые пытаются решить эту ситуацию. Список приведен здесь, но подробности использования этих инструментов оставлены в качестве упражнения для читателя.