从前面我们看到,如果使用Tarball进行安装,每次安装时候都要检测系统,调车编译参数,实际的编译,最后还要看个人的喜好来设置软件安装的位置.这显得非常的复杂,
如果我们的Linux系统与软件公司的系统一样,那么他们可以先在自己的系统上编译好了后的可执行软件直接发布给用户.这有些类似于window的方法.
我们在安装时候再加上一些与这些程序相关的信息,将它建立成一个数据库,就可以对软件进行管理(安装,反安装,升级等),在Linux上面有两种这方面的,分别是centos,red hat的RPM 与Debian的dpkg.
一.RPM 与DPKG
Linux开商先将软件在固定的系统上编译好,将这个软件相关的文件打包成了一个特殊格式的文件,文件内有预告检测系统与依赖软件的脚本.用户在取得这个软件后,只要使特定的命令来安装,这个软件文件就会按照内部的
脚本来检测相关的前驱软件是否存在,如果安装环境符合,就开始安装.安装完成后,还会将这个软件的信息记录到软件管理机制中,以方便以后的升级删除等.
不论是RMP还是dpkg,都要解决软件属性依赖问题,它们将信赖属性的数据做成了列表,通过依赖性列表,管理机制会自动去获取数据.
distribution | 软件管理机制 | 使用命令 | 在线升级命令 |
Red Hat/Centos | RPM | rpm | yum |
Debian/Ubuntu | DPKG | dpkg | apt-get |
二.RPM
RedHat Package Manager,以一种数据库的方式来将你所要的软件安装到你的Linux系统的一种机制.
RPM特点:
将软件编译好并打包成RPM的安装包,扩展名为xxx.rpm.里面默认的数据库记录了这个软件要安装时所要的依赖属性软件,在我们安装的时候,如果依赖属性满足,则安装,否则不安装.安装的时候,会将这个软件的信息整个写入到RPM的数据库中.所以安装方便,且方便查询,反安装等.
但是也有问题:
这种软件几乎只能安装在原本默认的硬件与系统中,对相似度要求很高.所以不同的distribution所发布的软件并不能用在别的distribution中.甚至相同的distribution的不同版本间也无法互通.所以我们要另外一种方法:
SRPM:
Source RPM.文件中含有源码,扩展名是xxx.src.rpm.其与Tarball不同的在于,虽然SRPM内容是源码,但是其含有软件所要的依赖性软件说明与所有RPM文件所提供的数据.同时它与RPM不同的是,它也提供了参数设置文件(configure与makefile).所以我们安装SRPM时要
(1)先将软件以RPM管理的方式进行编译,此时SRP被编译成了RPM.
(2)将编译完成的RPM 文件安装到Linux中.
所以我们安装的环境就可以与原作者不同了,这就是SRPM的作用.
三.RPM的优点
RPM这个软件管理器所处理的软件是邮软件开发者在特定的平台上编译好的,意味着用户只要拿到这个打包好的软件后,将里面的文件放到对应的目录,就可以完成安装.的确是这样的.
但是还有软件的依赖性没有考虑.Linux系统中每次安装软件都会将信息记录在RPM软件数据库中,因此在我们以一个RPM类型包去安装一个软件的时候,RPM会去查看数据库里面的是否已经存在相关的软件,如果没的,那么这个RPM包默认就不能安装.这就是RPM类型的软件依赖性问题.
解决方法:YUM在线升级
Centos先将发布的软件放到YUM服务器内进行依赖性分析,将软件内的记录信息写下来,得到软件相关性的清单列表.这些列表所在的位置就是容器(repository),
当客户端有软件安装时,会主动向网络上的yum服务器的容器网站下载清单列表到本机的/var/cache/yum中, 将清单列表的数据与本机的RMP数据徊已经存在的软件数据进行对比,就能够一口气安装所有具有依赖属性的软件了.最后通过RPM机制进行软件的安装.