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