关于软件打包和软件补丁的若干疑问
随着我对软件的RPM系打包的了解加深,似乎RPM打包可以完全理解成压缩一些东西罢了。spec文档的唯护的确让我觉得很没劲,特别是%changelog我遇到太长的都要删除,因为有些spec的%changelog占了整个文档的一半以上的空间,这些列表除了证明有多少个邮件列表和人物有为这个软件打过包外没有任何意义,所以我甚至根本就不在%changelog写入自己的信息。
补丁是RPM系的另一个大问题,很少能看明白这个补丁有什么意义,或者是这个补丁解决什么问题,或是这个补丁有没有在未来版本可用的价值。在我看来,如果不是软件本身存在有缺陷,就不应该使用任何补丁,而且补丁不具有很长的后续有用性,除非这个软件作者是个白痴。如果是针对自己发行版本所做的代码修改,很关键的应该是写sed脚本并在打包过程中应用它,只有sed知道如何修改配置,而patch是死的是定位的,一样的配置修改只是换了行位置,patch就无法使用。
而目前的状况:FC有大量针对FC的补丁,这些不是修正什么BUG,大部份都是针对发行版的修改,没有人有用指令编辑器sed的习惯。批评二,MGC的spec档中有不少中文翻译是UTF8码的,并且无法用iconv进行编码转换。 %changelog一是表明打包者的身份,二是可以做一些说明。不过多了的确没用,太多的我也是删除的。
如果补丁只是改配置,当然可以用sed,不过有些补丁涉及到源码本身的修改,再用sed就不合适了。况且有些补丁是很长的。
至于补丁的意义,其实大部分补丁看了后是可以知道想做什么的。 我想知道apr apr-util pcre 这三个在MGC2.1中的源码所使用的补丁有什么特别作用,我为自己编译服务器的缘故,升级了这三个库并且去掉了补丁。
虽然我在post_install.sh中添加了纠正hostname的部份,不过很奇怪的有时安装也有纠正失败的时候。。。,如果hosts和network的hostname不统一,apache服务就不能正常运行,也误导我去升级apr和重编译apr-util。 patch 的作用最大的就是:你修改完源代码,就可以生成 patch ,sed 的话,你要确保定位,还有我没见过把两个版本的源代码进行比对后生成 sed 代码的东西。
sed 要确保确实找对地方,这点 patch 比较好,宁愿认为错误,也不能打错地方(虽然还是有这个问题)。这点在版本升级后很重要的。 原帖由 jiangtao9999 于 2007-9-11 19:26 发表 http://www.linuxfans.org/bbs/images/common/back.gif
patch 的作用最大的就是:你修改完源代码,就可以生成 patch ,sed 的话,你要确保定位,还有我没见过把两个版本的源代码进行比对后生成 sed 代码的东西。
sed 要确保确实找对地方,这点 patch 比较好,宁愿 ...
sed用于配置修改,它的灵活度要高,不会由于版本的变化而失效(实际是配置文件有所变化,patch是会失效的)。而对软件本身的改进修改或是BUG修改的确应该用patch,以保证它的严肃性。我所想阐述的不过是说应该多考虑sed指令编辑器的应用,而不是全部用patch,一堆的patch唯护起来相当困难。
[ 本帖最后由 haulm 于 2007-9-12 10:39 编辑 ]
页:
[1]