Система «портов» и пакетов FreeBSD

«Порты» (ports) – это команды для компиляции программ во Free- BSD, а пакеты – это предварительно скомпилированные «порты».

Пакеты устанавливаются быстрее и проще. «Порты» устанавливаются медленнее, но их можно настроить для конкретного окружения. В целом система называется коллекция «портов» (Ports Collection), дерево «портов» (ports tree), или просто «порты» (ports). Все эти термины относятся непосредственно к «портам» – системе сборки портов и пакетов.

Основная идея системы «портов» и пакетов очень проста: если программу необходимо модифицировать для запуска в операционной системе FreeBSD, то эти модификации надо автоматизировать. Если для сборки данной программы из исходного кода или для ее работы требуется другое программное обеспечение, следует это записать и отслеживать. Для автоматизации внесения изменений полезно иметь перечень всех файлов, входящих в состав программы, чтобы затем легко инсталлировать и деинсталлировать ее. Так как процесс сборки программного обеспечения каждый раз выдает один и тот же результат, и у вас записано, какие файлы создаются процессом, то можно скопировать все исполняемые файлы и установить их на любой похожей системе FreeBSD.

«Порты»

«Порт» – это набор команд, задающих правила наложения заплаток (patches) на файлы исходного кода. Комбинируя заплатки и команды установки, FreeBSD может вести полный учет всего процесса установки программного обеспечения. Такой подход избавляет от трудностей установки программ и позволяет сконцентрироваться на их конфигурировании.

Установка дерева «портов»

Если вы следовали инструкциям по установке, представленным в главе 2, то дерево «портов» установлено в /usr/ports. В этом каталоге должны находиться несколько файлов и пара десятков каталогов. Если у вас в каталоге /usr/ports нет ничего, то вы не сможете следовать за примерами этой главы. Ничего страшного – вам просто нужно установить дерево «портов». В главе 13 мы будем рассматривать программу ports- пар(8), но уже сейчас с ее помощью можно установить дерево «портов»:

# portsnap fetch

Looking up portsnap.FreeBSD.org mirrors… 3 mirrors found. Fetching public key from portsnap3.FreeBSD.org… done. Fetching snapshot tag from portsnap3.FreeBSD.org… done. Fetching snapshot metadata… done.

Fetching snapshot generated at Thu May 15 20:09:15 EDT 2008: a2b71859b1a44878d19f879e2d1c8010785761670cc745 5% of 47 MB 29 kBps 26m32s (Перевод: Поиск зеркал portsnap.FreeBSD.org… найдено 3 зеркала. Получение открытого ключа от portsnap3.FreeBSD.org… выполнено.

Получение тега копии из portsnap3.FreeBSD.org… выполнено. Получение метаданных копии… выполнено.

Получение копии, созданной во вторник 15 мая в 20:09:15 2008 года: a2b71859b1a44878d19f879e2d1c801d785761670cc745 5% из 47 MB 29 kBps 26м32с )

Программа portsnap отыскивает зеркала, где размещаются копии дерева «портов», проверяет целостность файлов на сервере, загружает файлы и проверяет целостность загруженных файлов. После загрузки установка дерева «портов» производится командой:

# portsnap extract

В результате будет получено текущее дерево со всеми последними «портами» FreeBSD.

Содержимое дерева «портов»

Большинство каталогов, которые вы здесь увидите, соответствует категориям программных продуктов. В каждом каталоге есть подкаталоги, вмещающие отдельные программные продукты. К моменту написания этих строк FreeBSD содержала почти 17 ООО «портов», поэтому важно уметь пользоваться деревом каталогов и понимать разделение ПО на категории. Ниже описаны файлы и каталоги, которые не относятся к категориям программных продуктов.

В файле CHANGES перечислены изменения, произведенные в инфраструктуре «портов» FreeBSD. В основном этот файл используют разработчики «портов» и те, кто интересуется внутренним устройством коллекции «портов».

Файл COPYRIGHT содержит информацию о лицензировании для коллекции «портов» в целом. У каждой отдельной программы из коллекции «портов» есть собственная информация об авторских правах и лицензировании, но сама коллекция «портов» распространяется на основе лицензии BSD.

