Linux的程序包管理器(上)——rpm详解

在使用Linux操作系统的过程中,我们需要的一些服务(例如Nginx)并没有提供,需要用户自行安装相应的程序包,才能使用相应的服务。本文以CentOS6.6为例,分三小节为读者朋友们尽可能详细的讲解rpm、yum以及程序包的编译安装三种程序包的管理方法。

rpm

rpm包管理工具是Red Hat公司贡献的一款rpm程序包管理器,在RHEL、CentOS、Fedora、SUSE等主流发行版本中,被广泛使用。

rpm包管理工具可用于安装,升级,卸载,重新安装程序;也可以用于查询当前系统上安装了哪些程序,安装程序生成了哪些文件,或者查询一个文件是由哪个程序安装后生成的;也可以校验包的来源完整性和合法性。

在讲解rpm使用之前,先了解一下rpm包。rpm包的命名方式:rpm包名-主版本号-次版本号-发行号-rpm包自己的发行号(注:与源代码的发行号无关)-平台类型.rpm。如:bash的rpm包名:bash-4.1.2-29.el6.x86_64。每个rpm包当中都有一份程序的组成清单,其中包含了安装、卸载时的脚本,公共数据库指向路径,以及安装之后该程序会生成的文件的清单。读者朋友们可以想想一下Windows下的安装程序,例如QQ,它在自动安装的过程中,也是运行其中的脚本文件进行安装,在注册表中注册(类似于Linux下的公共数据库)生成相应的文件在Windows系统中。rpm管理工具正是将包里的文件抽取出来安装,安装过程中,会检查安装的程序包的是否依赖于其他包,其他包是否已安装在系统中,反馈相应的信息给用户,例如,若安装的包依赖于其他包,会告诉用户安装该包要先安装那些包等(其实,在Windows下安装程序时也会出现这样的提示信息,安装英雄联盟的时候,如果没安装Directx的话,会提示用户安装该软件包)。

rpm包的安装

    要安装rpm包,首先得先下载rpm包,巧妇难为无米之炊嘛!通常获取rpm的途径有以下几种:①优先选择系统发行光盘或者官方镜像站点;②程序项目的官方站点;③可靠的第三方组织:例如Fedora的EPEL社区:http://fedoraproject.org/wiki/EPEL/zh-cn;④良心rpm包专享搜索引擎:http://rpmfind.net 、http://rpm.pbone.net、http://pkgsorg。

    安装命令:rpm -ivh 程序包名(注意路径)

例如,安装Nginx程序包rpm -ivh nginx-1.4.7-1.el6.ngx.x86_64.rpm。

常用安装选项:

--nodeps 忽略程序包的依赖关系。注:强烈不建议使用该选项。

--replacepkgs 替换原来的包重新安装,即重装该程序。例如,我们将Nginx程序重新安装:rpm -ivh nginx-1.4.7-1.el6.ngx.x86_64.rpm --replacepkgs

--test 仅作测试性安装而非真正安装,常用于检查包之间的依赖性关系

--prefix NEWPATH 将程序安装在自定义的路径下,前提是该包支持用户自定义安装路径。

升级命令:rpm -Uvh 程序包名(注意路径):如果有旧版本的程序包,则升级安装,否则执行安装操作

rpm -Fvh 程序包名(注意路径):如果有旧版本的程序包,则升级安装;否则不执行任何操作。

例如,将nginx从1.4.7-1升级到1.6.1-1:rpm -Uvh nginx-1.6.1-1.el6.ngx.x86_64.rpm

常用的升级选项:

--force:强制升级忽略冲突过程

--oldpackage:降级安装,即用旧版本的程序替代现有程序。例如:我们将现在1.4.7-1版本的nginx降级为1.0.8-2版本。从nginx官网:http://nginx.org/packages/centos/6/x86_64/RPMS/下载相应的版面,执行命令:rpm -Uvh nginx-1.0.8-2.el6.ngx.x86_64.rpm --oldpackages

--test测试升级过程

注:不要对内核包执行升级操作,Linux本身支持多版本的内核并存,因此,对新版本的内核包可以直接安装;如果原程序包的配置文件安装后被改动过,升级时,新版本的文件并不会直接覆盖老版本的文件而是把新版本的文件重命名(加后缀.rpmnew)保留。

卸载命令:rpm -e 程序名(注:不是程序包名)

例如,卸载nginx:rpm -e nginx

常用选项:

--nodeps 忽略依赖关系执行卸载

--test 卸载测试

注:如果包的配置文件安装后曾被改动过,卸载时,此配置文件不会被删除而是被重命名(加后缀.rpmsave)保留。

 查询类命令

查询某程序是否已经安装:rpm -qa 程序名

查询某文件是由哪个包安装后生成的:rpm -qf /path/to/somefile

查询尚未安装的程序包安装之后会生成哪些文件:rpm -qpl PACKAGE_FILE.rpm

