Читаем Создаем порт для FreeBSD своими руками. Часть I полностью

=> 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.

Вот мы и получили первую ошибку. Она связана с некоторой бестолковостью имен дистрибутивных файлов накогда сам файл имеет имя с числом впереди, а каталог, упакованный внутри него, - без этого числа. Для решения этой проблемы следует указать системе, что имя каталога, в которую будет распакован дистрибутив, будет задано вручную. После (!!) переменной 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. Сообщение об ошибке может выглядеть, например так:

Synopsis: [maintainer-update] Updating mail/sccmilter up to 0.94.9 version

State-Changed-From-To: open->feedback

State-Changed-By: krion

State-Changed-When: Fri Feb 18 14:33:28 GMT 2005

State-Changed-Why:

It does not honour PREFIX, it's not very critical since it builds

for LOCALBASE,

but I'd like to see the PREFIX honoured though.

cc -pthread -L/var/tmp/ttt/lib -L.libs -o sccmilter sccmilter.o globals.o utilites.o mlficatch.o parseconfig.о commandline.о -lmilter -lconf /usr/bin/ld: cannot find -lconf

http://www.freebsd.org/cgi/query-pr.cgi?pr=77 679

В этом сообщении всегда указывается причина ошибки и диагностика. Все общение с FreeBSD Team происходит, естественно, на английском языке, несмотря на то, что есть и русскоязычные коммиттеры (например, письмо, приведенное выше, получено от Кирилла Пономарева (krion@freebsd.org). Сообщение об успешном помещении в дерево портов может выглядеть так:

Synopsis: new port: sysutils/spassgen

State-Changed-From-To: open->closed

State-Changed-By: pav

State-Changed-When: Sat Jul 31 09:26:28 GMT 2004

State-Changed-Why:

New port added, thank you!

После чего останется только обновить дерево портов и убедиться, что да, на самом деле порт в нем присутствует. С этого момента майнтайнер порта отвечает за его актуальное состояние- своевременное обновление в соответствии с новыми версиями программы, внесение нужных патчей и удаление устаревших. Как скоро ожидать ответа от FreeBSD Team? На этот вопрос трудно дать определенный ответ. Иногда они реагируют буквально в течение недели, а иногда приходится ждать несколько месяцев. Внесения в дерево своего первого порта, kavmilter, я ждал больше года, а например, spassgen прошел за неделю.

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT