Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10809898
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:24:41

RPM有5种基本操作模式:安装、卸装、升级、查询和校验。
1.安装
语法
rpm –ivh [RPM包文件名称]
选项说明
i:表示安装包。
v:表示在安装过程中显示详细的信息。
h:表示显示水平进度条。
(1)安装包。
例9.1:安装foo-2.0-1.i386.rpm软件包。
#rpm -ivh foo-1.0-1.i386.rpm
如果安装成功,系统会显示包的名称,然后在软件包安装时在屏幕上打“#”显示安装的进度,显示如下信息。
Preparing...              ########################################### [100%]
    1:foo                    ########################################### [100%]
如果某软件包的同一版本已经安装,系统会显示如下信息:
Preparing...                ########################################### [100%]
package foo-1.0-1 is already installed
如果在软件包已安装的情况下仍打算安装同一版本的软件包,可以使用“--replacepkgs”选项忽略错误。
例9.2:在foo-1.0-1.i386.rpm已安装的情况下仍旧安装该软件包。
#rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
(2)软件包冲突。
如果试图安装的软件包中包含已被另一个软件包或同一软件包的早期版本安装了的文件,系统会显示如下信息:
Preparing...                         ########################################### [100%]
file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
使用“--replacefiles”可以忽略这个错误。
例9.3:foo-1.0-1.i386.rpm软件包冲突,忽略错误继续安装。
#rpm -ivh --replacefiles foo-1.0-1.i386.rpm
2.卸载软件包
语法
rpm –e [RPM包名称]
选项说明
e:表示卸载软件包
例9.4:卸载foo软件包。
#rpm -e foo
在卸载软件包时使用软件包名称foo,而不是软件包文件名称foo-1.0-1.i386.rpm。
在卸载某软件包时也会遇到依赖关系错误。当另一个已安装的软件包依赖于用户试图删除的软件包时,依赖关系错误就会发生。例如:
Preparing...                       ########################################### [100%]
error: removing these packages would break dependencies:
            foo is needed by  bar-2.0.20-3.i386.rpm
要使RPM忽略这个错误并强制删除该软件包,可以使用“—nodeps”选项,但是依赖于它的软件包可能无法正常运行。
3.升级软件包
语法
rpm –Uvh [RPM包文件名称]
选项说明
U:表示升级软件包
例9.5:升级foo-2.0-1.i386.rpm软件包。
#rpm -Uvh foo-2.0-1.i386.rpm
升级软件包实际上是删除和安装的组合,因此,在RPM软件包升级过程中,还会碰到另一个错误,如果RPM认为用户正试图升级到软件包的早期版本,系统会显示如下信息:
#package foo-2.0-1 (which is newer than foo-1.0-1) is already installed
要使RPM软件包强制升级,可以使用“--oldpackage”选项。
例9.6:强制升级foo-1.0-1.i386.rpm软件包。
#rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
4.刷新软件包
语法
rpm -Fvh [RPM包文件名称]
选项说明
F:表示刷新软件包
例9.7:刷新foo-2.0-1.i386.rpm软件包。
#rpm -Fvh foo-1.2-1.i386.rpm
使用RPM刷新软件包时,系统会比较指定的软件包的版本和系统上已安装的版本。当RPM的刷新选项处理的版本比已安装的版本更新,它就会升级到更新的版本。然而,如果某软件包先前没有安装,RPM的刷新选项将不会安装该软件包。这和RPM的升级选项不同,因为不管该软件包的早期版本是否已被安装,升级选项都会安装该软件包。
5.查询软件包
使用“rpm –q”命令查询软件包安装的信息。
(1)查询指定软件包的详细信息。
功能说明
使用该命令会显示已安装软件包的名称、版本和发行号码。
语法
rpm -q [RPM包名称]
、例9.8:查询foo软件包是否安装。
#rpm -q foo 
package foo is not installed
//查询到foo软件包没有安装
例9.9:查询foo软件包是否安装。
#rpm -qa bind
bind-9.2.4-2
//查询到bind软件包已经安装
(2)查询系统中所有已安装的RPM软件包
语法
rpm –qa:
例9.10:查询系统内所有已安装的RPM软件包。
#rpm –qa 
basesystem-8.0-4
chkconfig-1.3.13.2-1
iputils-20020927-18.EL4.1
checkpolicy-1.17.5-1
audit-1.0.3-6.EL4
perl-Filter-1.30-6
usbutils-0.11-6.1
findutils-4.1.20-7
module-init-tools-3.1-0.pre5.3
sed-4.1.2-4
cracklib-2.7-29
……………………………………
(3)查询指定已安装软件包的描述信息。
功能说明
显示软件包的名称、描述、发行版本、大小、制造日期、生产商以及其他杂项。

