Создаем порт для FreeBSD своими руками. Часть I - [5]

Шрифт
Интервал

%%NLS%%share/locale/ga/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/fr/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/pt/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/sv/LC_MESSAGES/libkickermenu_contactsmenu. mo


Как это будет работать? Параметр PLIST_SUB содержит список подстановок, которые выполняются, когда система обрабатывает файл pkg-plist. Если при сборке порта будет задан параметр «WITHOUT_NLS=yes», то в pkg-plist будет подставлено значение, превращающее строки с «%%NLS%%» в строки комментария. Обратите внимание, что в этом случае зависимость от devel/gettext не вставляется. В противном случае NLS принимает значение пустой строки, и зависимость от devel/gettext вставляется. Этот прием (модификация pkg-plist в зависимости от параметров сборки порта) является очень широко распространенным.

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

Shell-архив отсылается во FreeBSD Team с помощью ко манды send-pr (помните, что email в поле MAINTAINER должен совпадать с email в поле From:, иначе замучают расспросами). О том, как использовать send-pr см. man send-pr. Некоторая информация о том, как отправить порт приведена также в [5].

Дожидаетесь ответа от одного из коммиттеров FreeBSD о том, что порт успешно помещен в дерево портов или же о том, что при тестировании порта возникли ошибки. Все присылаемые в FreeBSD Team порты тестируются ими на предмет правильной сборки, установки и удаления под всеми поддерживаемыми в данный момент ветками FreeBSD. Сообщение об ошибке может выглядеть, например так:


Еще от автора Рашид Ачилов
Создаем порт для FreeBSD своими руками. Часть II

Система сборки программ, используемая во FreeBSD, имеет значительно большие возможности, чем те, которые мы задействовали. Какие это возможности и как их использовать в своих портах?


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.