Запускаем portlint еще раз, получаем одно замечание про MASTER_SITES, которое игнорируем. Осталось создать файл distinfo. Это просто. Система сама его создаст, если ее об этом попросить:
# make makesum
Созданный файл имеет следующий вид:
MD5 (34479-contactsmenu-0.3.4b.tar.bz2) =
65af4e3103c906edl3508bflb2dd217a
SHA256 (34479-contactsmenu-0.3.4b.tar.bz2) =
88e05096b2f9C8d659be61daed5e6da977a056033a52c79789dade217709afee
SIZE (34479-contactsmenu-0.3.4b.tar.bz2) = 457076
Теперь пробуем собрать программу, используя порт. Для проверки правильности составления файла pkg-plist в качестве корневого каталога сборки назначим /tmp/1 (после деинсталляции программы не должно оставаться файлов или каталогов, которые она создает).
# make PREFIX=/tmp/l
=> Vulnerability check disabled, database not found
=> Extracting for contactsmenu-0.3.4b
=> MD5 Checksum OK for 34479-contactsmenu-0.3.4b.tar.bz2.
=> SHA256 Checksum OK for 34479-contactsmenu-0.3.4b.tar.bz2.
=> Patching for contactsmenu-0.3.4b
=> contactsmenu-0.3.4b depends on file: /usr/XllR6/qt33/bin/moc - found
=> contactsmenu-0.3.4b depends on executable: gmake - found
=> contactsmenu-0.3.4b depends on shared library: kfontinst - found
=> contactsmenu-0.3.4b depends on shared library: kimproxy - found
=> contactsmenu-0.3.4b depends on shared library: intl - found
=> Configuring for contactsmenu-0.3.4b
=> Building for contactsmenu-0.3.4b
cd: can't cd to /usr/ports/mail/contactsmenu/work/34479-contactsmenu-0.3.4b
*** Error code 2
Stop in /usr/ports/mail/contactsmenu.
Вот мы и получили первую ошибку. Она связана с некоторой бестолковостью имен дистрибутивных файлов на http://www.kde-apps.org, когда сам файл имеет имя с числом впереди, а каталог, упакованный внутри него, - без этого числа. Для решения этой проблемы следует указать системе, что имя каталога, в которую будет распакован дистрибутив, будет задано вручную. После (!!) переменной MAINTAINER впишем следующую строчку:
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}
указывая таким образом, что дистрибутив будет распакован в каталог с именем, состоящим из имени и номера версии пакета. Повторяем сборку. Сборка проходит нормально. Запускаем установку. Видим, что в каталоге /tmp/1 появились все нужные файлы. Создаем пакет с помощью pkg_create (хотя можно то же самое проделать через make package):
# cd /var/db/pkg
# pkg_create -b contactsmenu-0.3.4b
Проверяем файл +CONTENTS внутри архива - под каждой строчкой, описывающей файл программы, должна располагаться строчка комментария с контрольной суммой:
Iib/kde3/kickermenu_contactsmenu.so
@comment MD5:fd3cf198770bac4elb8453f3ba2d6f90
Iib/kde3/kickermenu_contactsmenu.la
@comment MD5:4de2541c36ea248066aecb851aedbbe5
Если такой строчки нет - значит, в файле pkg-plist ошибка - при установке файл не был найден. Это может быть тривиальная опечатка или же ошибка в Makefile, при которой в pkg-plist был вставлен файл, отсутствующий в данной конфигурации.
Проверяем удаление пакета через plg_delete (или make deinstall в каталоге порта). При удалении не должно выдаваться сообщений о том, что файл не найден. Если такие сообщения выдаются, значит файл pkg-plist содержит ссылки на файлы, которые на самом деле не были установлены.
Ну вот, все проверки проделаны. Что дальше?
Последним этапом нашей работы будет отправка порта во FreeBSD Team и получение оттуда ответа об успешном помещении его в дерево портов или сообщение об ошибке. Порядок действий при этом такой:
• Удаляется каталог work и все файлы, которые не входят в отсылаемый порт (отладка и пр.).
• Создается shell-архив командой «shar 'find contactsmenif». При это нужно находиться в корневом каталоге категории (в нашем случае/usr/ports/mail), а не в каталоге порта!