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