3.1 RPM包的管理
RPM有5种基本操作模式:安装、卸装、升级、查询和校验。 1.安装软件包 语法
rpm –ivh [RPM包文件名称] 选项说明
i:表示安装软件包。
v:表示在安装过程中显示详细的信息。 h:表示显示水平进度条。 (1)安装软件包。
例3.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‖选项忽略错误。
例3.2:在foo-1.0-1.i386.rpm已安装的情况下仍旧安装该软件包。
78
#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‖可以忽略这个错误。
例3.3:foo-1.0-1.i386.rpm软件包冲突,忽略错误继续安装。
#rpm -ivh --replacefiles foo-1.0-1.i386.rpm 2.卸载软件包 语法
rpm –e [RPM包名称] 选项说明
e:表示卸载软件包 例3.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‖选项,但是依
79
赖于它的软件包可能无法正常运行。 3.升级软件包 语法
rpm –Uvh [RPM包文件名称] 选项说明
U:表示升级软件包
例3.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‖选项。 例3.6:强制升级foo-1.0-1.i386.rpm软件包。
#rpm -Uvh --oldpackage foo-1.0-1.i386.rpm 4.刷新软件包 语法
rpm -Fvh [RPM包文件名称] 选项说明
F:表示刷新软件包
例3.7:刷新foo-2.0-1.i386.rpm软件包。
#rpm -Fvh foo-1.2-1.i386.rpm 使用RPM刷新软件包时,系统会比较指定的软件包的版本和系统上已安装的版本。当RPM的刷新选项处理的版本比已安装的版本更新,它就会升级到更新的版本。然而,如果某软件包先前没有安装,RPM的刷新选项将不会安装该软件包。
80
这和RPM的升级选项不同,因为不管该软件包的早期版本是否已被安装,升级选项都会安装该软件包。 5.查询软件包
使用―rpm –q‖命令查询软件包安装的信息。 (1)查询指定软件包的详细信息。 功能说明
使用该命令会显示已安装软件包的名称、版本和发行号码。 语法
rpm -q [RPM包名称] 、例3.8:查询foo软件包是否安装。
#rpm -q foo package foo is not installed //查询到foo软件包没有安装 例3.9:查询foo软件包是否安装。
#rpm -qa bind bind-9.2.4-2 //查询到bind软件包已经安装 (2)查询系统中所有已安装的RPM软件包 语法
rpm –qa: 例3.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
81
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包名称] 例3.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 : http://www.isc.org/products/BIND/ Summary : DNS (域名系统) 服务器。 Description : BIND (伯克利互联网域名) 是 DNS (域名系统)协议的一种实现。 BIND 包括一个把主机名解析为 IP 地址的 DNS 服务器
82
(named); 一个解析器库(在与 DNS 接口时应用程序所使用的例程);以及校验 DNS 服务器是否被正确操作的工具 (4)查询指定已安装软件包所含的文件列表。 语法
rpm –ql [RPM包名称] 例3.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包名称] 例3.13:查询bind软件包的依赖关系。
#rpm -qR bind /bin/bash /bin/sh /bin/sh /bin/sh /bin/sh /bin/sh /bin/sh
83
/bin/usleep bind-utils chkconfig config(bind) = 20:9.2.4-2 fileutils ………………………………………… (6)查询系统中指定文件属于哪个软件包。 语法
rpm –qf [文件名] 例3.14:查询/etc/logrotate.d/named文件属于哪个软件包。
#rpm -qf /etc/logrotate.d/named bind-9.2.4-2 当指定文件时,必须指定文件的完整路径(如/etc/logrotate.d/named)。 6.校验软件包
校验软件包将检查从软件包安装的文件和原始软件包中的同一文件的信息,它校验每个文件的大小、MD5值、权限、类型、所有者和组群。 例3.15:校验所有在bind软件包内的文件。
#rpm -V bind ........C c /etc/rndc.key S.5....T. c /etc/sysconfig/named 例3.16:校验包含/etc/rndc.key文件的软件包。
# rpm -Vf /etc/rndc.key ........C c /etc/rndc.key S.5....T. c /etc/sysconfig/named 例3.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
84
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. ............................................ 例3.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:模式(包括权限和文件类型)。 ?:不可读文件。
85
3.2 tar包管理
在Windows系统下最常见的压缩文件是zip和rar,Linux系统就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外Windows系统下的.zip和.rar也可以在Linux下使用,本节主要讲解如何管理这些软件包。 在具体讲述压缩文件之前需要了解打包和压缩的概念。打包是指将许多文件和目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。Linux系统中的很多压缩程序只能针对一个文件进行压缩,这样当需要压缩一大堆文件时,就得先借助其他的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行 压缩。 3.2.1 tar包简介
Linux系统下最常用的打包程序是tar,使用tar程序打出来的包称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其他的程序来进行压缩了。
tar可以为文件和目录创建备份。利用tar,用户可以为某一特定文件创建备份,也可以在备份中改变文件,或者向备份中加入新的文件。
tar最初被用来在磁带上创建备份,现在,用户可以在任何设备上创建备份,如软盘。利用tar命令可以把一大堆的文件和目录打包成一个文件,这对于备份文件或将几个文件组合成为一个文件进行网络传输是非常有用的。 3.2.2 tar包使用和管理 语法
tar [主选项+辅选项][文件或者目录] 说明:
tar命令的选项有很多,使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。 选项说明 主选项:
c:创建新的档案文件。如果用户想备份一个目录或一些文件,就要选择这个选
86
项。
r:把要存档的文件追加到档案文件的未尾。例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
t:列出档案文件的内容,查看已经备份了哪些文件。
u:更新文件,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。 x:从档案文件中释放文件。 辅助选项:
b:该选项是为磁带机设定的,其后跟一个字,用来说明区块的大小,系统预设值为20(20*512 bytes)。
f:使用档案文件或设备,这个选项通常是必选的。
k:保存已经存在的文件。例如在还原某个文件的过程中遇到相同的文件,则不会进行覆盖。
m:在还原文件时,把所有文件的修改时间设定为现在。 M:创建多卷的档案文件,以便在几个磁盘中存放。
v:详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。 w:每一步都要求确认。
z:用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
例3.19:把/root/abc目录包括它的子目录全部做备份文件,备份文件名为abc.tar。
#tar cvf abc.tar /root/abc abc/ abc/a abc/b abc/c
87
#ls -l 总用量 140 drwxr-xr-x 2 root root 4096 4月 20 00:52 abc -rw-r--r-- 1 root root 10240 4月 20 00:53 abc.tar -rw-r--r-- 1 root root 3051 2007-03-15 anaconda-ks.cfg drwxr-sr-x 3 root root 4096 4月 14 23:35 Desktop -rw-r--r-- 1 root root 48539 2007-03-15 install.log //可以看到abc.tar就是abc文件打包后的文件,其容量比打包前要大 例3.20:查看abc.tar备份文件的内容,并显示在显示器上。
#tar tvf abc.tar drwxr-xr-x root/root 0 2004-04-20 00:52:57 abc/ -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/a -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/b -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/c //可以看到该打包文件由一个目录和该目录下的3个文件打包而成 例3.21:将打包文件abc.tar解包出来。
#tar xvf abc.tar abc/ abc/a abc/b abc/c #ls -l 总用量 148 drwxr-xr-x 2 root root 4096 4月 20 00:52 abc -rw-r--r-- 1 root root 10240 4月 20 00:53 abc.tar -rw-r--r-- 1 root root 175 4月 20 00:55 abc.tar.gz
88
-rw-r--r-- 1 root root 3051 2007-03-15 anaconda-ks.cfg drwxr-sr-x 3 root root 4096 4月 14 23:35 Desktop -rw-r--r-- 1 root root 48539 2007-03-15 install.log 例3.22:将文件d增加到abc.tar包里面去。
#tar rvf abc.tar d d #tar tvf abc.tar drwxr-xr-x root/root 0 2004-04-20 00:52:57 abc/ -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/a -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/b -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/c -rw-r--r-- root/root 15 2004-04-20 01:17:55 d 例3.23:更新原来tar包abc.tar中的文件a。
#tar uvf abc.tar d #tar tvf abc.tar drwxr-xr-x root/root 0 2004-04-20 00:52:57 abc/ -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/a -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/b -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/c -rw-r--r-- root/root 15 2004-04-20 01:22:14 d 例3.24:在/dev/fd0设备的软盘中创建一个备份文件,并将/home 目录中所有的文件都复制到备份文件中。
#tar cf /dev/fd0 /home 例3.25:恢复软盘设备磁盘中的文件。
#tar xf /dev/fd0 例3.26:在/dev/fd0设备的软盘中创建一个备份文件,并将/home 目录中所有的文件都复制到备份文件中,并在软盘已满的时候提醒用户再放入一张新的软盘。
#tar cMf /dev/fd0 /home 例3.27:恢复多张软盘设备磁盘中的文件,并在必要时提醒放入第二张软盘。
#tar xMf /dev/fd0 3.2.3 tar包的特殊使用
tar可以在打包或解包的同时调用其他的压缩程序,比如调用gzip、bzip2等。 1. tar调用gzip
gzip是GNU组织开发的一个压缩程序,以.gz结尾的文件就是gzip压缩的结果。与gzip相对应的解压程序是gunzip,tar中使用参数―z‖来调用gzip,下面举例说明。
例3.28:把/root/abc目录包括其子目录全部做备份文件,并进行压缩,备份文件名为abc.tar.gz。
#tar zcvf abc.tar.gz /root/abc abc/ abc/a abc/b abc/c #ls -l 总用量 148 drwxr-xr-x 2 root root 4096 4月 20 00:52 abc -rw-r--r-- 1 root root 10240 4月 20 00:53 abc.tar -rw-r--r-- 1 root root 175 4月 20 00:55 abc.tar.gz -rw-r--r-- 1 root root 3051 2007-03-15 anaconda-ks.cfg
90
drwxr-sr-x 3 root root 4096 4月 14 23:35 Desktop -rw-r--r-- 1 root root 48539 2007-03-15 install.log //可以看到abc.tar.gz就是abc文件压缩后的文件,其容量比打包前要小 例3.29:查看abc.tar.gz备份文件的内容,并显示在显示器上。
#tar ztvf abc.tar.gz drwxr-xr-x root/root 0 2004-04-20 00:52:57 abc/ -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/a -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/b -rw-r--r-- root/root 15 2004-04-20 00:52:57 abc/c //可以看到该压缩文件由一个目录和该目录下的3个文件压缩而成 例3.30:将压缩文件abc.tar.gz解压缩出来。
#tar zxvf abc.tar.gz abc/ abc/a abc/b abc/c #ls -l 总用量 148 drwxr-xr-x 2 root root 4096 4月 20 00:52 abc -rw-r--r-- 1 root root 10240 4月 20 00:53 abc.tar -rw-r--r-- 1 root root 175 4月 20 00:55 abc.tar.gz -rw-r--r-- 1 root root 3051 2007-03-15 anaconda-ks.cfg drwxr-sr-x 3 root root 4096 4月 14 23:35 Desktop -rw-r--r-- 1 root root 48539 2007-03-15 install.log 2.tar调用bzip2
91
bzip2是一个压缩能力更强的压缩程序,以.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对应的解压程序是bunzip2。tar中使用参数―j‖来调用gzip,下面举例说明。
例3.31:将目录/root/abc及该目录所有文件压缩成abc.tar.bz2文件。
#tar cjf abc.tar.bz2 /root/abc #ls -l 总用量 116 drwxr-xr-x 2 root root 4096 4月 20 00:52 abc -rw-r--r-- 1 root root 175 4月 20 01:32 abc.tar.bz2 -rw-r--r-- 1 root root 3051 2007-03-15 anaconda-ks.cfg drwxr-sr-x 3 root root 4096 4月 14 23:35 Desktop -rw-r--r-- 1 root root 48539 2007-03-15 install.log 例3.32:将abc.tar.bz2文件解压缩。
#tar xjf abc.tar.bz2 #ls -l 总用量 116 drwxr-xr-x 2 root root 4096 4月 20 00:52 abc -rw-r--r-- 1 root root 175 4月 20 01:32 abc.tar.bz2 -rw-r--r-- 1 root root 3051 2007-03-15 anaconda-ks.cfg drwxr-sr-x 3 root root 4096 4月 14 23:35 Desktop -rw-r--r-- 1 root root 48539 2007-03-15 install.log 2. tar调用compress
compress也是一个压缩程序,.Z结尾的文件就是bzip2压缩的结果。与 compress相对的解压程序是uncompress。tar中使用Z这个参数来调用gzip。下面举例说明。
例3.33:将文件a压缩成a.tar.Z文件。
92
#tar -cZf a.tar.Z it #ls -l 总用量 96 -rw-r--r-- 1 root root 0 4月 20 01:48 a -rw-r--r-- 1 root root 3051 2007-03-15 anaconda-ks.cfg -rw-r--r-- 1 root root 0 4月 20 01:47 a.tar.Z drwxr-sr-x 3 root root 4096 4月 14 23:35 Desktop -rw-r--r-- 1 root root 48539 2007-03-15 install.log 例3.34:将文件a.tar.Z解压缩。
#tar -xZf a.tar.Z
93
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务