5.3.归类

5.3.1. 类别

在创建软件包时,它会被放置在 /usr/ports/packages/All 目录下,并且会从 /usr/ports/packages 的一个或多个子目录中创建链接。这些子目录的名称由变量 CATEGORIES 指定。这旨在为用户在 FTP 站点或 CDROM 上浏览众多软件包时提供便利。请查看当前的分类目录列表,并选择适合该软件包的分类。

此列表还确定了将软件包导入到哪个 Ports 中。如果在此处有多个分类,那么必须将软件包文件放在以第一个分类名称命名的子目录中。请参阅下面的讨论,了解如何选择正确的分类目录。

5.3.2. 目前的类别列表

以下是将内容翻译为中文并调整为 Markdown 格式的结果:

5.3.2. 当前的分类目录列表

下面是当前的 Port 分类目录列表。带有星号 (*) 的是虚拟分类目录 - 即没有对应的 Ports 中子目录的分类目录。它们仅用作次要分类目录,仅用于搜索目的。

对于非虚拟分类目录,在相应子目录的 Makefile 中的 COMMENT 字段中有一行简要说明。

分类描述备注

accessibility

用于帮助残障用户的 Port 。

afterstep*

用于支持 AfterStep 窗口管理器的 Port 。

arabic

阿拉伯语支持。

archivers

存档工具。

astro

天文 Port 。

audio

声音支持。

benchmarks

基准测试工具。

biology

与生物相关的软件。

cad

计算机辅助设计工具。

chinese

中文支持。

comms

通信软件。

大多数用于与串口通信的软件。

converters

字符编码转换器。

databases

数据库。

deskutils

在计算机发明之前用于桌面的东西。

devel

开发工具。

请不要因为它们是库而把库放在这里。除非它们确实不属于其他地方。

dns

DNS 相关软件。

docs*

FreeBSD 文档的元 Port 。

editors

通用编辑器。

专门的编辑器放在相应的工具部分中。例如,数学公式编辑器将放在 math 中,并且在第二个类别中是编辑器。

education*

与教育相关的软件。

这包括主要或实质上设计用于帮助用户学习特定主题或一般学习的应用程序、实用程序或游戏。它还包括课程编写应用程序、课程传递应用程序以及课堂或学校管理应用程序。

elisp*

Emacs Lisp Port 。

emulators

用于其他操作系统的仿真器。

终端仿真器不属于此处。基于 X 的仿真器放在 x11 中,基于文本的仿真器放在 comms 或 misc 中,具体取决于确切的功能。

enlightenment*

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

finance

货币、金融及相关应用。

french

法语支持。

ftp

FTP 客户端和服务器工具。

如果 Port 同时支持 FTP 和 HTTP,请将其放在 ftp 中,次要类别为 www。

games

游戏。

geography*

与地理相关的软件。

german

德语支持。

gnome*

来自 GNOME 项目的 Port 。

gnustep*

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

graphics

图形工具。

hamradio*

业余无线电软件。

haskell*

与 Haskell 语言相关的软件。

hebrew

希伯来语支持。

hungarian

匈牙利语支持。

irc

Internet Relay Chat 工具。

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 tend 往往被忽视。

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 Port 和软件包的 Port 。

portuguese

葡萄牙语支持。

print

打印软件。

桌面发布工具(预览器等)也属于这里。

python*

与 Python 语言相关的软件。

ruby*

与 Ruby 语言相关的软件。

rubygems*

RubyGems 软件包的 Port 。

russian

俄语支持。

scheme*

与 Scheme 语言相关的软件。

science

不适合其他类别(如 astro、biology 和 math)的科学 Port 。

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 Window 系统及其相关软件。

此类别仅用于直接支持窗口系统的软件。不要将常规的 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 的 Port 。

5.3.3. 选择正确的分类

由于许多分类存在重叠,选择哪个分类将成为 Port 的主要分类可能会很繁琐。有几条规则来规定这个问题。以下是按照优先顺序递减的优先级列表:

