7.5. Автоматическое создание списка упаковки

Первым делом убедитесь, что ваш порт практически полностью завершён и осталось создать только pkg-plist.

Далее создайте временное дерево каталогов, куда может быть установлен ваш порт, и установите все зависимости.

# mkdir /var/tmp/`make -V PORTNAME`
# mtree -U -f `make -V MTREE_FILE` -d -e -p /var/tmp/`make -V PORTNAME`
# make depends PREFIX=/var/tmp/`make -V PORTNAME`

Сохраните структуру каталогов в новом файле.

# (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort > OLD-DIRS

Создайте пустой файл pkg-plist:

# :>pkg-plist

Если ваш порт принимает во внимание PREFIX (а он должен это делать), то тогда вы можете установить порт и создать список упаковки.

# make install PREFIX=/var/tmp/`make -V PORTNAME`
# (cd /var/tmp/`make -V PORTNAME` && find -d * \! -type d) | sort > pkg-plist

Кроме того, в список упаковки вы должны добавить все вновь созданные каталоги.

# (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plist

И наконец, вам нужно вручную отшлифовать список упаковки; его создание автоматизировано не полностью. Страницы справочной системы должны быть перечислены в файле Makefile порта в переменных MANn, а не в списке упаковки. Пользовательские конфигурационные файлы должны быть удалены или быть установлены как filename.sample. Файл info/dir включать в список не нужно, но должны быть добавлены соответствующие строчки install-info, так, как это описано в разделе о файлах в формате info. Все библиотеки, устанавливаемые портом, должны быть перечислены так, как это описано в разделе о динамических библиотеках.

Как альтернативу, можно использовать скрипт plist из /usr/ports/Tools/scripts/ для автоматического построения списка упаковки. Скрипт plist - это сценарий на Ruby, который автоматизирует большинство ручных операций, изложенных в предыдущем параграфе.

Первый шаг такой же как выше: взять первые три строки, mkdir, mtree и make depends. Затем собрать и установить порт:

# make install PREFIX=/var/tmp/`make -V PORTNAME`

И позволить plist создать файл pkg-plist:

# /usr/ports/Tools/scripts/plist -Md -m `make -V MTREE_FILE` /var/tmp/`make -V PORTNAME` > pkg-plist

Список упаковки всё ещё должен быть подчищен вручную как описано выше.

Для первоначального создания pkg-plist можно использовать другой инструмент ports-mgmt/genplist. Как и с прочими автоматизированными инструментами, получаемый pkg-plist следует проверить и при необходимости отредактировать вручную.

По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>.