Rpm
打包原理详解
为什么要打包?
制作
rpm
不仅仅是打包,更可以解决菜单创建、打补丁、完成大量预配置、与其
他软件包互动等操作。
使用源代码安装要求用户了解基本的编译过程、
能够应付各种不能编
译的意外、
必须自己完成抽象的配置、甚至懂得软件开发,能够自己打补丁,„„对非计算
机专业的用户而言简直就是天方夜谭。
这是把软件开发的最后一步抛给了用户,
作为发行版,
这是极不负责任的!也是不现实的,除非用
lfs
,但那是一本菜谱,不是真正的发行版。
软件作者发布源代码是正确的,负责的作者一般都同时提供
rpm
和
deb
包以及它们的源
代码包。除非他们不会制作。愿意使用什么,那是个人的自由,但对外就不能只想到自己。
GNU
精神是一种公益精神,没有奉献精神,在自由软件领域是要遭唾弃的!
直接使用其他发行版的
rpm
常常是不行的。不知道大家看没看“恼人的依赖关系”这个帖
子。
可以在技术支持区搜索一下。
任何两个发行版本在二进制上都是不能兼容的!
他们实际
是不同的操作系统。
不仅使用的库文件不同,
配置也迥异。
特别是同一个发行版的不同版本
更不兼容。任何包都必须在本地重新编译,而且不一定通得过,因为还有
spec
宏的兼容问
题!如果要在别的发行版上使用,必须用源码编译,这是常识。考虑文件布局和配置问题,
有时直接编译也是不够的,必须修改
spec
,甚至自己打补丁。
如何创建
rpm
包?
rpm
建包原理其实不复杂。写
spec
相当于一种脚本编程,主要是在
spec
里提供一
些软件相关信息,
以及安装、
卸载前后要执行的脚本,
然后展开压缩的源代码包,
打上补丁,
执行编译,
然后利用
make install
可以重新指定安装目的地的特性,
把编译好的文件安装到
指定的虚拟根目录下的指定位置里,一般是虚拟的
/usr
里,然后把这些目录、信息和脚本
打成一个压缩包,即
rpm
包。同时可选地生成源码包
src.rpm
。当然有很多具体细节问题。
您应该首先阅读软件的
readme
和
INSTALL
文件。
打包原则
1.
任何人都应该在系统现有
src.rpm
的
spec
基础上修改更新,除非没有这样的包。
这可以省去很多麻烦,少走弯路。
2.
任何人都无权删除别人的
changelog
和原始打包者的信息,这是对别人的不尊重。但你
可以追加自己的信息。
3.
尽可能在
spec
里使用系统的标准宏定义,而不要用非标准写法。
4.
任何人都不应该直接提供修改后的源代码,
而应该以补丁形式发布你的修改,
在
spec
里
完成打补丁操作。
务必做到一个补丁只解决一个问题,
这样才能确保补丁的可重用性,
否则