第一个分类必须是物理分类(见上文)。这对于制作包是必要的。在此之后,虚拟分类和物理分类可以交错排列。

特定语言的分类始终排在前面。例如,如果 Port 安装日语 X11 字体,则 CATEGORIES 行将会是japanese x11-fonts

特定分类排在较不具体的分类前面。例如,HTML 编辑器将列为www editors,而不是相反。此外,当 Port 属于ircmailnewssecuritywww中的任何一个时,请不要将net列为分类行,因为net隐含在其中。

仅当主分类是自然语言时,才将x11用作次要分类。特别地,在 X 应用程序的分类行中不要放置x11

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

安装可加载内核模块的 Port 的 CATEGORIES 行中也有虚拟分类kld。这是通过添加USES=kmod自动处理的一件事。

misc不会与任何其他非虚拟分类一起出现。如果 CATEGORIES 中有misc和其他内容,这意味着可以安全地删除misc,并将 Port 仅放置在其他子目录中。

如果 Port 确实不属于其他任何分类,请将其放置在misc中。

如果分类没有明确定义,请在错误数据库中的 Port 提交中添加注释,以便在导入之前进行讨论。作为提交者,请发送一封邮件到 FreeBSD Ports 邮件列表,以便我们首先讨论。新 Port 经常被错误地导入到错误的分类中,然后立即被移动。

5.3.4. 提议新的分类

随着 Ports 随着时间的推移不断增长,引入了各种新的分类。新的分类可以是虚拟分类 - 即在 Ports 中没有相应子目录的分类,或者是物理分类 - 即有的。本节讨论了创建新的物理分类时涉及的问题。在提议一个新的分类之前,请仔细阅读本节。

根据我们现有的实践,除非逻辑上有大量的 Port 可以属于它,或者属于它的 Port 是一个逻辑上独特且受到有限普遍兴趣的逻辑上独特的群组(例如,与人类语言有关的分类),或者最好是两者都有。

这样做的原因是,这种变化会给提交者和跟踪 Ports 更改的所有用户带来相当大的工作量。此外,提议的分类更改似乎总是会引起争议。 (这也许是因为对于何时分类是“太大”,或者分类是否应该适合浏览(从而理论上多少个分类才是理想数量),等等,没有明确的共识。)

以下是步骤:

在 FreeBSD Ports 邮件列表上提出新分类的提议。包括对新分类的详细论证,包括为何现有分类不足以解决问题,以及提议移动的现有 Port 列表。 (如果在 Bugzilla 中有待处理的新 Port ,适合此类别,请将其列出。)如果您是维护者和/或提交者,请提及,因为这可能有助于案例。

参与讨论。

如果似乎支持该想法,请提交 PR,其中包括对新 Port 进行复制后的新 Port 的 Makefile,以及以下这些补丁(理想情况下):

  • 新 Port 的 Makefiles

  • 新类别的 Makefile

  • 旧 Port 的类别的 Makefile

  • 依赖于旧 Port 的 Port 的 Makefiles

  • (额外的任务:根据 Committer’s Guide 中的步骤,包括必须更改的其他文件。)

由于这会影响 Port 基础设施,并涉及到移动和修补许多 Port ,但也可能在构建集群上运行回归测试,因此将 PR 分配给 Ports Management Team portmgr@FreeBSD.org

如果该 PR 得到批准,提交者将需要遵循 Committer’s Guide 中概述的其余过程。

提议新的虚拟分类与上述类似,但涉及较少,因为实际上不需要移动任何 Port 。在这种情况下,只需在受影响 Port 的 CATEGORIES 中添加新类别的补丁即可。

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

偶尔会有人提议使用两级结构或某种其他类型的关键字结构重新组织分类。迄今为止,所有这些提议都没有实现,因为虽然它们很容易制作,但将整个现有 Ports 改组的工作量无疑是令人望而却步的。在发布这个想法之前,请阅读邮件列表存档中关于这些提案的历史。此外,准备好提供一个工作的原型。

最后更新于

FreeBSD 中文社区