Все чаще сталкиваюсь с тем что в репозиториях много старых пакетов, в бекпортах бывает версия поновее, но все же не последний релиз, а порой вообще никакой версии нет! Почитал разной информации на эту тему, пришел к выводу что ничего сложного нет, и можно самому собрать deb пакет. Конечно разных примудростей там полно, но мы ведь делаем пакеты для себя =), а не для миллионов пользователей. А если вы хотите стать крутым ментейнером, тогда вам быстрее всего не сюда, а на сайт debian.org, читать оригинальную инструкцию, где все подробно расписано.
Есть конечно выход скачать исходники, откомпилировать, установить и пользоваться, только зачем делать из сервера помойку.
Цель данной заметки описать максимально кратко, процесс создания deb пакета из исходников.
Собирать будем nginx.
Нам понадобятся следующие пакеты:
$ apt-get install autoconf automake libtool autotools-dev dpkg-buildpackage fakeroot dh-make
Дальше создаем каталоги, качаем и переименовываем файл, архив обьязательно должен быть tar.gz, если у вас другой, переархивируйте, за названиями следите внимательно, любое отклонение может привести к тому что вы словите ошибки при сборе пакета.
$ mkdir /root/deb/nginx
$ mkdir /root/deb/nginx/0.7.33
$ cd /root/deb/nginx/0.7.33
$ wget http://sysoev.ru/nginx/nginx-0.7.33.tar.gz
$ mv nginx-0.7.33.tar.gz nginx_0.7.33.orig.tar.gz
$ tar zxvf nginx_0.7.33.orig.tar.gz
$ cd nginx-0.7.33
Далее конфигурируем, делаем как обычно ./configure –prefix=/usr && make (но не устанавливаем!)
Дебианизируем
$ dh_make
Type of package: single binary, multiple binary, library, kernel module or cdbs?
[s/m/l/k/b] s
Maintainer name : root
Email-Address : info@root
Date : Sun, 8 Jun 2009 14:12:55 +0200
Package Name : nginx
Version : 0.7.33
License : blank
Type of Package : Single
Hit <enter> to confirm:
Мы скомандовали сформировать пекет для одиночного бинарного файла.
Первое что теперь нужно сделать, это открыть файл debian/control и добавить описание программы.
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>
В место и без кавычек вписываем описание что это за программа.
Теперь правим debian/rules, нам нужно расскоментировать dh_install в секции binary-arch:
Вышеописанные действия нужны для сборки любого deb пакета, а теперь приступаем конкретно к nginx. Нужно немного подправить debian/rules, указать в секции config.status: что нас интересует и куда должен устанавливается nginx.
config.status: configure
dh_testdir
./configure --prefix=/var/lib/nginx --sbin-path=/usr/sbin --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --with-http_flv_module --with-http_ssl_module --with-http_realip_module
Если вы пользуетесь nginx, и как раз пытаетесь его собрать, вы можете посмотреть с какими параметрами он у вас собран, и собрать его с точно такими же параметрами.
$ nginx -V #покажет вам все
Раз у нас уже все готово, можем приступить к созданию deb пакета.
$ cd /root/deb/nginx/0.7.33/nginx-0.7.33
$ dpkg-buildpackage -rfakeroot
В конечном итоге вы получите deb пакет nginx_0.7.33-1_i386.deb, который можно установовить как обычные debian пакеты:
dpkg -i nginx_0.7.33-1_i386.deb
Ссылки && Что почитать:
1) http://forum.ubuntu.ru/index.php?topic=11609.0;topicseen
2) Официальное полное руководство на Русском http://www.debian.org/doc/maint-guide/
Удачных вам сборок и компиляций
.