在Linux的早期时代(也许吧?我猜的。也可能是Unix。),想要在系统上安装一款应用程序,是比较复杂的。需要专业的人员自行获取程序的源代码,并且编译安装,这是非常的复杂且需要一定的专业功底的,这种方式叫做源码编译安装(后面会描述)。
再后来就有人/组织将这个过程简化了,他们将事先已经编译好的软件打包后,放到互联网上供用户下载。用户下载适用于自己的操作系统和硬件平台的软件包之后,只需要将其“解压”,那么该软件包所包含的各种文件(二进制程序文件、文档文件、库文件和配置文件等)就会基于包作者事先定义好的位置进入各自对应的目录下了。在CentOS上,这种打包工具就叫做rpm,即rpm安装。
但是这种工具又存在一个缺陷,那就是它无法自动解决RPM包之间的依赖性。
假设安装A包需要依赖于B包,安装B包又要依赖于C包。
A --> B --> C
当你安装A包的时候提示你要安装B包,你安装B包的时候又提示你要安装C包,它无法自动去解决这个依赖关系。并且你还要自己去下载被依赖的B包和C包。
因此诞生了一种更高级的包管理器,用于解决上述的RPM的问题,在CentOS上,这种包管理器就叫做yum,即yum安装。不过,在未来,可能是CentOS 8的时候,yum会被dnf工具所取代,在Fedora系统上,已经有dnf工具了。
在不同的Linux发行版中,这种软件包的组织形式有点不同,见下表:
发行版 初级包管理器 高级包管理器 包名称RHEL系列:Red Hat、CentOS、Fedora rpm yum、dnf *.rpm
Debian、Ubuntu dpkg apt-get *.deb
S.u.S.E rpm zypper *.rpm
本文的讲解顺序是先讲rpm安装,再讲yum安装,最后说最复杂的源码编译安装。
RPM
在当前的运维环境下,一般我们安装某款软件,会直接使用yum命令,而不会单独去下载rpm包通过rpm命令来完成。
更多的是使用rpm命令去执行一下对程序包的查询操作。
程序包的获取推荐从软件的官方站点获取,或者可以在一些比较大型的受信任的镜像站点获取。
系统发行版的光盘。
项目的官方站点。
等等。
开源镜像站点及一些rpm包提供站点。
阿里云
网易
EPEL
https://pkgs.org/
自己动手制作rpm包。
程序包的名称程序包(rpm包)名称的大概格式如下。
NAME-VERSION-RELEASE.OS.ARCH.rpm