For the complete documentation index, see llms.txt. This page is also available as Markdown.

5.3.归类

5.3.1. CATEGORIES

当创建一个包时,它会被放置在 /usr/ports/packages/All 目录下,并且会从 /usr/ports/packages 的一个或多个子目录中创建链接。这些子目录的名称由变量 CATEGORIES 指定。这样做是为了方便用户在 FTP 站点或 CDROM 上浏览成千上万的包时更轻松。请查看 当前的分类列表,选择适合该 Port 的分类。

该列表还决定了 Port 在 Ports 树中的导入位置。如果有多个分类,Port 文件必须放在第一个分类名称的子目录中。更多关于如何选择正确分类的讨论,请参见 下文

5.3.2. 当前分类列表

以下是当前的 Port 分类列表。带有星号(*)标记的是 虚拟 分类——这些分类在 Ports 树中没有对应的子目录,仅作为次要分类使用,并且仅用于搜索目的。

注意

对于非虚拟分类,每个子目录的 Makefile 中的 COMMENT 会有一行描述。

分类
说明
备注

accessibility

帮助残障用户的 Port。

afterstep*

支持 AfterStep 窗口管理器的 Port。

arabic

阿拉伯语语言支持。

archivers

压缩与归档工具。

astro

天文学相关的 Port。

audio

音频支持。

benchmarks

基准测试工具。

biology

生物学相关的软件。

budgie*

与 Budgie 桌面环境相关的软件。

cad

计算机辅助设计工具。

chinese

中文语言支持。

comms

通信软件。

主要是用于与串口通信的软件。

converters

字符编码转换工具。

databases

数据库相关的软件。

deskutils

曾经在计算机发明之前属于桌面上的工具。

devel

开发工具。

不要仅仅因为是库文件就把它们放在这个分类下。除非它们真正不属于其他分类,否则不应放在此分类。

dns

与 DNS 相关的软件。

docs*

FreeBSD 文档的元 Port。

editors

一般文本编辑器。

专用编辑器应放在特定工具的分类中。例如,数学公式编辑器应放在 math 分类中,并将 editors 作为第二分类。

education*

与教育相关的软件。

包括主要或大部分设计用于帮助用户学习特定主题或进行一般学习的应用程序、工具或游戏。还包括课程编写应用程序、课程交付应用程序以及课堂或学校管理应用程序。

elisp*

Emacs-lisp 的 Port。

emulators

其他操作系统的模拟器。

终端模拟器不应放在此分类中。基于 X 的模拟器应放入 x11 分类,基于文本的模拟器应放入 commsmisc,具体取决于功能。

enlightenment*

与 Enlightenment 窗口管理器相关的 Port。

filesystems

文件系统及相关工具。

finance

与货币、金融相关的应用程序。

french

法语语言支持。

ftp

FTP 客户端和服务器工具。

如果 Port 同时支持 FTP 和 HTTP,应将其放入 ftp 分类,并加上 www 作为第二分类。

games

游戏。

geography*

与地理相关的软件。

german

德语语言支持。

gnome*

来自 GNOME 项目的 Port。

gnustep*

与 GNUstep 桌面环境相关的软件。

graphics

图形工具。

hamradio*

业余无线电相关软件。

haskell*

与 Haskell 语言相关的软件。

hebrew

希伯来语语言支持。

hungarian

匈牙利语语言支持。

irc

互联网中继聊天工具。

japanese

日语语言支持。

java

与 Java™ 语言相关的软件。

java 分类不应是 Port 唯一的分类。除非是直接与 Java 语言相关的 Port,否则不建议使用 java 作为 Port 的主要分类。

kde*

来自 KDE 项目的 Port(通用)。

kde-applications*

来自 KDE 项目的应用程序。

kde-frameworks*

KDE 项目的 Qt 编程附加库。

kde-plasma*

来自 KDE 项目的桌面环境。

kld*

可加载的内核模块。

korean

韩语语言支持。

lang

编程语言。

linux*

Linux 应用程序和支持工具。

lisp*

与 Lisp 语言相关的软件。

mail

邮件软件。

mate*

与 MATE 桌面环境相关的 Port,GNOME 2 的一个分支。

math

数值计算软件及其他数学相关工具。

mbone*

MBone 应用程序。

misc

杂项工具。

不属于其他分类的工具。如果可能,尽量为 Port 找到更合适的分类,而不是放在 misc 中,因为该分类中的 Port 往往容易被忽视。

multimedia

多媒体软件。

net

各种网络软件。

net-im

即时通讯软件。

net-mgmt

网络管理软件。

net-p2p

点对点网络应用。

net-vpn*

虚拟专用网络应用。

news

USENET 新闻软件。

parallel*

处理计算中的并行性的应用程序。

pear*

与 Pear PHP 框架相关的 Port。

perl5*

需要 Perl 5 版本运行的 Port。

plan9*

来自 Plan9 的各种程序。

polish

波兰语语言支持。

ports-mgmt

用于管理、安装和开发 FreeBSD Ports 和包的工具。

portuguese

葡萄牙语语言支持。

print

打印软件。

包括桌面出版工具(如预览器等)。

python*

Python 语言相关的软件。

ruby*

Ruby 语言相关的软件。

rubygems*

RubyGems 包的 Port。

russian

俄语语言支持。

scheme*

与 Scheme 语言相关的软件。

science

不适合其他分类的科学相关 Ports,如 astrobiologymath

security

