【Linux】软件安装RPM,DPKG与YUM
Linux 界的两大主流: RPM 与 DPKG
目前在 Linux 界软件安装方式最常见的有两种,分别是:
-
dpkg:
这个机制最早是由 Debian Linux 社群所开发出来的,透过 dpkg 的机制, Debian 提供的软件就能够简的安装起来,同时还能提供安装后的软件信息,只要是衍生于 Debian 的其他 Linux 大多使用 dpkg 这个机制来管理软件的, 包括 B2D, Ubuntu 等等。 -
RPM:
这个机制最早是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机制来作为软件安装的管理方式。包括 Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚。
不论 dpkg/rpm 这些机制或多或少都会有软件属性相依的问题,那该如何解决呢?也就是安装B软件就要先安装A才可以,而安装A就要先安装C。如果我们将相依属性的数据做成表, 等到实际软件安装时,若发生有相依属性的软件状况时透过相依属性列表,管理机制自动去取得需要安装的有依赖,就解决了属性相依的问题。
目前新的 Linux 开发商都有提供这样的『在线升级』机制,透过这个机制, 原版光盘就只有第一次安装时需要用到而已,其他时候只要有网络,你就能够取得原本开发商所提供的任何软件。
CentOS 系统使用的软件管理机制为 RPM 机制,而用来作为在线升级的方式则为 yum。
什么是RPM
当初这个软件管理的机制是由 Red Hat 这家公司发展出来的。 RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。
他最大的特点就是将你要安装的软件先编译过, 并且打包成为 R的软件里头默认的数据库记录, 记录这个软件要安装的时候必须具备的相依属性软件,当安装在你PM 机制的包装文件,透过包装好的 Linux 主机时, RPM 会先依照软件里头的数据查询 Linux 主机的相依属性软件是否满足, 若满足则予以安装,若不满足则不予安装。
RMP安装(install)
安装软件是 root 的工作,因此你得要是 root 的身份才能够操作 rpm 这指令的。 用 rpm 来安装很简单啦!假设我要安装一个档名为 rp-pppoe-3.11-5.el7.x86_64.rpm 的文件,那么我可以这样:(假设原版光盘已经放在 /mnt 底下了)
rpm -i /mnt/Packages/rp-pppoe-3.11-5.el7.x86_64.rpm
不过,上面这样的参数其实无法显示安装的进度,所以,通常我们会这样下达安装指令:
rpm -ivh package_name
案例1:直接由网络上面的某个文件安装,以网址来安装:
rpm -ivh http://website.name/path/pkgname.rpm
案例2:同时装两个及以上的软件:
pm -ivh a.i386.rpm b.i386.rpm *.rpm
RPM 安装查询
RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件。
案例1:查询否有安装logrotate 这个软件
pm -q logrotate
案例2:查询所安装的所有 rpm 软件包
rpm -qa
案例3:查询logrotate 软件包安装信息
rpm -qi logrotate
卸载 rpm 包
rpm -e 软件名
卸载火狐
rpm -r firefox
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。
YUM
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。
查询 yum 服务器是否有需要安装的软件
yum list|grep xx 软件列表
安装 yum 服务器是否有需要安装的软件
yum [install|update] 软件
案例:安装pam-devel软件
yum install pam-devel