语法
rpm –qi [RPM包名称]
例9.11:查询bind软件包的描述信息。
#rpm -qi bind
Name         : bind                        Relocations: (not relocatable)
Version     : 9.2.4                             Vendor: Red Hat, Inc.
Release     : 2                            Build Date: 2004年10月19日 星期二 05时17分38秒
Install Date: 2007年03月15日 星期四 14时07分49秒      Build Host: bugs.build.redhat.com
Group        : 系统环境/守护进程            Source RPM: bind-9.2.4-2.src.rpm
Size         : 1339216                          License: BSD-like
Signature   : DSA/SHA1, 2005年01月06日 星期四 05时42分19秒, Key ID 219180cddb42a60e
Packager    : Red Hat, Inc. 
URL          : 
Summary     : DNS (域名系统) 服务器。
Description :
BIND (伯克利互联网域名) 是 DNS (域名系统)协议的一种实现。
BIND 包括一个把主机名解析为 IP 地址的 DNS 服务器(named);
一个解析器库(在与 DNS 接口时应用程序所使用的例程);以及校验 DNS 服务器是否被正确操作的工具
(4)查询指定已安装软件包所含的文件列表。
语法
rpm –ql [RPM包名称]
例9.12:查询bind软件包所包含的文件列表。
#rpm -ql bind
/etc/logrotate.d/named
/etc/rc.d/init.d/named
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/usr/sbin/dns-keygen
/usr/sbin/dnssec-keygen
/usr/sbin/dnssec-makekeyset
/usr/sbin/dnssec-signkey
/usr/sbin/dnssec-signzone
/usr/sbin/lwresd
…………………………………
(5)查询软件包的依赖要求。
语法
rpm –qR [RPM包名称]
例9.13:查询bind软件包的依赖关系。
#rpm -qR bind
/bin/bash  
/bin/sh  
/bin/sh  
/bin/sh  
/bin/sh  
/bin/sh  
/bin/sh  
/bin/usleep  
bind-utils  
chkconfig  
config(bind) = 20:9.2.4-2
fileutils  
…………………………………………
(6)查询系统中指定文件属于哪个软件包。
语法
rpm –qf [文件名]
例9.14:查询/etc/logrotate.d/named文件属于哪个软件包。
#rpm -qf /etc/logrotate.d/named
bind-9.2.4-2
当指定文件时,必须指定文件的完整路径(如/etc/logrotate.d/named)。
6.校验软件包
校验软件包将检查从软件包安装的文件和原始软件包中的同一文件的信息,它校验每个文件的大小、MD5值、权限、类型、所有者和组群。
例9.15:校验所有在bind软件包内的文件。
#rpm -V bind
........C c /etc/rndc.key
S.5....T. c /etc/sysconfig/named
例9.16:校验包含/etc/rndc.key文件的软件包。
# rpm -Vf /etc/rndc.key
........C c /etc/rndc.key
S.5....T. c /etc/sysconfig/named
例9.17:校验所有安装的软件包。
#rpm -Va
S.5....T. c /etc/krb.conf
.M.......   /var/lib/dhcpv6
.......T. c /etc/mail/sendmail.cf
SM5....TC c /etc/mail/submit.cf
S.5....T. c /var/log/mail/statistics
S.5....TC c /var/lib/nfs/etab
........?   /var/lib/nfs/rpc_pipefs
.......TC c /var/lib/nfs/xtab
S.5....TC c /etc/sysconfig/rhn/up2date-uuid
SM5....TC   /usr/share/firstboot/modules/rhn_activate_gui.pyc
SM5....TC   /usr/share/firstboot/modules/rhn_login_gui.pyc
SM5....TC   /usr/share/firstboot/modules/rhn_newaccount_gui.pyc
SM5....TC   /usr/share/firstboot/modules/rhn_optout_gui.
............................................
例9.18:根据readline-devel-4.3-13.i386.rpm软件包进行校验。
#rpm -Vp readline-devel-4.3-13.i386.rpm
warning: readline-devel-4.3-13.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
如果一切都被校验正确,屏幕上就不会显示输出。如果出现矛盾,它们就会被显示。输出的格式为包含4个字符的字符串(c代表配置文件)和文件名称。这4个字符的每个字符都代表一种文件属性的比较结果,所比较的是文件的属性和 RPM 数据库中记录的属性。单用一个“.”意味着测试通过。下列字符代表某类测试失败。
5:MD5校验和。
S:文件大小。
L:符号链接。
T:文件修改时间。
D:设备。
U:用户。
G:组群。
M:模式(包括权限和文件类型)。
?:不可读文件。

阅读(1652) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~