标签:程序 rpm
Centos系统rpm命令的运用
rpm命令的运用分别从rpm包的安装、升级、卸载、查询、校验来简单的介绍rpm命令的使用。
方式 | 选项 | 选项介绍 |
安装 | -i | 安装新包,其后跟的是包文件 |
-v | 输出包安装过程,其后跟的是包文件 | |
-h | 以“#”进度显示包的安装过程,其后跟的是包文件 | |
--nodeps | 安装时忽略包的依赖关系,其后跟的是包文件,此选项可以使用以下的升级、卸载 | |
--replacepkgs | 重新安装且覆盖原有包所安装的文件,其后跟的是包文件 | |
--test | 测试安装,可用查看包之间的依赖关系或冲突报告等。此选项可以使用以下的升级、卸载 | |
--force | 强制安装,不论当前程序是版本,都使用此包进行安装,其后跟的是包文件 | |
升级 | -U|--upgrade | 升级或安装,如此前已安装有相应的旧版本的包并升级直现有包的版本,如没有安装,则进行安装操作,其后跟的是包文件 |
-F|--freshen | 纯升级操作,如果没有安装旧版本的程序,此选项是不会安装新版本的,只有旧版本存在才会进行升级操作,其后跟的是包文件 | |
卸载 | -e | 卸载跟在选项其后的包名程序,其后跟的是包名 |
--allmatches | 如果一个程序包同时安装多个版本,则此选项一次全部卸载;其后跟的是包名 | |
查询 | -q | 查询某包或某些包是否安装,其后跟的是包名 |
-qa | 查询当前系统上所有安装的包程序 | |
-qf | 查询某文件是由哪个包安装时所产生的,其后跟的是一个文件路径 | |
-qi | 查询某包的简要说明信息,其后跟的是包名 | |
-ql | 查询某包所产生的文件列表,其后跟的是包名 | |
-qc | 查询某包安装完成后产生的配置文件,其后跟的是包名 | |
-qd | 查询某包安装完成后产生的帮助文件,其后跟的是包名 | |
-q--changelog | 查看某包制作时随着版本的变化的所有变化信息,其后跟的是包名 | |
-q--provides | 查询某包提供的capabilities,其后跟的是包名 | |
-q --requires | 查询包中的依赖关系,其后跟的是包名 | |
-q--scripts | 查询某包安装或卸载时所执行的脚本;,其后跟的是包名 | |
-p [options] | 查询未安装包的以上信息,[options]除了-q和-qa外其所有查询选项都可以使用,,其后跟的是包文件 | |
检验 | -V|--verify | 查询包安装之后所生成的文件是否发生了改变,其后跟的是一个包名 |
--import | 导入验证文件,其后跟的一个验证文件 | |
-K|--checksig | 验证程序包的完整性,其后跟的是包文件 | |
提示: 包文件指的是一个拥有完整的包命令格式的文件,如:nginx-1.6.2-1.el6.ngx.x86_64.rpm 包名指的是当一个包文件被安装后,其包的程序名,如:nginx |
rpm命令实战:
(1)程序包的安装“-i”选项,如安装nginx
(2)程序包的安装“-ivh”选项,如安装tree命令
[root@Bisc-lab01 ~]# rpm -ivhtree-1.5.3-2.el6.x86_64.rpm warning: tree-1.5.3-2.el6.x86_64.rpm:Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:tree ########################################### [100%]
提示:你可以试试-ivvh选项,你将会能看到更详细的安装过程。
(3)忽略安装时所产生的依赖关系
当我们在试图安装一个zabbix-web的程序包时,在安装过程提示错误:安装失败,此时会列出此程序包所需依赖关系,安装过程将中止。有些程序包在依赖包关系上会显示出所依赖的程序包,而有些只会提示你它所依赖的库文件,这就需要查看此程序包所依赖的是什么库文件,并安装此库文件程序后在安装相应的程序包。
[root@Bisc-lab01 Packages]#rpm -ivh --test tk-8.5.7-5.el6.x86_64.rpm warning:tk-8.5.7-5.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de:NOKEY error: Failed dependencies: libtcl8.5.so()(64bit) is needed by tk-1:8.5.7-5.el6.x86_64 tcl = 1:8.5.7 is needed by tk-1:8.5.7-5.el6.x86_64
忽略依赖关系,安装zabbix-web程序,忽略依赖能程序能安装成功,但未必能成功的运行。有些程序所依赖的有关系是可以忽略的,如缺少某个文件等。
[root@Bisc-lab01 ~]# rpm -ivh--nodeps zabbix-web-2.4.0-1.el6.noarch.rpm warning:zabbix-web-2.4.0-1.el6.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID79ea5ed4: NOKEY Preparing... ###########################################[100%] 1:zabbix-web ###########################################[100%]
(4)查询zabbix-web程序是否安装成功
[root@Bisc-lab01 Packages]#rpm -q zabbix-web zabbix-web-2.4.0-1.el6.noarch [root@Bisc-lab01 Packages]#rpm -q zabbix-web package zabbix-web is notinstalled
(5)升级程序ntp程序包
[root@Bisc-lab01 ~]# rpm -qntp #查询程序包ntp并没有安装 package ntp is not installed [root@Bisc-lab01 ~]# rpm -Fntp-4.2.4p8-3.el6.centos.x86_64.rpm #进行纯升级操作 warning: ntp-4.2.4p8-3.el6.centos.x86_64.rpm:Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY [root@Bisc-lab01 ~]# rpm -qntp #纯升级完成后,发现程序包并没有安装 package ntp is not installed
#小结:
当程序在进行纯升级操作时,如果原程序没有进行安装过,在纯升级时并不会安装程序包。所以纯升级只有在原程序包已经安装在系统中,才能进行纯升级操作,升级才能有效。
(6)升级或安装程序包
当ntp程序存在时进行升级操作:
[root@Bisc-lab01 ~]# rpm -qntp #查询ntp程序包是否安装 ntp-4.2.4p8-3.el6.centos.x86_64 [root@Bisc-lab01 ~]# rpm -Untp-4.2.6p5-1.el6.centos.x86_64.rpm #进行升级操作 warning:ntp-4.2.6p5-1.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key IDc105b9de: NOKEY [root@Bisc-lab01 ~]# rpm -q ntp #查询ntp程序包,已经升级成功 ntp-4.2.6p5-1.el6.centos.x86_64
当ntp程序不存在是进行升级操作:
[root@Bisc-lab01 ~]# rpm -e--nodeps ntp #卸载ntp包来模拟包未安装 [root@Bisc-lab01 ~]# rpm -qntp #查询包的是否安装,显示未安装 package ntp is not installed [root@Bisc-lab01 ~]# rpm -Untp-4.2.6p5-1.el6.centos.x86_64.rpm #进行升级ntp程序包 warning:ntp-4.2.6p5-1.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key IDc105b9de: NOKEY [root@Bisc-lab01 ~]# rpm -qntp #查询ntp包已经安装并是升级的版本 ntp-4.2.6p5-1.el6.centos.x86_64
#小结:
当使用“-U”选项时,如果程序不存在,程序包会被安装,此时还会忽略依赖关系进行升级安装;程序包存在时,会自动升级至指定的程序包的版本,并忽略依赖关系。
(7)查询ntp程序包的详细说明信息;
[root@Bisc-lab01 ~]# rpm -qintp Name : ntp Relocations: (notrelocatable) Version : 4.2.6p5 Vendor:CentOS Release : 1.el6.centos Build Date: Sun 24 Nov 201302:21:55 AM CST Install Date: Sat 11 Apr 201511:42:29 AM CST Build Host:c6b9.bsys.dev.centos.org Group :System Environment/Daemons Source RPM:ntp-4.2.6p5-1.el6.centos.src.rpm Size : 1706943 License: (MIT and BSDand BSD with advertising) and GPLv2 Signature : RSA/SHA1, Mon 25 Nov 2013 03:32:50 AM CST,Key ID 0946fca2c105b9de Packager : CentOS BuildSystem<http://bugs.centos.org> URL : http://www.ntp.org Summary : The NTP daemon and utilities Description : The Network Time Protocol(NTP) is used to synchronize a computer‘s time with another referencetime source. This package includes ntpd (a daemon which continuouslyadjusts system time) and utilities used to query and configure thentpd daemon. Perl scripts ntp-wait andntptrace are in the ntp-perl package and the ntpdate program is in thentpdate package. The documentation is
#以上选项说明:
#Name:包名 #Relocations: 是否被重新定义到另的位置
#Version:版本号 #Vendor:制作商或提供商
#Release:发行号 #BuildDate:编译时间,包的构造时间
#Install Date:安装时间 #BuildHost:编译时所在的主机
#Group:在Centos和REHL上是分组的,包属于的组/子组 #SourceRPM:源码格式的RPM包
#Size:包的大小 #License:包的许可
#Signature:包的签名信息,与包的安全相关
#Packager:包的制作者
#URL:包的源代码程序的获取方式
#Summary:简要说明
#Description:较详细的说明信息
(8)查询某文件是由哪个程序包所产生的
[root@Bisc-lab01 ~]# rpm -qf/etc/passwd setup-2.8.14-20.el6_4.1.noarch
(9)查询某包所依赖关系
[root@Bisc-lab01 ~]# rpm -q--requires tree libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rpmlib(CompressedFileNames)<= 3.0.4-1 rpmlib(FileDigests) <=4.6.0-1 rpmlib(PayloadFilesHavePrefix)<= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <=5.2-1
(10)查询某包安装或卸载时所执行的脚本
[root@Bisc-lab01 ~]# rpm -q--scripts httpd preinstall scriptlet (using/bin/sh): #安装前要所执行的脚本 # Add the "apache"user getent group apache>/dev/null || groupadd -g 48 -r apache getent passwd apache >/dev/null|| useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache exit 0 postinstall scriptlet (using/bin/sh): #安装完所执行的脚本 # Register the httpd service /sbin/chkconfig --add httpd /sbin/chkconfig --addhtcacheclean preuninstall scriptlet (using/bin/sh): #卸载前所执行的脚本 if [ $1 = 0 ]; then /sbin/service httpd stop > /dev/null 2>&1 /sbin/chkconfig --del httpd /sbin/service htcacheclean stop > /dev/null 2>&1 /sbin/chkconfig --del htcacheclean fi posttrans scriptlet (using/bin/sh): #卸载完所要执行的脚本 test -f/etc/sysconfig/httpd-disable-posttrans || /sbin/service httpd condrestart >/dev/null2>&1 || :
(11)查询某包安装后生成的文件是否有变动
当你安装一个些程序后,经过一段时间你发生系统最近有被人动过的迹象,如何查看某程序下的文件是否有变动,使用rpm命令的“-V”选项就可以查出。
[root@Bisc-lab01 ~]# rpm -Vhttpd S.5....T. c /etc/httpd/conf/httpd.conf
#如果文件有改变相应位会以相位的字母或数字来表示:
S file Size differs
M Mode differs (includes permissions and filetype)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
(12)验证光盘中程序包的来源及完整性
[root@Bisc-lab01 ~]# mount -r/dev/cdrom /media/cdrom/ #挂载光盘 [root@Bisc-lab01 ~]# cd/media/cdrom/ #切换着刚才挂载目录 [root@Bisc-lab01 cdrom]# rpm--import RPM-GPG-KEY-CentOS-6 #倒入验证码 [root@Bisc-lab01 cdrom]# rpm-K Packages/tree-1.5.3-2.el6.x86_64.rpm #验证包文件,显示OK Packages/tree-1.5.3-2.el6.x86_64.rpm:rsa sha1 (md5) pgp md5 OK
小结:
对于程序包的管理,说简单又不简单,说复杂也不复杂,对于以上的命令选项,在使用中结给你带来很你想不到的意外惊喜,以上的选项都可以通过man命令来获取,要善于使用帮助信息来给你提供相应的帮助。对于程序包的依赖关系,可以使用yum命令来解决一个程序在安装过程中所依赖的关系,请看下一篇博文,关于yum命令的使用,及建立属于自己的yum软件仓库。
本文出自 “乌大宛” 博客,请务必保留此出处http://wuday.blog.51cto.com/2623944/1631388
标签:程序 rpm
原文地址:http://wuday.blog.51cto.com/2623944/1631388