查询某程序的摘要信息 rpm -qi 程序名

查询某程序生成的文件列表:rpm -q 程序名

生产环境中常用的rpm命令大致就这么多,想要了解更多rpm的命令说明,详见man手册。

写在最后:使用rpm安装程序是无法自动解决依赖关系的,而另一款rpm包管理器yum帮用户解决了这一问题。

时间: 2024-08-05 23:39:13

Linux的程序包管理器(上)——rpm详解的相关文章

linux之程序包管理器(rpm)

linux下的程序包可支持多种工具编写的,如C.C++.PERL等. 但是这种高级语言编写出来的代码是我们人能看懂的,但是计算机是看不懂的,那么计算机怎么执行,怎么了解人要它做什么呢? 这就需要我们做一些转换了,把人能读懂的语言让机器也能识别,这个过程就是由编译器完成的,通常是吧代码语言转换成二进制语言. 过程:预处理.编译.汇编.链接 一个程序的运行大部分时间是离不开库的. 什么是库呢?库也是一种程序,只不过与其他程序不同,库没有执行入口,不能独立运行,只能被其他独立运行的程序调用的时候才能执

RHEL系统程序包管理器【rpm、yum】

程序包管理器 将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum rpm: redhat package manager, RPM is Package Manager rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装.查询.卸载.升级等工作.但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. RPM包的命名 例如,bash-4.3.2-1.ce

Linux的程序包管理器(下)——编译安装

前面介绍了rpm和yum包管理器的用法,但有的时候一些程序仅提供了源代码比,需要我们自己编译安装.源代码之间是不会放在一个文件中,而他们直接又存在着各种各样的依赖性关系.因此需要一个源代码构建工具对源代码进行组织,和几个开发包组专门解决依赖性关系. Linux当中autoconf工具可以自动生成一个configure脚本,此脚本能检查当前系统上编译环境是否能满足当前程序的编译需要:同时,还能确定后续的编译工作所期望编译进程序中的特性.而我们从源代码网站下载下来的源代码通常都会提供configur

Linux的程序包管理器(中)——yum命令从未如此详细过

与rpm包管理器相比,yum包管理器恐怕更受用户的青睐,其很大的原因在于这款包管理器能自动解决rpm包之间的相互依赖关系.本文就CentOS 6.6为例,尽可能详细的给读者朋友们讲解yum包管理器的用法. yum(Yellowdog Updater Modified的缩写)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,用户无须繁琐地一次次下载.安装.

CentOS系统程序包管理器【rpm、yum】

将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum rpm: redhat package manager, RPM is Package Manager rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装.查询.卸载.升级等工作.但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. RPM包的命名 例如,bash-4.3.2-1.centos6.x

程序包管理二之yum详解

上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率. Linux程序包管理(2): Centos:yum,dnf 两个rpm前端工具 URL:ftp://10.1.0.1/pub/ YUM :yellow dog, Yellowdog,Update Modifier 采取cs架构 从文件服务器加载rpm包,安装程序到本地主机 yum repository:yum repo 存储了众多rpm包,以及包的相

Linux 包管理工具之RPM详解

讲到包管理工具,先来了解下应用程序接口 (API)与应用程序二进制接口 (ABI). API: 编程接口 Application Program Interface 换句话说也就是你编写"应用程序"时候调用的函数之类的东西.对于内核来说,它的"应用程序"有两种:一种是在它之上的,用户空间的真正的应用程序,内核给它们提供的是系统调用这种接口,比如 read(2),write(2):另一种就是内核模块了,它们和内核处于同一层,内核给它们提供的是导出的内核函数,比如 km

以rpm为后端及以yum为前端工具的程序包管理器在Linux发行版系统centos中的使用

程序包管理: 应用程序的安装,实际上是解压缩并复制程序包中的文件到指定目录的过程: 程序包管理器: 方便终端用户进行程序的安装.卸载.升级.安装信息查询及校验等工作: 不同的Linux的发行版本中,有不同的程序包管理器: Debian:dpt:Redhat:rpm:S.u.S.E:rpm:Gentoo:借鉴了FREEBSD的portage程序包管理机制,ports方式,emerge工具:ArchLinux:pacman 以CentOS为例,rpm程序包管理器: rpm程序包的命名规则: 源代码包

程序包管理器(上)

一个编译好的二进制程序应用文件的组成部分有二进制文件.库文件.配置文件.帮助文件,用户在安装时设置繁琐,而且在用户升级.卸载等操作时更为麻烦.为了提升使用效率及自动简化操作,这就迫在眉睫的需要有一款程序包管理器.. 程序包管理器的主要功能它到底有哪些呢?它的主要功能是将编译好的应用程序的各组成文件打包一个或多个程序包文件,从而方便快捷地实现程序包的安装.卸载.查询.升级和校验等管理操作.而现在主要有四种主流的程序包管理器:(1)Debian开发的程序包管理器,程序包管理器叫做dpt程序包管理器,