开源软件包管理系统,都是怎么样工作的

简答之:开源包管理方式用的最多的有两大类rpm和dpkg前者经常用在Red Hat系的linux发行版上,后者大多数用在类Debian Linux发行版上在此之上的构建出的在线包管理系统rpm:yum you等等dpkg:apt等等从在线包管理系统例如apt,安装一个软件的过程基本是这样的:1.设置在线开源包软件源的地址基本上在线开源软件源的划分是基于linux发行版的版本的,比如ubuntu的12.10和12.04的软件源地址就不一样。原因是,你在同一个环境下编译的二进制代码可能无法在另外一台和你系统环境不同的机器上使用。比如你编译的一个二进制文件nginx在CENTOS5.4上跑的好好的,可能在6.0上就跑不了了。这是由于系统环境本身改变了导致了一些编译所需的基础库的版本改变导致的。2.检索软件包及其依赖。先检测本地有无包没有的话在线去搜索比如我要安装软件包A,A依赖B,C,D三个软件,B又依赖E,F。这些信息事先在包管理系统中记录的(软件包管理系统当然有类似“小编”这样的人物来人为的维护,当然维护是自动化的。)那么我就会告诉用户我要装A,必须先装B,C,D,用户同意后,把这些二进制包下载到本地里。3.校验签名安全起见,要判断下下的包是不是源服务器上的,有没有人偷偷更改过,给你一个有问题的包。4.按照依赖顺序安装按照2的情况安装顺序是E,F ,B,C,D,A其中E、F先后安装无所谓,B、C、D先后安装无所谓。5.写入本地数据库,记录了安装了哪些,依赖如何。6.有的用户问,我想安装VIM,但是从apt里安装的VIM编译的时候没有python3_enable的选项怎么半?好办..自己下载源码包类似xxxx.src.rpm,然后利用类似rpmbuild之类的命令自己在本地编译就可以了,这样编译的包可以通过rpm来管理等等,和直接从source的tar包编译的是有区别的。
■网友
dpkg 的地位相当于 rpm,包管理系统是 apt。这类管理系统的总体原理很简单,就是明确地标明依赖关系,比如,depends, conflict 之类的,这样,安装一个软件包的时候,就知道需要先确保有哪些软件包、要求版本是什么样的了。


    推荐阅读