"Создаем порт для FreeBSD своими руками" - читать интересную книгу автора (Ачилов Рашид)

Рашид Ачилов

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

Автоматизированная система сборки стороннего программного обеспечения
из исходных текстов (система портов) - это то, чем по праву гордится
FreeBSD. Система содержит ссылки на десятки тысяч программ, и этот список
постоянно пополняется. Кто их создает - эти пополнения - некие выдающиеся
специалисты? Да вовсе нет. Вы тоже сможете стать одним из них.
Рашид Ачилов
Споры о том, что правильнее - собирать программы руками или
использовать для этого порты, в эхо-конференции FidoNet RU.UNIX.BSD не
утихают никогда. Они могут стихнуть на время, но затем кто-нибудь снова
задаст такой вопрос, и они разгораются с новой силой.
И рано или поздно каждый приходит к мнению, что использовать порты
удобнее, потому что:
∙ Система сама ведет список файлов, входящих в порт, что позволяет
просто удалить программу, не заботясь о том, что на диске останутся
"хвосты".
∙ Система сохраняет контрольную сумму MD5 по каждому файлу, что
позволяет проверить его подлинность в случае возникновения сомнения, а также
при удале нии программы. Поскольку при удалении порта проверяются
контрольные суммы файлов, его составляющих, система не удалит файл, если его
контрольная сумма не совпадает с записанной. Это исключает ситуацию, когда
тщательно настроенный, но как обычно нигде не зарезервированный
конфигурационный файл программы пропадает при ее удалении.
∙ Система отслеживает выход новых версий программы (это верно только
для портов, которые сопровождаются кем-то еще, а не вами. О своевременном
обновлении вашего порта вы должны заботиться сами).
∙ Значительно проще ответить на вопрос "Установлена ли у меня эта
программа?" или "Где у меня такой-то файл от такой-то программы?"
Основные моменты того, как устроена система портов и как с ней
эффективно работать, изложены в [1], здесь я приведу только ее краткое
описание, необходимое для понимания статьи. Система портов или "коллекция
портов" представляет из себя древовидную структуру каталогов, которая обычно
размещается в /usr/ports. Имена каталогов первого уровня (находящиеся
непосредственно в /usr/ports) образуют наименования "категорий", то есть
тематических групп. Например, есть категория mail, в которую входят все
программы, связанные с обработкой электронной почты, есть категория dns и т.
д. Решение о создании новой категории принимает FreeBSD Team, которая
создает на первичных зеркалах новый каталог, переносит в него нужные порты,
откуда изменения расходятся по вторичным зеркалам и обычным серверам. Перед
тем как приступить к созданию порта, необходимо решить, к какой категории
относится программа, которую предстоит внести в дерево портов. Имена
категорий и их краткое описание приведено в [2]. Внутри каталога категории
размещаются непосредственно порты - по одному в каждом отдельном каталоге.
Такая структура несколько замедляет навигацию, когда в каталоге находится
много файлов, и именно поэтому постоянно появляются новые и новые категории.

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