LibKing » Книги » comp-programming » Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть I

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

Тут можно читать онлайн Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть I - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть I
  • Название:
    Создаем порт для FreeBSD своими руками. Часть I
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.88/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть I краткое содержание

Создаем порт для FreeBSD своими руками. Часть I - описание и краткое содержание, автор Рашид Ачилов, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Cистема портов - то, чем по праву гордится FreeBSD. Система содержит ссылки на десятки тысяч программ, и список этот постоянно пополняется. Кто их создает, эти пополнения – некие выдающиеся специалисты? Да вовсе нет. Вы тоже сможете стать одним из них.

Создаем порт для FreeBSD своими руками. Часть I - читать онлайн бесплатно полную версию (весь текст целиком)

Создаем порт для FreeBSD своими руками. Часть I - читать книгу онлайн бесплатно, автор Рашид Ачилов
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

# 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 5 http://www.ru.freebsd.org/doc/ru_RU.KOI8-R/books/portershandbook/porting-submitting.html . ].

Дожидаетесь ответа от одного из коммиттеров 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=77679

В этом сообщении всегда указывается причина ошибки и диагностика. Все общение с 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!

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

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

Кроме того, FreeBSD Team временами самостоятельно вносит некоторые изменения в файлы портов, когда проводится какая-либо глобальная модификация системы в целом. Если вдруг по каким-либо причинам порт перестанет собираться, майнтайнеру будет отправлено соответствующее извещение. Если майнтайнер не устранит ошибку и не пришлет соответствующий патч, исправляющий ситуацию, порт может быть помечен как BROKEN. Как правило, порты, помеченные как BROKEN, удаляются из дерева если они находятся в таком состоянии более 3 месяцев.

Заключение

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

1

Осинцев В. Эффективная работа с портами во FreeBSD. - Журнал «Системный администратор», №1, январь 2004 г. - 63-66 с.

2

http://www.ru.freebsd.org/doc/ru_RU.KOI8-R/books/portershandbook/makefile-categories.html.

3

http://www.kde-apps.org/content/show.php?content=34479

4

Руководство FreeBSD по созданию портов – http://www.ru.freebsd.org/doc/ru_RU.KOI8-R/books/porters-handbook/index.html.

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


Рашид Ачилов читать все книги автора по порядку

Рашид Ачилов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Создаем порт для FreeBSD своими руками. Часть I, автор: Рашид Ачилов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img