Свои deb-пакеты
Monday, March 2, 2009 12:38:59 PM
Берем к примеру PHP.
Почему?
Потому что нам нужно:
1. Поставить пакет в путь не по умолчанию
2. Добавить к нему патчи
3. Получить готовый dеb
Поехали:
Скачали. Распаковали.
tar -xvf php-4.4.8.tar.bz2
Пропатчили раз...
gzip -cd php-4.4.8-fpm-0.5.8.diff.gz | patch -d php-4.4.8 -p1
Пропатчили два
patch -d php-4.4.8 -p1 < argument-php4_after_fpm.patch
Приступаем к сборке deb
cd ./php-4.4.8
Делаем заготовку для debian
dh_make
Выбираем..
Type of package: single binary, multiple binary, library, kernel module or cdbs?
[s/m/l/k/b]
cd ./debian
Что нас интересует(программа минимум):
- changelog Список изменений в версии
- control Описание пакета
- rules Опции сборки
- init.d (убираем суффик .ex везде, где хотим чтобы этот файл добавился в пакет) Наш скрипт запуска.
Добавляем номер сборки.
dch -i
php (4.4.8-2) unstable; urgency=low
* change name init.d script
Добавляем описание пакета
vi control
Source: php
Section: web
Priority: optional
Maintainer: PHP
Build-Depends: debhelper (>= 4.0.0), autotools-dev
Standards-Version: 3.6.2
Package: php
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends} (Важно не трогать, зависимость добавятся сами после сборки)
Description: Php 4.4.8 + FPM patch + spec.patch.
Задаем свои правила сборки
vi rules
config.status: configure
dh_testdir
# Add here commands to configure the package.
CFLAGS="$(CFLAGS) -Wl,-z,defs" ./configure --host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr/local/php4 \
--with-config-file-scan-dir=/usr/local/php4/lib/php.d \
--with-mysql=/usr --enable-ftp --enable-exif --with-zlib --with-gd \
--with-iconv --with-curl --with-jpeg --with-jpeg-dir=/usr --with-ttf \
--with-dom --with-domxml --with-freetype-dir=/usr --enable-gd-native-ttf \
--enable-memory-limit --enable-fastcgi --enable-mbstring --enable-fpm \
--with-imap --with-ldap --with-kerberos --with-imap-ssl
Ниже раскоментируем
dh_install dh_installinit --init-script=fastcgi_php4 (Можно задать свое имя init скрипта)
Сборка!
Переходим в корень исходника...
dpkg-buildpackage -rfakeroot
Или
debuild -rfakeroot
Пакет собирется в директорию выше.
Альтернативный вариант
Сделать
apt-get install checkinstall
Перейти в корень исходников
Повторить
./configure --bla-bla-bla ./make ./checkinstall
И после этого собирется пакетик, правда preinst и прочии скрипты непонятно как туда засовывать.







