В процессе создания пакета он помещается в каталог /usr/ports/packages/All, а в одном или более подкаталогов из /usr/ports/packages создаются на него ссылки. Имена этих подкаталогов определяются переменной CATEGORIES. Такая схема нужна для облегчения жизни пользователя, когда он сталкивается с массой пакетов на FTP-сервере или компакт-диске. Пожалуйста, посмотрите на текущий список категорий и выберите те из них, которые более всего подходят к вашему порту.
Этот список также определяет, куда в дереве портов будет помещен порт. Если вы укажете здесь более одной категории, то предполагается, что файлы порта будут помещены в подкаталог с именем первой категории. Посмотрите ниже для получения подробной информации о том, как правильно выбрать категории.
Вот текущий список категорий. Те, которые отмечены звёздочкой (*), являются виртуальными категориями—они не имеют собственного подкаталога в дереве портов. Они используются только в качестве вторичных категорий, и только для поиска.
Замечание: Для невиртуальных категорий имеется однострочное описание в 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. | ||
Программы для работы с электронной почтой. | |||
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 | Поддержка португальского языка. | ||
Программное обеспечение для печати. | Инструменты для вёрстки (просмотрщики и тому подобное) тоже относятся сюда. | ||
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. |
Так как многие категории перекрываются, вам часто необходимо будет выбирать, какая их них должна быть основной для вашего порта. Есть несколько правил, по которым можно решить этот вопрос. Вот список приоритетов, в уменьшающейся степени предпочтения:
Первая категория должна быть физической категорий (смотрите выше). Это необходимо для создания пакетов. После этого виртуальные и физические категории могут смешиваться.
Сначала всегда идут категории, специфичные для языков. Например, если ваш порт устанавливает японские шрифты для X11, то строчка CATEGORIES должна иметь вид japanese x11-fonts.
Более конкретные категории идут первыми перед более общими. В частности, редактор HTML должен быть описан как www editors, а не наоборот. Кроме того, вы не должны указывать категорию net, если порт относится к одной из категорий irc, mail, news, security или www, так как net включается автоматически.
x11 используется как вторичная категория только в случае, если в качестве основной категории указан естественный язык. В частности, вам не нужно указывать x11 в качестве категории для приложений X.
Режимы для редактора Emacs должны помещаться в ту же категорию, что и приложение, которое поддерживается этим режимом, а не в editors. Например, режим Emacs для редактирования исходного кода некоторого языка программирования должен быть помещен в категорию lang.
Порты, устанавливающие загружаемые модули ядра, должны содержать виртуальную категорию kld в строке CATEGORIES.
misc не должна указываться вместе с любой другой невиртуальной категорией. Если вы указываете misc вместе с чем-то ещё в строке CATEGORIES, это значит, что вы можете спокойно удалить misc и просто поместить порт в этот другой подкаталог!
Если ваш порт решительным образом не подпадает ни под какую категорию, поместите его в misc.
Если вы не уверены в правильности выбора категории, пожалуйста, отметьте это в вашем сообщении через send-pr(1), чтобы мы могли обсудить это до того, как включить порт в Коллекцию. Если вы являетесь коммиттером, пошлите замечание на адрес Список рассылки, посвящённый Портам FreeBSD, чтобы мы могли обсудить это. Зачастую новые порты помещаются не в ту категорию только для того, чтобы их оттуда сразу же удалили. Это приводит к излишнему и ненужному росту основного хранилища исходных текстов.
Поскольку со временем Коллекция Портов увеличилась, то в связи с этим были добавлены различные новые категории. Новые категории могут быть или виртуальными категориями— которые не имеют соответствующего подкаталога в дереве портов— или физическими категориями—у которых он есть. Следующий текст содержит обсуждение вопросов, возникающих при создании новой физической категории, чтобы вы могли понимать их, когда предложите новую категорию.
В соответствие с существующей практикой мы избегаем создания новой физической категории, пока достаточно большое число портов логически ей не принадлежит или же порты, которые могли бы ей принадлежать, не являются логически обособленной группой, представляющей для всех ограниченный интерес (в частности, категории, относящиеся к естественным языкам); предпочтительно выполнение обоих условий.
Основной причиной для этого является то, что такое изменение создает изрядное количество работы и для коммиттеров, и для всех тех пользователей, которые отслеживают изменения в Коллекции Портов. В дополнение, предложенная категория создает естественное разногласие. (Пожалуй, потому что не существует четкого соглашения, является ли категория ``слишком большой'', или должны ли категории предоставлять себя для просмотра (и, таким образом, какое количество категорий было бы идеальным значением), и так далее.)
Процедура:
Предложите новую категорию на Список рассылки, посвящённый Портам FreeBSD. Вам следует включить для новой категории детальное обоснование, в том числе почему вы считаете, что существующие категории не являются достаточными, и список существующих портов, предложенных для перемещения. (Если есть новые порты, ожидающие в GNATS и попадающие в эту категорию, то укажите их тоже.) Если вы являетесь сопровождающим и/или отправителем, то укажите это соответственно, так как это может помочь вам в вашем деле.
Принимайте участие в обсуждении.
Если кажется, что для вашей идеи появилась поддержка, отправьте PR, который будет включать обоснование и список существующих портов, которые надо переместить. В идеале этот PR должен также включать патчи для следующего:
Makefile'ы для новых портов в результате репозиторного копирования
Makefile для категорий старых портов
Makefile'ы для портов, зависящих от старых портов
(в дополнение, вы можете включить другие файлы, требующие изменений, согласно процедуре из Руководства Коммиттера.)
Поскольку это затрагивает инфраструктуру портов и охватывает не только
выполнение репозиторного копирования, но также, возможно, и выполнение регрессивных
тестов на кластере построения, то PR должна назначать себе Группа Менеджеров Дерева
Портов FreeBSD <portmgr@FreeBSD.org>
.
Если этот PR одобрен, то коммиттеру нужно продолжить остальную часть процедуры, которая изложена в Руководстве Коммиттера.
Предложение новой виртуальной категории должно быть схожим с вышеизложенным, но при этом затрагивать намного меньше, поскольку ни один из портов не будет перемещен в действительности. В этом случае единственными патчами, включенными в PR, будут те, что добавляют новую категорию в CATEGORIES каждого из затрагиваемых портов.
Время от времени кто-нибудь предлагает произвести реорганизацию категорий либо до двухуровневой, либо другого типа на основе ключевых слов. На данный момент из этих предложений ничего не получилось, потому что, хотя они просты в реализации, но предполагаемая переделка всей коллекции портов по меньшей мере приводит в уныние. Пожалуйста, прочтите историю этих предложений в архивах рассылок перед тем, как присылать свои соображения; более того, вы должны быть готовы представить работающий прототип.
Пред. | Начало | След. |
Именование | Уровень выше | Дистрибутивные файлы |