Выбрать главу

Запускаем 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), а не в каталоге порта!