5.3. Разделение по категориям

5.3.1. CATEGORIES

В процессе создания пакета он помещается в каталог /usr/ports/packages/All, а в одном или более подкаталогов из /usr/ports/packages создаются на него ссылки. Имена этих подкаталогов определяются переменной CATEGORIES. Такая схема нужна для облегчения жизни пользователя, когда он сталкивается с массой пакетов на FTP-сервере или компакт-диске. Пожалуйста, посмотрите на текущий список категорий и выберите те из них, которые более всего подходят к вашему порту.

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

5.3.2. Текущий список категорий

Вот текущий список категорий. Те, которые отмечены звёздочкой (*), являются виртуальными категориями—они не имеют собственного подкаталога в дереве портов. Они используются только в качестве вторичных категорий, и только для поиска.

Замечание: Для невиртуальных категорий имеется однострочное описание в COMMENT в Makefile соответствующего подкаталога.

Категория Описание Примечания
accessibility Порты для помощи пользователям с ограниченными возможностями.  
afterstep* Порты, поддерживающие менеджер окон AfterStep.  
arabic Поддержка арабского языка.  
archivers Инструменты для работы с архивами.  
astro Приложения, связанные с астрономией.  
audio Поддержка работы со звуком.  
benchmarks Утилиты для измерения производительности системы.  
biology Программное обеспечение, связанное с биологией.  
cad Инструменты Систем Автоматизированного Проектирования.  
chinese Поддержка китайского языка.  
comms Коммуникационное программное обеспечение. В основном программы для работы с последовательным портом.
converters Утилиты для преобразования символьных форматов.  
databases Базы данных.  
deskutils То, что было на столе до изобретения компьютеров.  
devel Утилиты для разработки программного обеспечения. Не помещайте сюда библиотеки просто потому что это библиотеки—если они подпадают под какую-то другую категорию, то их быть здесь не должно.
dns Программное обеспечение для работы с DNS.  
docs* Мета-порты для документации FreeBSD.  
editors Редакторы общего назначения. Специализированные редакторы относят к разделу для соответствующих инструментов (например, редактор математических формул попадает в категорию math).
elisp* Порты для Emacs lisp.  
emulators Эмуляторы других операционных систем. Эмуляторы терминалов сюда не относятся—те, которые разработаны для X, должны быть в категории x11, а текстовые в comms или misc, в зависимости от конкретного их предназначения.
finance Приложения для работы с деньгами, финансами и всем, что с этим связано.  
french Поддержка французского языка.  
ftp Клиенты и серверы FTP. Если ваш порт понимает как FTP, так и HTTP, поместите его в категорию ftp и укажите вторичную категорию www.
games Игры.  
geography* Программное обеспечение, связанное с географией.  
german Поддержка немецкого языка.  
gnome* Порты Проекта GNOME.  
gnustep* Программное обеспечение для окружения рабочего стола GNUstep.  
graphics Графические утилиты.  
hamradio* Программное обеспечение для любительского радио  
haskell* Программное обеспечение, связанное с языком Haskell.  
hebrew Поддержка иврита.  
hungarian Поддержка венгерского языка.  
ipv6* Программное обеспечение, связанное с IPv6.  
irc Утилиты для работы с Internet Relay Chat.  
japanese Поддержка японского языка.  
java Программное обеспечение, связанное с языком Java™. Категория java ни в коем случае не должна быть единственной для порта. Оставьте для портов, непосредственно имеющих отношение к языку Java, портерам также рекомендуется не использовать java как основную категорию порта.
kde* Порты проекта KDE.  
kld* Загружаемые модули ядра.  
korean Поддержка корейского языка.  
lang Языки программирования.  
linux* Linux приложения и утилиты.  
lisp* Программное обеспечение, связанное с языком Lisp.  
mail Программы для работы с электронной почтой.  
math Программное обеспечение для численных вычислений и другие утилиты, связанные с математикой.  
mbone* Приложения для MBone.  
misc Различные утилиты В основном то, что не попадает в другие категории. Если это возможно, попробуйте найти более подходящую, чем misc, категорию для вашего порта, так как здесь порты теряются.
multimedia Программное обеспечение для работы с мультимедиа.  
net Различное сетевое программное обеспечение.  
net-im Программы мгновенного обмена сообщениями.  
net-mgmt Программное обеспечение для сетевого управления.  
net-p2p Приложения для пиринговых сетей.  
news Программное обеспечение для работы с конференциями USENET.  
palm Программная поддержка Palm™.  
parallel* Приложения, связанные с параллельными вычислениями.  
pear* Порты, относящиеся к технологии Pear PHP.  
perl5* Порты, которым для работы требуется Perl версии 5.  
plan9* Различные программы из Plan9.  
polish Поддержка польского языка.  
ports-mgmt Порты для управления, установки и разработки портов и пакетов FreeBSD.  
portuguese Поддержка португальского языка.  
print Программное обеспечение для печати. Инструменты для вёрстки (просмотрщики и тому подобное) тоже относятся сюда.  
python* Программное обеспечение, связанное с языком Python.  
ruby* Программное обеспечение, связанное с языком Ruby.  
rubygems* Порты для пакетов RubyGems.  
russian Поддержка русского языка.  
scheme* Программное обеспечение, связанное с языком Scheme.  
science Научные программы, которые не подпадают под другие категории, скажем, astro, biology или math.  
security Программы, обеспечивающие безопасность системы.  
shells Различные командные процессоры.  
sysutils Системные утилиты.  
spanish* Поддержка испанского языка.  
tcl* Порты, для работы которых нужен Tcl.  
textproc Утилиты для обработки текстов. Инструменты для вёрстки помещаются в категорию print, а не сюда.
tk* Порты, для работы которых нужен Tk.  
ukrainian Поддержка украинского языка.  
vietnamese Поддержка вьетнамского языка.  
windowmaker* Порты, поддерживающие менеджер окон WindowMaker.  
www Программное обеспечение, связанное с World Wide Web. Поддержка языка HTML относится сюда же.
x11 X Window System и иже с ними. Эта категория предназначена только для программного обеспечения, которое поддерживает саму оконную систему. Не помещайте сюда обычные приложения для X: большинство из них должны быть перенесены в другие категории x11-* (смотрите ниже). Если ваш порт является приложением для X, задайте USE_XLIB (что подразумевается при использовании USE_IMAKE) и укажите подходящую категорию.
x11-clocks Часы для X11.  
x11-drivers Драйверы X11.  
x11-fm Менеджеры файлов для X11.  
x11-fonts Шрифты для X11 и утилиты для работы с ними.  
x11-servers Серверы для X11.  
x11-themes Темы для X11.  
x11-toolkits Пакеты разработчика для X11.  
x11-wm Оконные менеджеры для X11.  
xfce* Порты, связанные с окружением рабочего стола Xfce.  
zope* Поддержка Zope.  

