Иногда приходится пересобирать стандартные пакеты Slackware. Зачем? Причины могут быть разные, но чаще всего из-за того, что в стандартной сборке не указаны необходимые опции компиляции.
Пример 1. Вплоть до Slackware 12 так были вынуждены делать все, кому требовался интерпретатор языка perl с поддержкой многопоточности.
Пример 2. Не так давно я радовался, что в Slackware 12 включен пакет для создания шифрованных туннелей openvpn. К сожалению, когда дело дошло до практики мне он оказался совершенно бесполезен без возможности чтения пароля из файла. Опция конфигурации «auth-user-pass /path/to/file» и отвечает за это параметр компиляции «--enable-password-safe».
Сборка пакетов в Slackware осуществляется с помощью так называемых SlackBuild скриптов. SlackBuild скрипт — это обычный shell-скрипт, который осуществляет распаковку архива исходного кода программы, возможно наложение патчей, конфигурирование, компиляцию и запаковку в пакет Slackware. Все SlackBuild скрипты для стандартных пакетов Slackware открыты для свободного доступа и могут быть получены по адресу ftp://ftp.slackware.com/pub/slackware/slackware-<version>/source/, где <version> — это требуемая версия Slackware, одно из «8.1», «9.0», «9.1», «10.0», «10.1», «10.2», «11.0» или «12.0».
Рассмотрим подробнее процесс пересборки стандартного пакета Slackware на примере пакета openvpn. Сначала выкачиваем всё необходимое для сборки:
root@darkstar:~# mkdir /usr/src/openvpn; cd /usr/src/openvpn root@darkstar:/usr/src/openvpn# wget --recursive --no-directories \ > ftp://ftp.slackware.com/pub/slackware/slackware-12.0/source/n/openvpn ... root@darkstar:/usr/src/openvpn# ls -la total 681 drwxr-xr-x 2 root root 264 2007-10-19 08:32 ./ drwxr-xr-x 6 root root 184 2007-10-19 08:30 ../ -rw-r--r-- 1 root root 1375 2007-06-10 01:25 README -rw-r--r-- 1 root root 669076 2006-10-01 00:00 openvpn-2.0.9.tar.gz -rw-r--r-- 1 root root 189 2006-10-01 00:00 openvpn-2.0.9.tar.gz.asc -rw-r--r-- 1 root root 3729 2007-06-12 04:09 openvpn.SlackBuild -rw-r--r-- 1 root root 6942 2007-06-12 03:48 openvpn.conf.sample -rw-r--r-- 1 root root 888 2007-06-10 01:23 slack-desc
Прежде всего здесь нас интересует файл openvpn.SlackBuild. Применим следующий патч:
@@ -23,8 +23,8 @@ VERSION=2.0.9 ARCH=${ARCH:-i486} BUILD=${BUILD:-1} -#TAG=${TAG:-_SBo} -unset TAG +TAG=${TAG:-_SBo} +# unset TAG CWD=`pwd` TMP=${TMP:-/tmp} PKG=$TMP/pkg-$PRGNAM @@ -60,6 +60,7 @@ --sysconfdir=/etc/openvpn \ --localstatedir=/var \ --enable-lzo \ + --enable-password-safe \ --build=$ARCH-slackware-linux make || exit 1
Внесенные изменения:
- Включена поддержка поля TAG в наименовании пакета. TAG — это идентификатор создателя пакета, добавляется в самом конце имени файла, после номера сборки. В стандартных пакетах отсутствует, а в дополнительно устанавливаемых крайне желателен.
- Добавлена опция конфигурирования «--enable-password-safe», то, собственно ради чего вся пересборка и затевается.
Запускаем процесс пересборки пакета:
root@darkstar:/usr/src/openvpn# chmod +x openvpn.SlackBuild root@darkstar:/usr/src/openvpn# TAG=nmu OUTPUT=`pwd` ./openvpn.SlackBuild ... root@darkstar:/usr/src/openvpn# ls -la *.tgz -rw-r--r-- 1 root root 316375 2007-10-18 17:39 openvpn-2.0.9-i486-1nmu.tgz
Если все прошло без ошибок в текущей директории получим файл openvpn-2.0.9-i486-1nmu.tgz. Обновить уже установленный пакет можно с помощью команды:
root@darkstar:/usr/src/openvpn# upgradepkg openvpn-2.0.9-i486-1nmu.tgz +============================================================================== | Upgrading openvpn-2.0.9-i486-1 package using ./openvpn-2.0.9-i486-1nmu.tgz +============================================================================== Pre-installing package openvpn-2.0.9-i486-1nmu... Removing package /var/log/packages/openvpn-2.0.9-i486-1-upgraded-2007-10-18,17:44:08... Installing package openvpn-2.0.9-i486-1nmu... PACKAGE DESCRIPTION: openvpn: openvpn (secure IP tunnel daemon) openvpn: openvpn: OpenVPN is a full-featured SSL VPN which can accomodate a wide range openvpn: of configurations, including remote access, site-to-site VPNs, WiFi openvpn: security, and enterprise-scale remote access with load balancing, openvpn: failover, and fine-grained access-controls. openvpn: openvpn: OpenVPN's home on the net is: http://openvpn.net openvpn: Executing install script for openvpn-2.0.9-i486-1nmu... Package openvpn-2.0.9-i486-1 upgraded with new package ./openvpn-2.0.9-i486-1nmu.tgz.
Все, стандартный пакет Slackware пересобран с необходимыми нам опциями и успешно установлен в системе. Вообще изучение стандартных SlackBuild скриптов это хорошая отправная точка для написания собственных. В конце пара ссылок:
- http://www.linuxpackages.net/howto.php
- Документация по сборке пакетов для Slackware.
- http://www.slackbuilds.org
- Репозитарий SlackBuild скриптов для многих программ, официально не входящих в дистрибутив.
1 комментарий:
Отправить комментарий