安全工具。

shells

命令行 Shell。

spanish*

西班牙语语言支持。

sysutils

系统工具。

tcl*

使用 Tcl 运行的 Port。

textproc

文本处理工具。

不包括桌面出版工具,这些应放入 print 分类。

tk*

使用 Tk 运行的 Port。

ukrainian

乌克兰语语言支持。

vietnamese

越南语语言支持。

wayland*

支持 Wayland 显示服务器的 Port。

windowmaker*

支持 Window Maker 窗口管理器的 Port。

www

与万维网相关的软件。

HTML 语言支持也应归入此分类。

x11

X 窗口系统及其相关工具。

该分类仅适用于直接支持窗口系统的软件。不要将常规 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 桌面环境相关的 Port。

zope*

Zope 支持。

5.3.3. 选择正确的分类

由于许多分类有重叠,选择哪一个分类作为 Port 的主要分类可能会很繁琐。对此有几个规则。以下是按优先顺序递减的规则:

  • 第一个分类必须是物理分类(见上文)。这是为了使打包工作正常进行。虚拟分类和物理分类可以在之后混合使用。

  • 语言特定的分类总是优先。例如,如果该 Port 安装的是日语 X11 字体,则 CATEGORIES 行应写为 japanese x11-fonts

  • 特定的分类应列在不太具体的分类之前。例如,一个 HTML 编辑器应该列为 www editors,而不是反过来。并且,如果 Port 属于 ircmailnewssecuritywww 中的任何一个分类时,不要列出 net,因为 net 已经隐含包含在内。

  • x11 仅在主要分类为自然语言时作为二级分类使用。特别是,不要将 x11 放在 X 应用程序的分类行中。

  • Emacs 模式应放置在与其支持的应用程序相同的 Ports 分类中,而不是放在 editors 中。例如,用于编辑某编程语言源文件的 Emacs 模式应放在 lang 分类下。

  • 安装可加载内核模块的 Ports 也应在 CATEGORIES 行中包含虚拟分类 kld。这可以通过添加 USES=kmod 自动处理。

  • misc 不应与任何其他非虚拟分类一起使用。如果 CATEGORIES 中出现了 misc 和其他分类,那就意味着可以安全地删除 misc,并将 Port 只放在另一个子目录下。

  • 如果该 Port 确实不属于任何其他分类,则将其放入 misc

如果分类不明确,请在提交 Port 时在 bug 数据库中加入评论,以便在导入前进行讨论。作为提交者,请向 FreeBSD Ports 邮件列表发送通知,以便我们先进行讨论。很多时候,新的 Ports 被导入到错误的分类中,之后又立即被移动。

5.3.4. 提议新分类

随着 Ports 的不断发展,已经引入了多个新分类。新分类可以是 虚拟 分类——即在 Ports 树中没有对应的子目录的分类——或者是 物理 分类——即有对应子目录的分类。本节讨论了创建新物理分类时涉及的问题。在提议新分类之前,请仔细阅读以下内容。

我们现有的做法是,除非有大量的 Port 明显属于该分类,或者这些 Port 是逻辑上独立的且属于一般兴趣有限的群体(例如与口语人类语言相关的分类),否则避免创建新的物理分类,最好是两者都满足。

这样做的原因是,这样的变更会给 提交者和用户带来相当大的工作量,特别是那些追踪 Ports 变化的用户。此外,提议的分类更改往往会引发争议。(也许这是因为对于分类何时“过大”以及分类是否应便于浏览(因此理想的分类数量是多少)等问题,缺乏明确的共识,等等。)

以下是提出新物理分类的程序:

  1. FreeBSD Ports 邮件列表上提议新分类。提供详细的理由,说明现有分类不足之处,并列出拟迁移到该分类的现有 Ports。(如果有在 Bugzilla 中待处理的符合该分类的新 Ports,也请列出。)如果你是维护者和/或提交者,请提及这一点,因为这可能有助于你的提议。

  2. 参与讨论。

  3. 如果看起来有支持这一想法的声音,请提交一个 PR,包含新分类的理由和需要迁移的现有 Ports 列表。理想情况下,PR 还应包括以下补丁:

    • 新 Ports 的 Makefile,在它们被复制到新位置后

    • 新分类的 Makefile

    • 旧分类的 Makefile

    • 依赖旧 Ports 的 Makefile

    • (额外的奖励,提供根据提交者指南中程序要求需要更改的其他文件)

  4. 由于它影响 Ports 基础设施,并涉及迁移和补丁许多 Ports,可能还需要在构建集群上运行回归测试,因此请将 PR 分配给 Ports 管理团队 portmgr@FreeBSD.org

  5. 如果该 PR 获得批准,提交者将需要按照 提交者指南 中概述的其余程序进行操作。

提议新虚拟分类与上述类似,但要简单得多,因为实际上不需要迁移任何 Port。在这种情况下,PR 中仅需包含那些将新分类添加到受影响 Port 的 CATEGORIES 的补丁。

5.3.5. 提议重新组织所有分类

偶尔有人提议以 2 层结构或其他某种关键字结构重新组织分类。到目前为止,这些提议没有取得任何进展,因为虽然提出这些提议很容易,但将整个现有 Ports 进行任何形式的重组工作非常庞大,可以说是非常艰巨的任务。在发布此类想法之前,请阅读邮件列表档案中的这些提议的历史记录。此外,准备好接受挑战,提供一个有效的原型。

最后更新于