Файл GIDs содержит перечень всех числовых групповых идентификаторов (GID), используемых программным обеспечением в коллекции «портов». Многие программные продукты работают с непривилегированными учетными записями, поэтому в коллекции «портов» должна быть информация о числовых идентификаторах групп для этих учетных записей. Данный файл позволяет предотвратить возможные конфликты между программными продуктами, так как каждому порту присвоено свое значение GID в файле GIDs.

Файл KNOBS содержит перечень всех параметров настройки, доступных в коллекции «портов». Эти настройки можно выполнить из командной строки или указать в файле /etc/make.conf, чтобы активизировать соответствующие им функциональные возможности программного обеспечения, если таковые поддерживаются. Подробнее об этих настройках мы поговорим ниже в этой же главе.

В файле LEGAL можно увидеть список всех правовых ограничений в программном обеспечении, включенном в коллекцию «портов». Некоторые программные продукты накладывают определенные ограничения, например оговаривается их некоммерческое использование, ограничение на распространение, ограничение на получение денежной выгоды и т. д. Эти ограничения также перечисляются в отдельных «портах», а данный список – всего лишь сборник ограничений из всех «портов».

В файле MOVED находится список «портов», которые были перемещены из одной категории в другую. Так как команда разработчиков «портов» FreeBSD периодически создает новые категории, они могут перемещать «порты» из одной категории в другую. Для поиска перемещенных «портов» необходимо использовать такие средства автоматизированного управления, как portmaster(8).

Файл Makefile содержит высокоуровневые инструкции для всей коллекции «портов» в целом.

Подкаталог Mk содержит подробные низкоуровневые инструкции для всей коллекции «портов» в целом. Многие программы предполагают совместную установку, и эти файлы гарантируют, что части одного набора инструментов будут собраны и установлены совместимым образом. Например, окружения рабочего стола KDE и GNOME состоят из десятков и сотен небольших программ, и каждая из них должна быть собрана так, чтобы она могла поддерживать возможность взаимодействия с другими программами. Если заглянуть в этот каталог, можно увидеть такие файлы, как bsd.gnome.mk и bsd.kde.mk, предназначенные для настройки этих программ, а также файлы для Apache, Emacs, GCC, Perl и многих других разновидностей программных продуктов. Если вы действительно хотите изучить работу коллекции «портов», исследуйте этот каталог.

Файл README содержит описание верхнего уровня организации коллекции «портов».

Каталог Templates содержит заготовки файлов, используемые другими разделами коллекции «портов».

Каталог Tools содержит программы, сценарии и другие средства автоматизации, которые в основном используются разработчиками «портов».

Файл UIDs содержит перечень всех числовых идентификаторов пользователей (UID), используемых программным обеспечением в коллекции «портов». Как и файл GIDs, он позволяет разработчикам «портов» предотвратить конфликты между непривилегированными учетными записями, с которыми работает программное обеспечение, устанавливаемое из «портов».

Файл UPDATING содержит примечания, используемые при обновлении программного обеспечения. Здесь перечислены обновления, требующие специального вмешательства, отсортированные по дате в обратном порядке. Этот файл будет рассматриваться в главе 13.

Каталог distfiles содержит исходный код программного обеспечения, устанавливаемого из «портов». Исходный код, загружаемый при установке «порта», сохраняется в каталоге /usr/ports/distfiles.

Все остальные каталоги хранят программное обеспечение «портов» по категориям. Ниже показано содержимое «порта» arabic, где находится программное обеспечение поддержки арабского языка. Большая часть программного обеспечения в «портах» поддерживает арабский язык, но программное обеспечение данной категории предназначено исключительно для поддержки арабского языка – например, шрифтов, перевода некоторых документов и т. д. Мало кому понадобится эта категория, но она удобна в качестве примера благодаря скромным размерам. Некоторые категории «портов» содержат сотни элементов.1

Makefile  ae_fonts_ttf kacst_fonts khotot                             php_doc

Makefile.inc arabtex                   katoob         koffice-i18n

ae_fonts_mono aspell                   kde3-i18n      libitl

Файл Makefile содержит инструкции для сборки всех «портов» в каталоге. Файл Makefile.inc содержит метаинструкции для «портов» в этом каталоге. Все остальные каталоги – это отдельные пакеты программного обеспечения. Мы займемся исследованием этих каталогов в разделе «Применение „портов"».

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий