rpm详解
摘要:本文介绍了rpm相关概念以及rpm的四种基本的操作方式,并对其常用命令进行总结
1.1.1 what (什么是rmp)
rpm的全称是Readhat Package Manager,是由红帽公司开发的。本意是Red Hat软件包管理。在Fedora、Redhat、Mandriva等主流发行版本。
1.1.2 how (为什么需要rpm)
在一个操作系统下,需要安装实现各种功能的软件包。这些软件包一般都有各自的程序,但是同时也有错综复杂的依赖关系。同时还需要解决软件包的版本,以及安装,配置,卸载的自动化问题。为了解决这些问题,RedHat针对自己的系统提出了一个较好的办法来管理成千上百的软件。这就是RPM管理系统。在系统中安装了rpm管理系统以后,只要是符合rpm文件标准的打包的程序都可以方便的安装,升级,卸载。
1.1.3 where (应用场景:是不是所有的linux都使用rmp)
任何系统都需要包管理系统,因此很多linux都使用rpm系统。但rpm系统是为RH转门设计的。但是TL, Fedora等系统也都使用rpm。由于rpm的源程序可以在别的系统上进行编译,所以有可能在别的系统上也使用rpm。
1.1.4不同操作系统发行的rpm包可否混用?
对于已经编译成二进制的rpm包,由于操作系统环境不同,一般不能混用。对于以src.rpm发行的软件包,由于需要安装时进行本地编译,所以通常可以在不同系统下安装
1.2.1 rpm包里面都包含什么?
rpm里面包含可执行的二进制程序,该程序和windows的软件包中的.exe文件类似是可执行的;rpm包中还包括程序运行时所需要的文件,这也和windows的软件包类似.
1.2.2 rmp格式文件有两种形式
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
两种文件的格式:
xxxxxx.rpm --à RPM的格式,已经经过编译且包装完成的。
xxxx.src.rpm-à SRPM的格式,包含未编译的原始码信息。
rpm 命名一般由以下几部分组成:
tiger-3.1-5.i386.rpm
(1)套件名称:即每个套件的名称。
(2)版本的信息:每一次更新版本就需要有一个版本的信息。
(3)释出次数:也就是编译的次数啦!那么为何需要重复的编译呢?这是由于同一版的套件中,可能由于有某些 bug 或者是安全上的顾虑,所以必须要重新设定当初打包时候的设定参数,设定完成之后重新编译并打包成 RPM 档案!因此就有不同的打包数出现了!(注:这个时候原始码其实还是 3.1 那个版本,只是下达编译时的参数不同而已! )
(4)操作硬件平台:由于 RPM 可以适用在不同的操作平台上,但是由于不同的平台设定的参数还是有所差异性!,因此,要对不同CPU进行最佳化参数的设定,因此就有i386,i586,i686与noarch等的名称出现了。
Note:noarch:表示没有任何硬件等级上的限制。
命令格式:
rpm {-q|--query} [select-options][query-options]
RPM的查询功能很强大。一般分为:查看已安装软件包的信息和查看未安装软件包的信息(但是要有该软件包)
² 查询已安装软件包的信息
2.1.1 查询系统已安装的软件;
命令格式:
rpm -q softname
eg:
[root@localhost beinan]# rpm -q gaim
gaim-1.3.0-1.fc4
Note:
(1)-q就是 --query :表示查询
(2)查看系统中所有已经安装的包,要加 -a 参数
[root@localhost RPMS]# rpm –qa
(3)在所有已经安装的软件包中查找某个软件,比如说 gaim ;可以用如下命令。
[root@localhost RPMS]# rpm -qa |grepgaim
该命令等价于: rpm –q gaim
(4)如果分页查看,再加一个管道 |和more命令;
[root@localhost RPMS]# rpm -qa |more
2.1.2 查询已安装的文件属于哪个软件包
命令格式:
rpm -qf filename
note:必须给出文件的绝对路径
eg:
[root@localhost RPMS]#rpm -qf /usr/lib/libacl.la
libacl-devel-2.2.23-8
2.1.3 查询已安装软件包安装到何处
命令格式:
rpm –ql softname
eg:
[root@localhost RPMS]#rpm -ql lynx
2.1.4 查询已安装软件包的信息
命令格式:
rpm -qi softname
2.1.5 查询已安装软件的配置文件
命令格式:
rpm -qc softname
eg:
[root@localhost RPMS]#rpm -qc lynx
² 查询未安装的软件包的信息:
2.1.6查看一个软件包的用途、版本等信息
命令格式:
rpm –qpi file.rpm
2.1.7查询一个软件包所包含的文件
命令格式:
rpm -qpl file.rpm
2.1.8查询润健包文档所在的位置
命令格式:
rpm –qpd file.rpm
2.1.9 查看软件包的配置文件
命令格式:
rpm -qpc file.rpm
2.1.10 查看一个软件包的依赖关系
命令格式:
rpm -qpR file.rpm
具体参数的解释:
-a 查询所有已安装的软件包
· -f 将查询包含有文件. 的软件包
· -p 查询软件包文件名为的软件包 还可以指定查询软件包时所显示的信息。它们被称作信息选择选项:
·-i显示软件包信息,如描述,发行号,尺寸,构建日期,安装日期,平台,以及其它一些各类信息。
· -l 显示软件包中的文件列表。
· -s 显示软件包中所有文件的状态。
· -d 显示被标注为文档的文件列表(man 手册, info 手册,READMEs, etc)。
·-c显示被标注为配置文件的文件列表。这些是您要在安装完毕以后加以定制的文件(sendmail.cf, passwd, inittab, etc)。
命令格式:
rpm -i softnam.rpm
常用:
rpm –ivh softname.rpm安装软件包信息
选项的具体意义如下:
选项参数含义:
-i:install 的意思
-v :view 查看更细部的安装信息画面
-h :以安装信息列显示安装进度,例如上面的 # 字符号!
Note:
如果有依赖关系的要先解决依赖关系。
2.2.1 指定安装路径
命令格式:
rpm -ivh --relocate path softname.rpm
eg:
rpm -ivh --relocate/=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
命令格式:
命令格式
rpm -e sotfname
Note:
注意这里使用软件包的名字softname,而不是软件包文件的名字softname-1.0-1.i386.rpm。 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息.
命令格式:
rpm –Uvh softname.rpm
eg:
rpm –Uvh foo-2.0-1.i386.rpm
RPM将自动卸载已安装的老板本的foo 软件包.
Note:如果要从新版本将到旧版本,可以使用--oldpackage 参数
eg:
[root@localhost RPMS]#rpm -qa gaim
gaim-1.5.0-1.fc4
[root@localhost RPMS]#rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm
Preparing...########################################### [100%]
1:gaim########################################### [100%]
[root@localhost RPMS]#rpm -qa gaim
gaim-1.3.0-1.fc4
前面提到的使用rpm命令查询一个rpm包是否安装,是通过rpm数据库来完成的;因此,有时我们要用下面的命令初始化rpm数据库
命令格式:
rpm --initdb
rpm --rebuilddb(该命令时间较长)
note:
这两个命令极为有用,如果rpm系统出现了问题,不能安装或查询,此时就要初始化rpm数据库。
rpm支持通过http或者tftp通过网络安装rpm软件包
命令格式:
rpm -qpi http://path/softname.rpm
rpm -ivh http://path/softname.rpm
eg:
# rpm -qpi
http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
# rpm -ivhhttp://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
rpm常用命令:
(1)rpm -qa | grep softname : 查询软件是否安装
(2)rpm -ivh softname.rpm : 安装软件
(3)rpm -e softname : 卸载软件