在包制作完成之后,
它会被放在 /usr/ports/packages/All
,
并建立一系列来自
/usr/ports/packages
下子目录的符号连接。 这些子目录的名称是由
CATEGORIES
指定的。 这将方便于那些用户在 FTP 站点或 CDROM
的一大堆包里面寻找自己想要的包。 请查看一下
目前的分类表,
并找出一个适合您 port 的分类。
此列表也会决定您的 port 在 port 目录中的位置。 如果您在这里设定了 1 个以上的分类, 则认为您 port 文件应放到以第一个分类命名的子目录中。 请参阅 后面 关于如何选择正确分类的更多讨论。
这是目前 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 而基于文本模式的应该放到
comms 或 misc
中去, 取决于具体的功能。 |
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 | 科学相关但不适合放在
astro 、
biology , 以及
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 相关的支持。 |
由于不少分类是重复的, 您通常在用哪个分类作为您 port 的主分类上做出选择。 下面有几条规则能帮您解决这个问题。 这是一个带优先级的表, 按优先级降序罗列:
第一个分类必须是个物理的分类 (参阅 前面)。 这对于制作包是必要的。 虚拟分类和物理分类可能在包制作完成后混合在一起。
对于特定语言的分类通常放在第一位。
例如, 如果您的 port 会安装一些 X11 的日文字体,
那么 CATEGORIES
那行
就应该是 japanese x11-fonts
。
有特定意义的分类应当被列在无特定意义的前面。
例如, HTML 编辑器应该是这样的 www
editors
, 而不是其它的什么。 同样地,
您不应该列出 net
, 如果 port 属于
irc
、 mail
、
news
、
security
, 或是 www
,
因为 net
可以表示它们的超集。
只有当主要的分类是一门自然语言的时候,
x11
能被做为第二分类。
需要特别指出的是, 您不应把 X 的应用程序也归类为
x11
。
Emacs
模式应当于相应的应用程序放在同一个分类里, 而不是
editors
分类。 举例来说,
一个用于编辑某种编程语言源代码的
Emacs
模式应该被归为
lang
一类。
需要安装可加载内核模块的 port 应在其 CATEGORIES
中归入虚拟分类 kld
。
misc
分类的 port 不能有其它非虚拟的分类。
如果您在您的 CATEGORIES
里设了 misc
和另外的分类,
那意味着可以安全地删除 misc
并把 port 放到其它的子目录中了!
如果您的 port 确实不属于现有的分类,
才把它放到 misc
。
如果您不能确定使用哪个分类, 请在您提交的 send-pr(1) 里加上一行注释, 这样我们就能在导入进 port 树之前讨论一下。 如果您是 committer, 发一份备忘到 FreeBSD ports 邮件列表 先讨论一下。 很多情况是新的 port 被加到错误的分类里, 然后又立即被移走。这会造成源代码库不必要和不良的膨胀。
由于 Ports Collection 在持续增长, 已经引入了许多新的分类。 新的分类既可以是 虚拟的 分类 ── 这些分类在整个 ports 目录中没有属于自己的子目录 ── 或 物理的 分类 ── 它们有自己的子目录。 接下来我们将讨论与建立新的物理分类有关的事项, 以便帮助您理解如何提议建立新的分类。
我们目前的做法是避免建立新的物理分类, 除非有非常多的 port 应被归入这一分类, 或者 port 属于某一特定的小团体 (例如, 与某种人类语言相关), 或两者皆是。
这样做的原因是这类修改会让 committer 和用户都不得不进行 许多工作 来在 Ports Collection 进行或追踪修改。 此外, 提议新的分类通常都会引起争论。 (可能这是因为关于某个分类是否 “太大” 一直没有非常一致的意见的缘故, 另一方面, 分类是否能够能够有助于浏览 (以及多少个分类是合适的), 等等, 也都是问题。)
下面是具体的步骤:
在 FreeBSD ports 邮件列表 提议新的分类。 您应提供建立新分类的详细依据, 包括为什么认为现有的分类不够, 以及希望移动位置的一系列 port 的名字。 (如果有尚在 GNATS 而未 commit 的 port, 也应一一列出。) 如果您是相关 port 的监护人或提交者, 说明这一情况可能有助于您的提议得到通过。
参与讨论。
如果有人支持您的建议, 应及时提交一个 PR, 其中包括提议 PR 的理由, 以及需要移动的 port 的列表。 理想情况下, 这个 PR 也应包含针对下列文件的补丁:
进行 repocopy 之后对 Makefile
进行的修改
新分类的 Makefile
旧分类的 Makefile
依赖于旧 port 的 port 的
Makefile
(此外, 作为一项加分因素, 您还可以按照 Committer 指南所介绍的流程, 提供一些其它需要修改的文件。)
由于这是一项影响 ports 基础设施的变动,
它不仅涉及 repo-copy 的使用,
而且也可能会影响联编集群的回归测试操作,
因此这类 PR 应分派给 Ports 管理团队 <portmgr@FreeBSD.org>
。
如果这一 PR 得到批准, 某个 committer 将按照在 Committer 指南 中所介绍的步骤来完成余下的工作。
提议新的虚拟分类和上述过程类似, 但会容易许多,
因为不需要实际地移动任何 port。 这种情况下, PR 应附带的补丁,
就只需要修改影响到的 port 的 Makefile, 以便在其中的
CATEGORIES
中加入新的分类了。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.