5.3.归类

5.3.1. CATEGORIES

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

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

5.3.2. 当前类别列表

这是当前 port 类别列表。用星号标记( * )的是虚拟类别 - 在 ports 树中没有相应子目录的类别。它们仅用作辅助类别,仅供搜索目的使用。

分类
说明
备注

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 分类中,并将 editors 作为第二分类。

education*

与教育相关的软件。

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

elisp*

Emacs-lisp 的 Port。

emulators

其他操作系统的模拟器。

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

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

互联网中继聊天工具。

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 编辑器,而不是反过来。而且,当 port 属于 irc、mail、news、security 或 www 中的任何一个时,不要列出 net,因为 net 会隐式包含在内。

  • x11 仅用作辅助类别,当主类别为自然语言时。特别是,不要在 X 应用程序的类别行中放置 x11。

  • Emacs 模式与模式支持的应用程序放在同一个 ports 类别中,而不是在 editors 中。例如,用于编辑某些编程语言的源文件的 Emacs 模式放入 lang。

  • Ports 安装可加载内核模块也在它们的 CATEGORIES 行中有虚拟类别 kld。这是通过添加 USES=kmod 自动处理的事项之一。

  • 如果与其他非虚拟类别中没有出现 misc,则表示如果在 CATEGORIES 中有 misc 与其他内容,则可以安全删除 misc 并将 port 仅放置在另一个子目录中。

  • 如果 port 真的没有其他适合的地方,请放入 misc。

如果类别没有明确定义,请在 bug 数据库中 port 提交时添加一条评论,以便在导入之前讨论。作为提交者,请发送一封邮件到 FreeBSD ports 邮件列表,以便我们可以首先讨论。太多情况下,新的 ports 被导入到错误的类别,然后立即移动。

5.3.4. 提出新分类

随着 Ports 的增长,引入了各种新分类。新分类可以是虚拟分类 - 即不在 ports 树中具有相应子目录的分类 - 或物理分类 - 即在 ports 树中具有相应子目录的分类。本节讨论了创建新物理分类涉及的问题。在提出新分类之前,请仔细阅读。

我们现有的做法是避免创建新的物理分类,除非逻辑上大量的 ports 应属于该分类,或者应属于该分类的 ports 是一个逻辑上独特且受到有限普遍兴趣的群体(例如,与口头人类语言有关的分类),或者最好两者兼而有之。

这样做的理由是,这样的变化会给所有跟踪 Ports Collection 变化的提交者和用户带来相当多的工作量。此外,拟议的类别变动似乎自然而然地会引起争议。(也许这是因为对于何时一个类别“太大”没有明确的共识,或者类别是否应该适合浏览(以及理想的类别数量是多少),等等。)

这是程序:

  1. 在 FreeBSD ports 邮件列表上提出新类别。包括新类别的详细理由,包括为什么现有类别不够用,以及要移动的现有 ports 列表。(如果在 Bugzilla 中有适合该类别的新 ports,也将它们列出。)如果你是维护者和/或提交者,请提及,因为这可能有助于案例。

  2. 参与讨论

  3. 如果看起来支持这个想法,请提交包括理由和需要移动的现有 ports 列表的 PR。理想情况下,这个 PR 还会包括以下补丁:

    • 一旦它们被复制,为新的 ports 创建 Makefiles

    • 新类别的 Makefile

    • 旧类别的 ports 的 Makefile

    • 依赖旧 ports 的 ports 的 Makefiles

    • 对于额外的学分,请包括根据提交者指南中的程序需要更改的其他文件。

  4. 由于它影响 ports 基础架构并涉及移动和修补许多 ports,还可能在构建集群上运行回归测试,因此请将 PR 分配给 Ports 管理团队[email protected]

  5. 如果该 PR 获得批准,一个 committer 需要按照提交者指南中概述的其余程序继续操作。

提议新建虚拟类别类似于上述过程,但涉及较少操作,因为不必移动任何 ports。在这种情况下,将包括在 PR 中的唯一补丁是那些将新类别添加到受影响 ports 的 CATEGORIES 中。

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

有时候有人提议用 2 级结构或其他一些关键字结构重新组织类别。到目前为止,这些提议都没有任何进展,因为虽然很容易提出,但要将现有的 ports 整体重新组织的工作量令人望而却步。在发布这个想法之前,请阅读邮件列表存档中关于这些提议的历史。此外,请准备好接受挑战,以提供一个工作原型。

最后更新于

这有帮助吗?