1.
由于已经编译完成并且打包完毕,所以软件传输与安装上很方便
(
不需要再重新编译
)
2.
由于软件的信息都已经记录在
Linux
主机的数据库上,很方便查询、升级与反安装
但是这也造成些许的困扰。由于
RPM
文件是已经包装好的数据,也就是说,
里面的数据已经都『编
译完成』了!所以,
该软件文件几乎只能安装在原本默认的硬件与操作系统版本中。
也就是说,你
的主机系统环境必须要与当初½立这个软件文件的主机环境相同才行!
举例来说,
rp-pppoe
这个
ADSL
拨½软件,他必须要在
ppp
这个软件存在的环境下才能½行安装!如果你的主机并没有
ppp
这个软件,那么很抱歉,除非你先安装
ppp
否则
rp-pppoe
就是不让你安装的
(
当然你可以强制安装,
但是通常都会有点问题发生就是了!
)
所以,
通常不同的
distribution
所释出的
RPM
文件,并不能用在其他的
distributions
。举例来说,
Red Hat
释出的
RPM
文件,通常无法直½在
SuSE
上面½行安装的。更有甚者,相同
distribution
不同版本之间也无法互通,例如
CentOS 6.x
RPM
文件就无法直½套用在
CentOS 7.x
!因此,
这样可以发现这些软件管理机制的问题是:
1.
软件文件安装的环境必须与打包时的环境需求一致或相当;
2.
需要满足软件的相依属性需求;
3.
反安装时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!
那怎么办?如果我真的想要安装其他
distributions
提供的好用的
RPM
软件文件时?
呵呵!还好,
还有
SRPM
这个东西!
SRPM
是什么呢?顾名思义,他是
Source RPM
的意思,也就是这个
RPM
件里面含有原始码哩
!特别注意的是,这个
SRPM
所提供的软件内容『并没有经过编译』
它提供
的是原始码喔!
通常
SRPM
的扩展名是以
***.src.rpm
这种格式来命名的
。不过,既然
SRPM
提供的是原始码,那
么为什么我们不使用
Tarball
直½来安装就好了?这是因为
SRPM
虽然内容是原始码,
但是他仍然
含有该软件所需要的相依性软件说明、以及所有
RPM
文件所提供的数据。同时,他与
RPM
不同
的是,他也提供了参数配置文件
(
就是
configure
makefile)
。所以,如果我们下载的是
SRPM
那么要安装该软件时,你就必须要:
.
先½该软件以
RPM
管理的方式编译,此时
SRPM
会被编译成为
RPM
文件;
.
然后½编译完成的
RPM
文件安装到
Linux
系统当中
怪了,怎么
SRPM
这么麻烦吶!还要重新编译一次,那么我们直½使用
RPM
来安装不就好了?通
常一个软件在释出的时候,都会同时释出该软件的
RPM
SRPM
。我们现在知道
RPM
文件必须
要在相同的
Linux
环境下才能够安装,而
SRPM
既然是原始码的格式,自然
我们就可以透过修改
SRPM
内的参数配置文件,然后重新编译产生能适合我们
Linux
环境的
RPM
文件
,如此一来,不
就可以½该软件安装到我们的系统当中,而不必与原作者打包的
Linux
环境相同了?这就是
SRPM
的用处了!
文件格式
檔名格式
直½安装与否
内含程序类型
可否修改参数并编译
RPM
xxx.rpm
已编译
不可
SRPM
xxx.src.rpm
不可
未编译之原始码