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

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

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

Жанр: Программирование
Серии: -
Всего страниц: 6
ISBN: -
Год издания: Не установлен
Формат: Полный

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

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

Рашид Ачилов

Создаем порт для FreeBSD своими руками

Часть I: основные возможности

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

Рашид Ачилов

Споры о том, что правильнее - собирать программы руками или использовать для этого порты, в эхо-конференции FidoNet RU.UNIX.BSD не утихают никогда. Они могут стихнуть на время, но затем кто-нибудь снова задаст такой вопрос, и они разгораются с новой силой.

И рано или поздно каждый приходит к мнению, что использовать порты удобнее, потому что:

• Система сама ведет список файлов, входящих в порт, что позволяет просто удалить программу, не заботясь о том, что на диске останутся «хвосты».

• Система сохраняет контрольную сумму MD5 по каждому файлу, что позволяет проверить его подлинность в случае возникновения сомнения, а также при удале нии программы. Поскольку при удалении порта проверяются контрольные суммы файлов, его составляющих, система не удалит файл, если его контрольная сумма не совпадает с записанной. Это исключает ситуацию, когда тщательно настроенный, но как обычно нигде не зарезервированный конфигурационный файл программы пропадает при ее удалении.

• Система отслеживает выход новых версий программы (это верно только для портов, которые сопровождаются кем-то еще, а не вами. О своевременном обновлении вашего порта вы должны заботиться сами).

• Значительно проще ответить на вопрос «Установлена ли у меня эта программа?» или «Где у меня такой-то файл от такой-то программы?»

Основные моменты того, как устроена система портов и как с ней эффективно работать, изложены в [1], здесь я приведу только ее краткое описание, необходимое для понимания статьи. Система портов или «коллекция портов» представляет из себя древовидную структуру каталогов, которая обычно размещается в /usr/ports. Имена каталогов первого уровня (находящиеся непосредственно в /usr/ports) образуют наименования «категорий», то есть тематических групп. Например, есть категория mail, в которую входят все программы, связанные с обработкой электронной почты, есть категория dns и т. д. Решение о создании новой категории принимает FreeBSD Team, которая создает на первичных зеркалах новый каталог, переносит в него нужные порты, откуда изменения расходятся по вторичным зеркалам и обычным серверам. Перед тем как приступить к созданию порта, необходимо решить, к какой категории относится программа, которую предстоит внести в дерево портов. Имена категорий и их краткое описание приведено в [2]. Внутри каталога категории размещаются непосредственно порты - по одному в каждом отдельном каталоге. Такая структура несколько замедляет навигацию, когда в каталоге находится много файлов, и именно поэтому постоянно появляются новые и новые категории.

Из чего, собственно, состоит порт для FreeBSD?

Порт для FreeBSD состоит из нескольких файлов, которые сами по себе ничего не делают. Даже несмотря на то, что один из них называется Makefile, все они представляют из себя файлы данных - описания и определения некоторых переменных, используемых системой портов в качестве исходных данных. Механизм работы системы давным-давно отлажен, в простейшем случае необходимо только задать исходные данные. Ниже приводится список файлов, которые необходимы для порта (на самом деле порт может использовать и другие файлы, но они не являются необходимыми):

• Makefile - основной файл порта. В нем задаются все необходимые переменные, которые настраивают работу системы портов в том или ином режиме. Также в этом файле может программироваться собственно поведение системы в той или иной ситуации. Текстовый файл, стандартного формата, распознаваемого программой BSD make (не путать с GNU make! О синтаксисе файлов BSD make см. man make). Данный файл условно делится на четрые секции, которые должны идти строго друг за другом, не нарушая порядка. Определения переменных, которые должны появляться в данной секции, не должны появляться ни в предыдущей, ни в последующей секции. Порядок секций таков: начальная секция -> секция MAINTAINER -> секция USE_* -> секция доопределений.

• Начальная секция идет самой первой. В нее помещаются переменные PORTNAME, PORTVERSION, CATEGORIES, MASTER_SITES и DISTNAME. Также в нее могут быть помещены другие переменные, полный перечень которых приведен в файле bsd.port.mk.

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


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

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


Рекомендуем почитать
Большая и грязная любовь

Большая и чистая любовь? Здорово, конечно, но когда тебе тридцать, в сказки уже не верится. В принца на белом коне – тоже. В тридцать волей-неволей начинаешь смотреть на жизнь с изрядной долей скепсиса и чем дальше, тем яснее понимаешь – скепсис оправдан.А любви все равно хочется. Пусть не большой, а маленькой. Пусть не чистой, а… ну хоть какой-нибудь!Именно так рассуждала Крис, она же Кристина Новикова, грустно сидя у подъезда на лавочке с бутылкой брюта, и даже не подозревала, что ее желание уже исполнилось.


Найденная

Мальчика Митю в 1919 году дядя увез из России во Францию. К несчастью, в дороге, на станции в Белгороде, от них отстала и бесследно пропала старшая сестра Мити, Маруся. И вот теперь, семь лет спустя, Митя неожиданно увидел горячо любимую сестру на экране кинотеатра, в одном из эпизодов привезенной в Париж советской фильмы «Красный витязь».С этой минуты все мысли Мити были только об одном: поскорее вернуться в Советскую Россию и снова встретиться с Марусей...*В FB2-файле полностью сохранена орфография бумажного издания 1927 года*.


Скворцов

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


Щенок

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


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


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

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


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

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


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

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