5.3 分类

5.3.1 CATEGORIES (所属分类)

  在包制作完成之后, 它会被放在 /usr/ports/packages/All, 并建立一系列来自 /usr/ports/packages 下子目录的符号连接。 这些子目录的名称是由 CATEGORIES 指定的。 这将方便于那些用户在 FTP 站点或 CDROM 的一大堆包里面寻找自己想要的包。 请查看一下 目前的分类表, 并找出一个适合您 port 的分类。

  此列表也会决定您的 port 在 port 目录中的位置。 如果您在这里设定了 1 个以上的分类, 则认为您 port 文件应放到以第一个分类命名的子目录中。 请参阅 后面 关于如何选择正确分类的更多讨论。

5.3.2 目前的分类表

  这是目前 port 中的分类。 那些用星号 (*) 标记的是 虚拟分类 ── 它们在ports树里没有相应的子目录, 因而只用来做为次要的分类, 用以方便搜索。

注意: 对于非虚拟的分类来说, 您会看到在相对应子目录中的 Makefile 里有写在 COMMENT 里的单行描述。

分类 描述 注意事项
accessibility 帮助残障人士的 port。  
afterstep* 对于 AfterStep 窗口管理器的支持。  
arabic 阿拉伯语言支持。  
archivers 压缩与备份工具。  
astro 有关天文学的 port。  
audio 声音支持。  
benchmarks 测评程序。  
biology 生物学相关的软件。  
cad 计算机辅助设计工具。  
chinese 中文语言支持。  
comms 通讯软件。 大部分是用于串口通讯的。
converters 字符编码转换。  
databases 数据库。  
deskutils 在发明计算机以前就已经在桌面上使用的东西。  
devel 程序开发工具。 不要把开发库放在这里 ── 除非您再也找不到更合适的分类, 否则就不该放在这个分类里。
dns DNS 相关的软件。  
docs* 有关 FreeBSD 文档的 Meta-ports。  
editors 通用编辑器。 有特殊用途的编辑器应该被置于相应的分类中 (比如, 数学-方程式 编辑器应该放在 math 分类里。
elisp* Emacs-lisp相关的port。  
emulators 其它操作系统的模拟器。 终端模拟器 不应该 属于这个分类 ── 基于 X 的应该放在 x11 而基于文本模式的应该放到 commsmisc 中去, 取决于具体的功能。
finance 货币、 金融以及相关的应用程序。  
french 法语语言支持。  
ftp FTP 客户端和服务器端的程序。 如果您的 port 同时支持 FTP 和 HTTP 的话, 把它放进 ftp 并把 www 做为第二分类。
games 游戏。  
geography* 与地理学有关的软件。  
german 德语语言支持。  
gnome* 关于 GNOME 项目的支持。  
gnustep* 与 GNUstep 桌面环境有关的软件。  
graphics 图形图象程序。  
hamradio* 业余无线电爱好者使用的软件。  
haskell* 有关 Haskell 编程语言的软件。  
hebrew 希伯来语语言支持。  
hungarian 匈牙利语语言支持。  
ipv6* IPv6 相关软件。  
irc IRC 相关程序  
japanese 日语语言支持。  
java 与 Java™ 编程语言有关的软件。 java 分类对 port 而言不应是其唯一的分类。 除了直接与 Java 语言相关的 port 之外, 开发人员应尽量避免使用 java 作为 port 的主分类。
kde* K 桌面环境 (KDE) 相关的软件。  
kld* 可加载内核模块。  
korean 韩语语言支持。  
lang 编程语言。  
linux* Linux 相关的应用程序。  
lisp* 和 Lisp 编程语言有关的软件。  
mail 电子邮件软件。  
math 数值计算和其它数学相关的软件。  
mbone* MBone 应用程序。  
misc 各式各样的实用程序。 通常不属于其它的任何分类, 如果可能的话, 尽量为您的 port 选择 misc 以外的分类, 因为在这里的 port 比较容易被人忽略。
multimedia 多媒体软件。  
net 各种网络相关的软件。  
net-im 即时消息软件。  
net-mgmt 网络管理软件。  
net-p2p 对等网 (Peer to peer network) 应用程序。  
news USENET新闻组相关软件。  
palm Palm™ 系列相关软件。  
parallel* 并行计算相关软件。  
pear* Pear PHP 架构相关软件。  
perl5* Perl5 相关的软件。  
plan9* Plan9 相关程序。  
polish 波兰语语言语言支持。  
ports-mgmt 用于管理、 安装和开发 FreeBSD ports 和预编译包的 port。  
portuguese 葡萄牙语语言支持。  
print 打印相关的软件。 桌面出版工具 (打印预览工具等等) 也可以放在此分类里。
python* Python 编程语言相关的软件。  
ruby* Ruby 编程语言相关的软件。  
rubygems* 移植版本的 RubyGems 软件包。  
russian 俄语语言支持。  
scheme* 与 Scheme 语言有关的 port。  
science 科学相关但不适合放在 astrobiology, 以及 math 分类的 port。  
security 安全相关的实用程序。  
shells 命令行 shell。  
spanish* 西班牙语支持  
sysutils 系统相关的实用程序。  
tcl* 依赖于 Tcl 运行的 port。  
textproc 文本处理的实用程序。 这个分类并不适合于那些应该放到 print 的桌面出版工具。
tk* 依赖于 Tk 运行的 port。  
ukrainian 乌克兰语语言支持。  
vietnamese 越南语语言支持。  
windowmaker* WindowMaker 窗口管理器的相关支持。  
www Word Wide Web的相关软件。 HTML语言相关的支持也可以放在这个分类里。
x11 X Window System以及相关软件。 这个分类是给那些直接支持X Window System 的软件的。 不要把常规的 X 应用程序也放进这里; 它们中的大多数都应被归类到 x11-* (参见下文)。 如果您的 port X 应用程序, 应定义 USE_XLIB (使用 USER_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 桌面环境有关的 port。  
zope* Zope 相关的支持。  

5.3.3 选择正确的分类

  由于不少分类是重复的, 您通常在用哪个分类作为您 port 的主分类上做出选择。 下面有几条规则能帮您解决这个问题。 这是一个带优先级的表, 按优先级降序罗列:

  如果您不能确定使用哪个分类, 请在您提交的 send-pr(1) 里加上一行注释, 这样我们就能在导入进 port 树之前讨论一下。 如果您是 committer, 发一份备忘到 FreeBSD ports 邮件列表 先讨论一下。 很多情况是新的 port 被加到错误的分类里, 然后又立即被移走。这会造成源代码库不必要和不良的膨胀。

5.3.4 如何提议建立新的分类

  由于 Ports Collection 在持续增长, 已经引入了许多新的分类。 新的分类既可以是 虚拟的 分类 ── 这些分类在整个 ports 目录中没有属于自己的子目录 ── 或 物理的 分类 ── 它们有自己的子目录。 接下来我们将讨论与建立新的物理分类有关的事项, 以便帮助您理解如何提议建立新的分类。

  我们目前的做法是避免建立新的物理分类, 除非有非常多的 port 应被归入这一分类, 或者 port 属于某一特定的小团体 (例如, 与某种人类语言相关), 或两者皆是。

  这样做的原因是这类修改会让 committer 和用户都不得不进行 许多工作 来在 Ports Collection 进行或追踪修改。 此外, 提议新的分类通常都会引起争论。 (可能这是因为关于某个分类是否 “太大” 一直没有非常一致的意见的缘故, 另一方面, 分类是否能够能够有助于浏览 (以及多少个分类是合适的), 等等, 也都是问题。)

  下面是具体的步骤:

  1. FreeBSD ports 邮件列表 提议新的分类。 您应提供建立新分类的详细依据, 包括为什么认为现有的分类不够, 以及希望移动位置的一系列 port 的名字。 (如果有尚在 GNATS 而未 commit 的 port, 也应一一列出。) 如果您是相关 port 的监护人或提交者, 说明这一情况可能有助于您的提议得到通过。

  2. 参与讨论。

  3. 如果有人支持您的建议, 应及时提交一个 PR, 其中包括提议 PR 的理由, 以及需要移动的 port 的列表。 理想情况下, 这个 PR 也应包含针对下列文件的补丁:

    • 进行 repocopy 之后对 Makefile 进行的修改

    • 新分类的 Makefile

    • 旧分类的 Makefile

    • 依赖于旧 port 的 port 的 Makefile

    • (此外, 作为一项加分因素, 您还可以按照 Committer 指南所介绍的流程, 提供一些其它需要修改的文件。)

  4. 由于这是一项影响 ports 基础设施的变动, 它不仅涉及 repo-copy 的使用, 而且也可能会影响联编集群的回归测试操作, 因此这类 PR 应分派给 Ports 管理团队

  5. 如果这一 PR 得到批准, 某个 committer 将按照在 Committer 指南 中所介绍的步骤来完成余下的工作。

  提议新的虚拟分类和上述过程类似, 但会容易许多, 因为不需要实际地移动任何 port。 这种情况下, PR 应附带的补丁, 就只需要修改影响到的 port 的 Makefile, 以便在其中的 CATEGORIES 中加入新的分类了。

5.3.5 如何提议对分类进行重新组织

  有些时候会有一些人提议重新将分类组织为 2-层 或某种基于关键字的结构。 目前为止, 还没有进行任何相关的改变, 因为尽管这些修改比较容易完成, 但修改整个 Ports Collection 所需要进行的工作, 至少也是令人生畏的。 在发表您的观点之前, 请阅读在邮件列表存档中历史上所进行过的提议; 此外, 您也会被要求提供一个可用的原形。

若您有关于 FreeBSD ports 系统的问题, 请发送电子邮件至 <ports@FreeBSD.org>。
关于此文档的任何问题, 请致函 <doc@FreeBSD.org>。