PORTREVISION是一个增加的数字(可以理解为port的次版本号),以下划线连接,当PORTVERSION增加时会被置为0,每一次对同版本的port修改时,PORTREVISION都要增加.
PORTREVISION应当被修改的情况:
添加新的补丁修正bug或添加新的功能.
修改了Makefile的编译时选项.
pkg-plist的修改或安装时行为的修改.(例如,改变ssh的脚本,初始化ssh host key)
一个port的依赖共享库版本改变.(这种情况,在安装了一个新版本后再安装老版本会出错.因为他要依赖老的libfoo.x而不是libfoo.(x+1)).
对port的distfiles的改变.比如,因为port的源代码新版本和旧版本之间存在微不足道的改变,我们只需要修改distinfo而不需要修改PORTVERSION.
不需要修改PORTREVISION的例子:
port结构的风格改变(如文件安装位置的变化)但没有功能的增加.
MASTER_SITES的改变或虽然有port功能的改变但不影响最后打成的包.
微不足道的对distfile的格式的修改,但对使用者而言没有任何升级的麻烦.
使一个port可编译(以前是失败的),而没有新功能的加入.既然PORTREVISION影响包的内容,如果先前没有可编译的包,当然也就不需要修改PORTREVISION来表示变化.
一个原则是:他人持有你修改过的port时受益(如,增强,修改等),如果是,PORTREVISION需要修改以明确表示一个新的port已经诞生.
很长一段时间,软件商或FreeBSD的porter存在表示版本的数字上讲新的port小于旧port的情况,如从foo-20000801更新到foo-1.0.因为20000801大于1,所以会让人产生误解.
在这种情况下,PORTEPOCH应当增加.如果PORTEPOCH不为0,就应当加到包名字的后面(以逗号分割).PORTEPOCH不会降低或重置为0.如上面例子应该是foo-1.0,1 .虽然数字仍然小于20000801,但",1"的后缀表示这是一个比没有后缀的port更新的版本.
希望大家不要使用PORTEPOCH.使用了PORTEPOCH表示以后这个port的源代码可能会改变版本号的结构
举个例子,如果一个snapshot版本的发布日期是20000917,而它的前一个版本是1.2,那么这个版本应当为1.2.20000917,而不是20000917,那么新的版本1.3发布后,仍然保持了版本号的增加.
gtkmumble port, 版本0.10提交
PORTNAME= gtkmumble PORTVERSION= 0.10
PKGNAME是gtkmumble-0.10
一个安全漏洞被发现,添加新的patch.修改PORTREVISION.
PORTNAME= gtkmumble一个新的版本发布,为0.2(看来上一个版本应当是0.1.0,而不是来自0.9:-)).因为新版本的0.2小于已有的0.10.这是需要设置一个PORTEPOCH同时PORTREVISION置为0.
PORTNAME= gtkmumble PORTVERSION= 0.2 PORTEPOCH= 1
PKGNAME变成gtkmumble-0.2,1
下一个版本是0.3.因为PORTEPOCH是不会降低的.版本号应该是:
PORTNAME= gtkmumble PORTVERSION= 0.3 PORTEPOCH= 1
PKGNAME变成gtkmumble-0.3,1
注意: 如果这里的PORTEPOCH置为0,安装了gtkmumble-0.10_1的使用者不会发现gtkmumble-0.3是新的版本,因为0.3小于0.10.
上一页 | 首页 | 下一页 |
PORTNAME和PORTVERSION | 向上 | PKGNAMEPREFIX和PKGNAMESUFFIX |