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Программное обеспечение, связанное с языком JavaTM.Категория 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Программная поддержка PalmTM. 
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Программное обеспечение, связанное со всемирной паутиной.Поддержка языка HTML относится сюда же.
x11X Window System и иже с ними.Эта категория предназначена только для программного обеспечения, которое поддерживает саму оконную систему. Не помещайте сюда обычные приложения для X: большинство из них должны быть перенесены в другие категории x11-* (смотрите ниже).
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. Выбор правильной категории

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

  • Первая категория должна быть физической категорий (смотрите выше). Это необходимо для создания пакетов. После этого виртуальные и физические категории могут смешиваться.

  • Сначала всегда идут категории, специфичные для языков. Например, если ваш порт устанавливает японские шрифты для X11, то строчка CATEGORIES должна иметь вид japanese x11-fonts.

  • Более конкретные категории идут первыми перед более общими. В частности, редактор HTML должен быть описан как www editors, а не наоборот. Кроме того, вы не должны указывать категорию net, если порт относится к одной из категорий irc, mail, news, security или www, так как net включается автоматически.

  • x11 используется как вторичная категория только в случае, если в качестве основной категории указан естественный язык. В частности, вам не нужно указывать x11 в качестве категории для приложений X.

  • Режимы для редактора Emacs должны помещаться в ту же категорию, что и приложение, которое поддерживается этим режимом, а не в editors. Например, режим Emacs для редактирования исходного кода некоторого языка программирования должен быть помещен в категорию lang.

  • Порты, устанавливающие загружаемые модули ядра, должны содержать виртуальную категорию kld в строке CATEGORIES. Это одно из действий, выполняемых автоматически с добавлением kmod в строке USES.

  • misc не должна указываться вместе с любой другой невиртуальной категорией. Если вы указываете misc вместе с чем-то ещё в строке CATEGORIES, это значит, что вы можете спокойно удалить misc и просто поместить порт в этот другой подкаталог!

  • Если ваш порт решительным образом не подпадает ни под какую категорию, поместите его в misc.

Если вы не уверены в правильности выбора категории, пожалуйста, отметьте это в вашем сообщении 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. Предложение реорганизации всех категорий

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

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

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