Linux 软件管理器-RPM、DPKG相关介绍

 2016年12月17日    61     声明


软件安装是Linux运维中必不可少的操作。在安装软件时,我们可能会通过源代码编译安装,为了方便我们可能使用命令来安装软件。在Red Hat、CentOS、Fedora等发行版中,我们可以通过rpmyum来安装;而在Debian、Ubuntu等发行版中,还可以通过dpkgapt-get来安装。那么,这些不同的安装方式或安装命令之间有什么区别呢?本文将介绍Linux 软件管理器相关知识。

  1. 软件管理器
  2. RPM软件管理器
  3. DPKG软件管理器

1. 软件管理器

1.1 源码编译安装

Linux这个单词可以表示是Linux系统,但从技术角度来讲Linux这个词只表示Linux系统内核。由于使用内核的一致,所以Linux平台的软件具体有良好兼容性。通过源码编译安装的方式,可以将相同的软件安装在几乎所有的Linux发行版。

在使用源代码安装Linux源码时,通常的安装过程会是:配置安装参数、编译、安装。以下是一个典型的编译安装过程:

# 配置
$ ./configure
# 编译
$ make 
# 安装
$ make install

使用编译安装有很多好处,比如:可以配置安装位置、进行安装环境检测等。但安装过程会比较繁琐,特别是编译过程会比较长。如果能像Windows那样,由开发者将源码在已知的环境中配置好,而用户直接安装会省很多力气。

这时,我们可以使用软件管理器软件管理器是Linux发行厂商或社区提供的,可以在特定的Linux发行版本上,进行软件安装、卸载、升级、验证等功能的软件管理程序。在Linux系统中主要有两种软件安装器,分别是用于CentOS等发行版中的RPM和用于Ubuntu等发行版中的DPKG


1.2 RPMDPKG

在Linux的发展过程中,出现了很多开源软件。软件开发都会使用Tarball来发布源代码,而Linux发行厂商或社区则会将这些源码在特定的硬件编译后,将安装所需文件打包成一个特殊的格式并发布。

被发布的软件就是一个适用于指定Linux发行版本的安装包,用户可以使用这个文件通过安装进行安装。在安装包中,会包含检测系统与软件依赖的脚本,在安装前进行环境检测。若符合安装条件,就会安装该软件。软件安装后还会将相关信息写入软件管理机制中,以便将来进行软件的升级或删除等。

  • RPM - 由Red Hat公司开发,Fedora、CentOS、SUSE等发行版都使用该软件管理器。
  • DPKG - 由Debian社区开发,Ubuntu、B2D等发行版都使用该软件管理器


1.3 软件依赖的解决:yumapt

无论是RPM还是DPKG,都会遇到软件依赖的问题。如,安装软件A时,需要先安装软件B,而安装软件B又要先安装软件C。因此,需要一种进行依赖管理的机制。

RPMDPKG都提供了在线升级机制,能够能够从指定的服务器自动下载安装包,并能自动处理依赖关系,且可以一次性自动安装软件及其依赖。在RPM中,使用YUM(通过yum命令)进行软件安装、依赖管理、在线升级等。而在DPKG中,使用APT(通过apt-get命令)进行软件安装、依赖管理、在线升级等。


2. RPM软件管理器

RPM(RPM Package Manager,RPM软件包管理器),用于Red Hat、Fedora、CentOS、SUSE等Linux发行版中的软件管理器,它遵循GPL规则且功能强大方便。RPM的出现,让Linux软件更加易于安装、升级等。

RPM是一种预编译后的打包文件,其编译打包后的软件格式为.rpm。通过RPM安装软件的方式类似如下:

rpm -ivh your-package.rpm

RPM具有以下优点:

  • RPM包含了已编译的程序及配置文件,省去了用户编译的过程
  • RPM在安装前会检查系统软硬件信息,避免软件被错误安装
  • RPM文件本身提供了软件版本、软件依赖、软件用途等信息,方便了解软件信息
  • RPM使用数据库记录了RPM文件的相关参数,方便升级、删除、查询等后期操作


2.1 SRPM-源码格式的RPM

RPM安装的是编译后的二进制软件安装包,这些安装包只能适用特定的Linux发行版,甚至相同发行版的不同版本。RPM安装包要安装成功有一些必要,如:软件安装环境必须与打包环境一致、要满足软件依赖。

如果想使用其它发行版的软件该怎么办呢?这时可以使用SRPM(Source RPM),SRPM中包含了软件的源文件,SRPM安装包通常使用*.src.rpm的命名方式。与Tarball不同,除了软件源代码外,SRPM中还包含了软件配置文件(configuremakefile)。使用SRPM安装软件通常分为以下两步:

  1. 将软件源码编译为RPM文件
  2. RPM文件安装到系统中

相对于RPM来说,SRPM有一定的好处,就是可以通过修改参数配置,生成自定义的RPM文件。


2.2 YUM与在线升级、依赖管理

YUM(Yellow dog Updater, Modified)是基于RPM的前端软件包管理器。通过yum命令可以方便的将服务器上的rpm包下载到本地,并能自动处理软件包之间的依赖,一次性完软件及其依赖包的安装。且可以方便的对已安装的软件进行升级、删除等管理。

如,使用yum安装名为package1的软件:

yum install package1


3. DPKG软件管理器

了解了RPMYUM后,也比较方便理解DPKGAPTDPKGAPT的关系与RPMYUM关系类似,分别是另一种软件管理机制和前端软件管理器。

3.1 DPKG

DPKG即Debian Packager,是由Debian开发的一套软件管理套件,Ubuntu、B2D等发行版都使用该软件管理器。与RPM十分类似,同样是用于软件的安装、更新及移除等。

DPKG使用.deb做为预编译安装文件的文件格式。通过DPKG安装软件的方式类似如下:

dpkg -i your-package.rpm


3.2 APT与在线升级、依赖管理

DPKG提供了软件管理机制,但它并不具备在线安装、依赖管理等功能。而APT用于远程软件包的获取,依赖关系处理及安装管理等。

APT(Advanced Package Tool)是基于DPKG的前端软件包管理器。通过apt-get命令可以方便的下载远程服务器上的软件包,并能自动处理软件包之间的依赖,且可以方便的对已安装的软件进行升级、删除等管理。apt-get因其出色的软件依赖关系处理能力而闻名,其通常使用.deb-formatted文件,但修改后可以使用apt-rpm处理RPM文件。

如,使用apt-get安装名为package1的软件:

apt-get install package1


相关阅读: