среда, 18 мая 2011 г.

Создание пакетов из установленных портов на FreeBSD

Собираем собственный пакет

После того, как мы скомпилировали и установили порт, нужно выполнить следующие команды:

1) Узнаем точную версию порта, которую мы поставили (в нашем случае это будет apache):
ls —ald /var/db/pkg/apache*
drwxr-xr-x 2 root wheel 512 Nov 12 00:31 /var/db/pkg/apache-2.2.17_1
Нам нужно именно полное название установленного порта – в нашем случае это apache-2.2.17_1.

2) Запускаем сборку пакета:
pkg_create -b /var/db/pkg/apache-2.2.17_1
или
pkg_create -b apache-2.2.17_1
После того как команда отработает, в текущей директории появится файл:
ls -la apache*
-rw-r--r-- 1 root wheel 3683835 Nov 12 13:47 apache-2.2.17_1.tbz
Теперь этот файл можно спокойно переносить на другой сервер и устанавливать командой: (оптимально - перенести все собраные пакеты в /usr/ports/distfiles, переути в эту папку и начать установку)
cd /usr/ports/distfiles
pkg_add apache-2.2.17_1.tbz

  • Собираем пакет с зависимостями (1-й вариант)

    Чтобы не получить неприятный сюрприз после переноса пакета, в виде того, что у вас отсутствуют какие-то другие необходимые пакеты, перед переносом необходимо выполнить:
    grep @pkgdep /var/db/pkg/apache-2.2.17_1/+CONTENTS
    @pkgdep expat-2.0.1_1
    @pkgdep perl-5.8.9_4
    @pkgdep pcre-8.10
    @pkgdep gdbm-1.8.3_3
    @pkgdep db42-4.2.52_5
    @pkgdep libiconv-1.13.1_1
    @pkgdep apr-devrandom-gdbm-db42-1.4.2.1.3.10
    Мы получили список пакетов, от которых зависит наша сборка apache. Без них он будет отказываться инсталлироваться на другой машине. Поэтому нужно собрать их тоже в виде пакетов:
    pkg_create -b expat-2.0.1_1
    pkg_create -b perl-5.8.9_4
    pkg_create -b pcre-8.10
    pkg_create -b gdbm-1.8.3_3
    pkg_create -b db42-4.2.52_5
    pkg_create -b libiconv-1.13.1_1
    pkg_create -b apr-devrandom-gdbm-db42-1.4.2.1.3.10

  • Собираем пакет с зависимостями (2-й вариант)

    1) Узнать полное имя пакета:
    pkg_info -Ix apache
    apache-2.2.17_1 Version 2.2.x of Apache web server with prefork MPM.
    2) Собрать пакет со всеми зависимостями:
    pkg_create -R -b apache-2.2.17_1
    После того как команда отработает, в текущей директории появятся файлы:
    ls -la *tbz
    -rw-r--r-- 1 root wheel 3683835 Nov 12 14:14 apache-2.2.17_1.tbz
    -rw-r--r-- 1 root wheel 1024840 Nov 12 14:14 apr-devrandom-gdbm-db42-1.4.2.1.3.10.tbz
    -rw-r--r-- 1 root wheel 3229408 Nov 12 14:14 db42-4.2.52_5.tbz
    -rw-r--r-- 1 root wheel 147977 Nov 12 14:14 expat-2.0.1_1.tbz
    -rw-r--r-- 1 root wheel 39950 Nov 12 14:14 gdbm-1.8.3_3.tbz
    -rw-r--r-- 1 root wheel 1491145 Nov 12 14:14 libiconv-1.13.1_1.tbz
    -rw-r--r-- 1 root wheel 642250 Nov 12 14:14 pcre-8.10.tbz
    -rw-r--r-- 1 root wheel 11699494 Nov 12 14:14 perl-5.8.9_4.tbz
LINK