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

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

• Секция USE_* расположена после секции MAINTAINER. Она содержит различные переменные, задающие явно или неявно зависимости для данного порта. Например, «USE_GETTEXT=yes» задаст зависимость порта от devel\gettext, «USE_KDEBASE_VER=3» задаст зави симость от x11\kdebase3 и т. д. Список всех возможных переменных USE_* приведен в файле bsd.port.mk. Может отсутствовать, но, как правило, присутствует - трудно найти порт, который вообще ни от чего не зависит.

• Секция доопределений - последняя секция в файле. Может отсутствовать и зачастую так и происходит. Содержит переопределения различных мишеней, составляющих процесс сборки порта. При сборке порта последовательно выполняются мишени fetch, extract, configure, build и install. Каждая из них в свою очередь состоит из трех этапов: pre-sometarget, do-sometarget и post-sometarget. Эти этапы предназначены для проведения дополнительной предварительной или после дующей обработки, а также для замещения некоторого этапа, если в этом есть необходимость. Например, этап do-extract может быть переопределен для выполнения распаковки дистрибутива нестандартным образом. Существуют и другие этапы, полный их перечень приведен в файле bsd.port.mk.

• distinfo - файл, описывающий все файлы, входящие в дистрибутив программы. Его нет необходимости создавать вручную - после создания Makefile достаточно выполнить команду make makesum - и он будет создан автоматически.

• pkg-descr - текстовый файл с небольшим описанием программы и ее возможностей. Описание может быть вообще коротким - 2-3 строки или более подробным 10-15 строк. В конце файла желательно привести URL разработчика и его адрес электронной почты в формате:


WWW: http://this.insert.link/~homepage

Author: John J. Smith [email protected]


• pkg-plist - список всех файлов, входящих в программу, а также команд, выполняемых при установке и/или удалении данной программы. Файлы указываются с путями относительно каталога установ ки (по умолчанию /usr/local), могут содержать макросы (будут рассмотрены ниже). Команды задаются в формате, описанном в man pkg_create.

• Другие файлы с произвольными именами. Например, файл сообщения, выдаваемого после успешной установки (или удаления) обычно называется pkg-message, хотя конечно никто не помешает назвать его как угодно по-другому.


Итак, что понадобится для того, чтобы приступить к созданию своего собственного порта?

Дистрибутив программы. Его следует поместить в /usr/ports/distfiles - это обычно место, куда скачиваются дистрибутивы и где система портов будет их искать.

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

Решение о присвоении программе определенной категории.

Любимый текстовый редактор.

Терпение и свободное время - возможно, порт придется пересобирать не один раз и даже не десять.

Первый порт - несложная программа для КDЕ

Мы не будем заниматься искуственными примерами. В качестве примера первого порта возьмем несложную программу для KDE, взятую с сайта http://www.kde-apps.org. Почему именно для KDE? Сообщество разработчиков KDE огромно, программы появляются, развиваются, а потом перестают поддерживаться и развиваться постоянно, причем большинство их авторов из Европы, работающие в той или иной версии Linux и даже и не подозревающие, что их программа может работать и в другой операционной системе, и ситуация, когда на KDE applications находится интересная и нужная программа, - это совершенно обычная ситуация. Итак, в качестве примера возьмем программу, которая позволяет встроить в панель KDE выпадающее меню с содержимым адресной книги. Программа так и называется - «Contacts menu for Kicker». Подробное ее описание приведено в [3]. Факт успешной сборки программы уже проверен, программа установлена, и протокол установки сохранен в файле, то есть была выполнена команда:


# make install >& install.log


В данном примере для перенаправления в файл и обьединения выводов stdout и stderr используется синтаксис tcsh, в sh необходимо выполнить:


# make install > install.log 2» install.log


Начинаем. Сразу же необходимо иметь в виду, что существует довольно жесткий порядок, в котором в файле Makefile должны появляться определения переменных. В нижеследующем примере приводится правильный порядок и нарушать его не рекомендуется.

Файл Makefile

В соответствии с рекомендациями [4] Makefile должен иметь следующий заголовок:


# New ports collection makefile for: contactsmenu

# Date created: 01 Mar 2006

# Whom: Rashid N. Achilov [email protected]

#

# $FreeBSD$


На этом заголовок кончается.

Внимание! Для впервые отправляемого порта строка $FreeBSD$ должна выглядеть именно так, как показана!

Первыми строками, идущими за заголовком, должны быть следующие:


PORTNAME= contactsmenu

PORTVERSION= 0.3.4b

CATEGORIES= mail kde


Эти три переменные должны идти первыми и именно в том порядке, в котором они приведены. Первая из них задает имя порта. Она должна совпадать с именем каталога с файлами порта. Вторая задает номер текущей версии программы. Именно по ней будет проводится сравнение существующей и установленной версий. Третья перечисляет список категорий, к которым относится данный порт. Выбор категории, а также требования к составлению данного списка приведены в [2].


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

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


Рекомендуем почитать
Язык PL/SQL

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.


Введение в Direct3D8

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


Пишем драйвер Windows на ассемблере

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


Язык программирования С# 2005 и платформа .NET 2.0.

В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML.


Вариации на тему STL. Адаптер обобщенного указателя на функцию-член класса

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


Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.