第18章.软件包的命名

以下是我们软件包命名的约定俗成.

一般应当是[语言[_区域]]-软件名[[-]编译.细节]-版本.数字

软件包的名字一般定义成${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}.确定你在Makefile中的设定是符合格式的.

  1. FreeBSD努力的支持本地化语言[语言-] 这一部分应当是ISO-639定义的本地语言的两个字母的缩写.如 zh 代表中文;ja 代表日文;ko 代表韩文等.

    如果port明确定义了使用这个语言的地区,可以添加两个字符的地区缩写,如:en_US代表美国英语 fr_CH代表瑞士法语.

    [语言-] 这一部分应当在PKGNAMEPREFIX定义.

  2. 软件名 应当是小写的.perl5的模块使用p5-作为前缀,食用连字符"-"代替了"::",如:Data::Dumper就变成p5-Data-Dumper.如果软件名本身就有数字.连字符.下划线,你可以保留,如:kinput2
  3. If the port can be built with different hardcoded defaults (usually part of the directory name in a family of ports), the -compiled.specifics part should state the compiled-in defaults (the hyphen is optional). Examples are papersize and font units.
  4. [编译.细节] 部分应当在PKGNAMESUFFIX变量定义.
  5. 版本号应当在破折号的后面,以句点分割,只使用一个小写字母.通常不要在版本号部分出现另外一个破折号.唯一例外的字符是pl(patchlevel),当没有主次版本号时使用.如果软件名本身有alpha beta rc pre等字符串,使用第一个字符在句点后添加.如果后面还有版本信息,应当跟在字母的后面(不是句点),如2.2alpha3就是2.2a3 主要是为了按照版本号可以很容易的给port排序.一定要确认版本号以句号分割,或者使用时间做版本号应该使用yyyy.mm.dd,不要使用其它格式(于Y2k不兼容)

这里是一些真实的例子,告诉你怎样转化为一个可取的包的名字.

发布名 PKGNAMEPREFIX PORTNAME PKGNAMESUFFIX PORTVERSION 原因
mule-2.2.2 (empty) mule (empty) 2.2.2 无需变化
XFree86-3.3.6 (empty) XFree86 (empty) 3.3.6 无需变化
EmiClock-1.0.2 (empty) emiclock (empty) 1.0.2 单一程序没有大写名
rdist-1.3alpha (empty) rdist (empty) 1.3.a

不允许alpha之类的字符

es-0.9-beta1 (empty) es (empty) 0.9.b1 不允许beta之类的字符
mailman-2.0rc3 (empty) mailman (empty) 2.0.r3 No strings like rc allowed
v3.3beta021.src (empty) tiff (empty) 3.3 同上
tvtwm (empty) tvtwm (empty) pl11 版本号总是需要的
piewm (empty) piewm (empty) 1.0 版本号总是需要的
xvgr-2.10pl1 (empty) xvgr (empty) 2.10.1 没有主次版本号才使用pl
gawk-2.15.6 ja- gawk (empty) 2.15.6 日语版本
psutils-1.13 (empty) psutils -letter 1.13 Papersize hardcoded at package build time
pkfonts (empty) pkfonts 300 1.0 300dpi的字体包

如果源代码中没有版本号,很有可能作者不会发布其他版本,就把版本号设置为1.0,不然就问讯作者或置为(yyyy.mm.dd)