5.3.3. Выбор правильной категории

Так как многие категории перекрываются, вам часто необходимо будет выбирать, какая их них должна быть основной для вашего порта. Есть несколько правил, по которым можно решить этот вопрос. Вот список приоритетов, в уменьшающейся степени предпочтения:

Если вы не уверены в правильности выбора категории, пожалуйста, отметьте это в вашем сообщении через send-pr(1), чтобы мы могли обсудить это до того, как включить порт в Коллекцию. Если вы являетесь коммиттером, пошлите замечание на адрес Список рассылки, посвящённый Портам FreeBSD, чтобы мы могли обсудить это. Зачастую новые порты помещаются не в ту категорию только для того, чтобы их оттуда сразу же удалили. Это приводит к излишнему и ненужному росту основного хранилища исходных текстов.

5.3.4. Предложение новой категории

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

В соответствие с существующей практикой мы избегаем создания новой физической категории, пока достаточно большое число портов логически ей не принадлежит или же порты, которые могли бы ей принадлежать, не являются логически обособленной группой, представляющей для всех ограниченный интерес (в частности, категории, относящиеся к естественным языкам); предпочтительно выполнение обоих условий.

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

Процедура:

  1. Предложите новую категорию на Список рассылки, посвящённый Портам FreeBSD. Вам следует включить для новой категории детальное обоснование, в том числе почему вы считаете, что существующие категории не являются достаточными, и список существующих портов, предложенных для перемещения. (Если есть новые порты, ожидающие в GNATS и попадающие в эту категорию, то укажите их тоже.) Если вы являетесь сопровождающим и/или отправителем, то укажите это соответственно, так как это может помочь вам в вашем деле.

  2. Принимайте участие в обсуждении.

  3. Если кажется, что для вашей идеи появилась поддержка, отправьте PR, который будет включать обоснование и список существующих портов, которые надо переместить. В идеале этот PR должен также включать патчи для следующего:

    • Makefile'ы для новых портов в результате репозиторного копирования

    • Makefile для категорий старых портов

    • Makefile'ы для портов, зависящих от старых портов

    • (в дополнение, вы можете включить другие файлы, требующие изменений, согласно процедуре из Руководства Коммиттера.)

  4. Поскольку это затрагивает инфраструктуру портов и охватывает не только выполнение репозиторного копирования, но также, возможно, и выполнение регрессивных тестов на кластере построения, то PR должна назначать себе Группа Менеджеров Дерева Портов FreeBSD .

  5. Если этот PR одобрен, то коммиттеру нужно продолжить остальную часть процедуры, которая изложена в Руководстве Коммиттера.

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

5.3.5. Предложение реорганизации всех категорий

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

По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>.