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

Ports 以帮助残疾用户。

afterstep*

Ports to support the AfterStep window manager.

arabic

阿拉伯语支持。

archivers

存档工具。

astro

天文 ports.

audio

声音支持。

benchmarks

基准测试工具。

biology

生物学相关软件。

cad

计算机辅助设计工具。

chinese

中文语言支持。

comms

通讯软件。

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

converters

字符代码转换器。

databases

数据库。

deskutils

在计算机发明之前曾出现在桌面上的东西。

devel

开发工具

不要只因为它们是库而将其放在这里。除非它们确实不属于其他任何类别,否则它们不应该被放在这个类别中。

dns

DNS 相关软件。

docs*

FreeBSD 文档的 Meta-ports。

editors

普通编辑者。

专用编辑器属于这些工具的部分。例如,数学公式编辑器将属于数学,并有编辑器作为第二类别。

education*

与教育相关的软件。

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

elisp*

Emacs-lisp ports.

emulators

用于其他操作系统的模拟器。

终端模拟器不属于此处。基于 X 的模拟器放入 x11,基于文本的放入 comms 或 misc,具体取决于其功能。

enlightenment*

Ports 相关于 Enlightenment 窗口管理器。

finance

货币、金融及相关应用。

french

法语语言支持。

ftp

FTP 客户端和服务器实用程序。

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

games

游戏。

geography*

地理相关的软件。

german

德语语言支持。

gnome*

来自 GNOME 项目的 Ports

gnustep*

GNUstep 桌面环境相关软件。

graphics

图形实用工具。

hamradio*

业余无线电软件。

haskell*

与 Haskell 语言相关的软件。

hebrew

希伯来语言支持。

hungarian

匈牙利语支持。

irc

互联网中继聊天工具。

japanese

日语语言支持。

java

Java™ 语言相关的软件。

对于 port,Java 类别不能是唯一的一个。除了与 Java 语言直接相关的内容外,还鼓励使用者不要将 Java 作为 port 的主要类别。

kde*

Ports 来自 KDE 项目(通用)。

kde-applications*

KDE 项目的应用程序。

kde-frameworks*

KDE 项目的附加库,用于与 Qt 编程。

kde-plasma*

KDE 项目的桌面环境。

kld*

可加载内核模块。

korean

韩语语言支持。

lang

编程语言。

linux*

Linux 应用程序和支持实用程序。

lisp*

与 Lisp 语言相关的软件。

mail

邮件软件。

mate*

Ports相关于 MATE 桌面环境,这是 GNOME 2 的一个分支。

math

数值计算软件和其他数学实用程序。

mbone*

MBone 应用。

misc

其他实用工具

这不属于其他任何类别的事物。如果可能的话,请尽量找到一个比 misc 更好的分类,因为 ports 在这里往往被忽视。

multimedia

多媒体软件。

net

各种网络软件。

net-im

即时通讯软件。

net-mgmt

网络管理软件。

net-p2p

对等网络应用程序。

net-vpn*

虚拟私人网络应用。

news

USENET 新闻软件。

parallel*

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

pear*

Ports 与 Pear PHP 框架相关。

perl5*

Ports 需要 Perl 版本 5 才能运行。

plan9*

来自 Plan9 的各种程序。

polish

波兰语支持。

ports-mgmt

Ports 用于管理、安装和开发 FreeBSD ports 和软件包。

portuguese

葡萄牙语支持。

print

打印软件。

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

python*

与 Python 语言相关的软件。

ruby*

Ruby 语言相关的软件。

rubygems*

RubyGems 软件包的 Ports。

russian

俄语语言支持。

scheme*

Scheme 语言相关的软件。

science

不属于其他类别(如天文学、生物学和数学等)的科学ports。

security

安全实用程序。

shells

命令行 shells。

spanish*

西班牙语言支持。

sysutils

系统实用程序

tcl*

用于使用 Tcl 运行的Ports。

textproc

文本处理实用工具。

不包括桌面出版工具,这些工具用于打印。

tk*

Ports 使用 Tk 运行。

ukrainian

乌克兰语支持。

vietnamese

越南语支持。

wayland*

Ports 支持 Wayland 显示服务器。

windowmaker*

Ports 以支持 Window Maker 窗口管理器。

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*

Ports 与 Xfce 桌面环境相关。

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 被导入到错误的类别,然后立即移动。

提出新分类

随着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管理团队portmgr@FreeBSD.org

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

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

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

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

最后更新于

FreeBSD 中文社区