Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
*Q}[ ]g E-ZRG!)[v 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
99OD=pxQ 7Bz*r0 9S 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
~VTs:h 9l+{OA 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
8cm@a*2% --------------------------------------------------------------------------------
"DSPPE&[c 5V-jMB $R^AEa7 以下简要介绍RPM包的安装,删除和查询
Q;h3v1GC\P |@j_2Q, RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
+&ZX$ .~=HgOJ rpm命令的格式为:
,smF^l
Psa@@'w rpm [options] [packages]
znZ7*S >6\ ~# 7wdP 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
uCzii o`S UQd6/mD`e 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
O.k\]' --------------------------------------------------------------------------------
zuL7%qyv 0y%L-:/c| *]s&8/Gmb RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
';RI7)< dEp/dd~(& 以下为rpm --showrc命令显示的节选:
Jm(ixekp =qoRS0Qa 示例:
2H[)1|]l ~U}Mv{y 此为部分显示结果
noA-) [root@localhost ~]# rpm --showrc
.Gb+\E{M ARCHITECTURE AND OS:
*j*Du+ build arch : i386
0jB X5 compatible build archs: athlon i686 i586 i486 i386 noarch
+nZRi3yu= build os : Linux
iRV;Fks compatible build os's : linux
&1)xoZ'\ install arch : athlon
*M~.3$NN install os : Linux
FWPW/oC compatible archs : athlon i686 i586 i486 i386 noarch
IlLn4Iw compatible os's : linux
<>4!XPo%J RPMRC VALUES:
e ^e$mtI macrofiles : /usr/lib/rpm/macros:/usr/lib/rpm/i386-linux/macros:/usr/lib/rpm/redhat/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/i386-linux/macros:~/.rpmmacros
MV+i{] optflags : %{__global_cflags} -m32 -march=athlon
3;$bS<> Features supported by rpmlib:
PDw{R]V+ rpmlib(VersionedDependencies) = 3.0.3-1
BSXdvI1y PreReq:, Provides:, and Obsoletes: dependencies support versions.
+lp{#1q0 rpmlib(CompressedFileNames) = 3.0.4-1
~v:#zU file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
{^&@gkYY rpmlib(PayloadIsBzip2) = 3.0.5-1
aIvBY78o package payload can be compressed using bzip2.
)teFS% --------------------------------------------------------------------------------
%my T!(
4QRh[ ER|!KtCSM rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
aqQ o,5U> /jrY%C 示例:
Etmo78e UR>_)* [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
=B5E0x Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
w@N{@tG Preparing... ########################################### [100%]
fwmLJ5o
N 1:lynx ########################################### [100%]
9[>Lp9l' --------------------------------------------------------------------------------
Xt(!
a ySruAkw% I}:L]H{E 以下列出一些通用选项(可以用于所有模式):
%{ ~>n" INLf# N --dbpath path
\ sf! 用path作为RPM数据库的路径。
e`DsP8-&v ^!@*P,'I --ftpport prot
]Ti $ztJ 用port作为FTP端口。
cS~!8`Fwy _Y
YP4lEL --ftpproxy host
mrnxI#6 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
+Hy4s[_| xw%)rm<t --help
Ff/Ig]Lb 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
(Nt[v;BnO #1l7FT?q --justdb
5 LMj!)3 只更新数据库;不改变任何文件。
!V(`ZH 3bH5C3(u --pipe command
7jezw'\=~ 用管道把rpm输出到commond。
)l2P}k7`
`Yogq)G} --quiet
-c$z 2Q) 仅显示错误信息。
92(~'5Qr FrR9{YTA. --rcfile filename
j7sU0"7^ 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
OPJgIU% C5B=NAc --root dir
Dh8(HiXf: 在dir目录内执行所有操作。
7ti< ;l`X!3 --version
lQr6;D}+ 输出rpm版本号。
-RCv7U` !d|8'^gc -vv
x[}06k' 输出调试信息。
E8;TLk4\ *K!7R2Rat --------------------------------------------------------------------------------
M5rwoyn (+$ol'i \6c8z/O7 安装升级和刷新
I3ho(Kdi gL,"ef+nM 安装或升级一个RPM包,install命令的语法为:
p[;8 b.6ZfB,+G rpm -i [install-options] package_file
T:@7S rpm --install [install-options] package_file
Bb_}YU2# Uk"Y/Ddm 示例:
6 <r2*` 09x+Tko9;* [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
\v s%U}IrO package lynx-2.8.5-18 is already installed
T"A^[r* [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
t!l/` e%J --------------------------------------------------------------------------------
<!hpfTz* <dJIq"){ CMKhS,,o 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
9M0d+:YJ +QQYPEx+ rpm -U [install-options] package_file
1[[TB .xF rpm --upgrade [install-options] package_file
hC|KH}aCR) IKtiR8 示例:
~e+0c'n\ IF$^0q 先安装旧版
'@S,V/jy0z [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
HD~jU>}} J,`_,T 再安装新版
j`+0.Zlq [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
1O- E], ^VC7C~NZ!M 显示出新版本信息
?bn;{c;E [root@localhost ~]# rpm -q lynx
CElPU`J,\[ lynx-2.8.5-18
/W? z0tk` &KOO&, 说明:
Wu]/(F -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
a]{uZGn@i \/X{n*Hw? 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
1wU=WE(kKZ --------------------------------------------------------------------------------
f^ywW[dF /H.(d 4C \ p1K(H 刷新的语法是:
ZtKQ]jV&@ dqL-' rpm -F [install-options] package_file
KWtu,~O_u Sn+FV+D rpm --freshen [install-options] package_file
u% r!?-z nh?9R& 示例:
4*YOFU}l L;4[ k;5 从未安装过lynx包,使用-F选项,将无法升级。
@\S]]oLn @yCW8] [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
P7cge [root@localhost ~]# rpm -q lynx
%
i%ew4 package lynx is not installed
%f>X-*}NI- --------------------------------------------------------------------------------
2z[r@}3 ^#}dPGm `X3Xz! 安装和更新选项为:
rO5u~"v] 1mY+0 --allfiles
0I(uddG3 安装或更新所有文件。
ntDRlX %GNUnr$ --badreloc
5#yJK>a7 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
HDa~7wE g"TPII$ --excludedocs
.jLMl*6%: 不安装任何文档文件。
%_]=i@Y~ 3$MYS^D --excludepath path
YG-Z.{d5Z 不安装文件名以path开始的任何文件。
9"[!EKW wxH(&CB-{ --force
-B<O_*wOj 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
}g%KvYB_ _ .-o%6 -h,--hash
u-8X$aJ 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
"sz.v<F0:s y|FBYcn#F --ignorearch
v@F|O8t:s 即使二进制包用于不同的体系结果也进行安装。
E_ o{c5N i# CaKS --ignoreos
jc${.?m 即使操作系统不匹配也安装二进制包。
._8xY$l$ dM$N1DB{U+ --ignoresize
L$oia)%t- 安装前不检查磁盘的可用空间。
;,Of\Efc| 5HWwl.D --includedocs
fF8a 1XV 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
?7fQ1/emhO <O
<'1uO, --nodeps
6ctHL<^ 不检查这个包是否依赖于其他包的存在。
a7XXhsZ j CTQsV --noorder
^4y(pcD 安装之前,不为了满足依赖关系而对包进行重新排序。
[Ihp\!xqI va`l*N5 --noscripts
T#MA#H2 不执行任何预安装或后安装脚本。
g;u<[>'I Sb@{f<3E --notriggers
j
AJ/ 不执行任何由包安装触发的脚本。
{bAWc. NB|RZf9M --oldpackage
0A)
Vtj$ 允许升级以用旧包替换新包。
I$3"|7[n kX ~-g --percent
2VoEQ 当文件被解压时输出完成百分比的信息。
lM@<_=2 aF;]7i@ --prefix path
&CB.*\0 把可重定位包的安装前缀设置为path。
Pg!;o=
{M n"^/UQ|#j --replacefiles
CT$& zEIm 即使包替换了来自其他安装包的文件,也安装这些包。
wGov|[X dv1x78xG> --replacepkgs
+cPE4(d 即使某些包已经被安装,也安装他们。
\Owful nG4Uk2> --test
s=\LewF1< 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
[H6X2yjj| kg/+vJ --------------------------------------------------------------------------------
(>!]A6^L~ BR&Qw'O% jc%{a*n"vr 查询
:Y}Y&mA4 dy2_@/T7 query命令的语法为:
pmow[e +
d+ hvwEM rpm -q[information-options] [package-options]
5 WN`8? rpm --query[information-options] [package-options]
. Ce&9l }skRlC 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
m>Yo9/XpZ --------------------------------------------------------------------------------
7dM6;`V^ &;~2sEo,
X]&;8 以下简单示演示一下包查询:
RTPq8S" Ef,7zKG 简单查询:
q 2_N90u &viwo}ls0 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
%v`-uAy: uv~qK:Nw( 示例:
/el["l B"?+5A7 [root@localhost ~]# rpm -q lynx
!i~x"1 lynx-2.8.5-18
g~ppPAH --------------------------------------------------------------------------------
n,Yr!W:h
oUKBb&&O ^hl]s?"3 信息查询:
g|v1qfK
BdE`p{ rpm -qi packagename命令可以得到安装包的汇总信息。
cKi^C p ,[XT`q^ 示例:
(^s &M [root@localhost ~]# rpm -qi lynx
m
p|20`go Name : lynx Relocations: (not relocatable)
epGX. Version : 2.8.5 Vendor: Red Hat, Inc.
OW63^wA`s Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
q5'yD;[hE Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
`lu"y F Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
&0th1-OP_ Size : 4837340 License: GPL
4mM2C`I Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
YvxMA# Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> 1a=9z'8V URL :
http://lynx.isc.org/ Z3abem<Q Summary : 一个基于文本的网页浏览器。
p^4;fD Description :
@qO8Jg"Q Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
#pDGaqeX 图像,但是它支持框架、表格、以及多数其它 HTML
n}9Msen 标签。Lynx 优于图形化浏览器的地方是它的速度――
gvTOCF Links 能够快速启动、退出、及显示网页。
iX>!ju'V 标识拥有者
5E\<r/FeJ --------------------------------------------------------------------------------
Jm);|#y /BjGAa( 53,,%Ue 找出什么包拥有文件file:
LrM.wr zI/ U Qi^udGFD 示例:
t6h`WAZV %!HnGwv- [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
SILvqm lynx-2.8.5-18
Ip7FD9
^ --------------------------------------------------------------------------------
;}>g1&q QGbD=c7 {xBjEhQm 列表包中的文件:
Z$#ZYD g+KzlS[6 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
Rbj+P;t& Kt4\&l-De 示例:
z:i X]df AHMV@o`V 此为部分显示结果
VM\Z<}C [root@localhost ~]# rpm -ql lynx
?`l=!>C4s /etc/lynx-site.cfg
4MtqQq4% /etc/lynx.cfg
c~L6fvS /etc/lynx.cfg.cs
)QSt7g|OF /etc/lynx.cfg.ja
(/x@W` /etc/lynx.cfg.sk
Gs=a(0
0i? /usr/bin/lynx
OJ_2z|f< /usr/share/doc/lynx-2.8.5
Z1V'NJI+ /usr/share/doc/lynx-2.8.5/INSTALLATION
z?t(+^ /usr/share/doc/lynx-2.8.5/README
O[hbu ![ /usr/share/doc/lynx-2.8.5/docs
@DQ"vFj6< /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
!k>H e*M}P /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
N>}K+M> /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
{OhkuON /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
yu?s5 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
"<. /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
5#9Wd9LP /usr/share/doc/lynx-2.8.5/docs/CMU.announce
&zh+:TRm /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
M9 2~iM /usr/share/doc/lynx-2.8.5/docs/FM.announce
,^+R%7mv /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
@Y&9S)xcE /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
pv m'pu78 /usr/share/doc/lynx-2.8.5/docs/README.TRST
aWsKJo>j[# /usr/share/doc/lynx-2.8.5/docs/README.chartrans
X+gz+V/ 4Jk}/_ --------------------------------------------------------------------------------
+/>YH-P= dXo'#. \2<yZCn 列出包所提供的实际能力:
mN'9|`>V> HsgTHe --provides选项的作用是列出这个包所提供的实际能力。
^9*|_\3N w[A3;]la 示例:
#c)Ou!Ldb j3[OY [root@localhost ~]# rpm -q --provides lynx
@`y?\fWh config(lynx) = 2.8.5-18
iUG/ webclient
<]e;tF)+ lynx = 2.8.5-18
'Rh>w=wB' --------------------------------------------------------------------------------
3JE;:2O~P 7SY->-H8 rLw[y$2 列出这个包所倚赖的任何包:
dzv,)X ~"rwP=<} -R,--requires选项的作用是列出这个包所依赖的任何包。
ISnS; (z1%lZ}( 示例:
vYt:}$AE 9c;lTl^4; [root@localhost ~]# rpm -qR lynx
{5tEsv /bin/sh
/ ?[gB:s config(lynx) = 2.8.5-18
wCTR-pL^ indexhtml
iBiA0 W libc.so.6
5B.??;xtaV libc.so.6(GLIBC_2.0)
W7[S7kd libc.so.6(GLIBC_2.1)
&N7:k+E libc.so.6(GLIBC_2.2)
_TN$c libc.so.6(GLIBC_2.3)
@[b:([ libcrypto.so.4
ty< tv|p libncursesw.so.5
lPN< rgg libssl.so.4
T17LYHIT libz.so.1
6-X?uaY)os rpmlib(CompressedFileNames) <= 3.0.4-1
hYZ:" x rpmlib(PayloadFilesHavePrefix) <= 4.0-1
:kx#];2i --------------------------------------------------------------------------------
bSmaE7 }NBJ T4R IK? $!jh 列出包中的配置文件
UlN|Oy, Sd{"A0[A| -c,--configfiles选项的作用是列出包中的配置文件
@"0N @gU K<w5[E9V. 示例:
>hL'#;:f# F Hcqu_;J [root@localhost ~]# rpm -qc lynx
1&pP}v ? /etc/lynx-site.cfg
Z%9^6kdY /etc/lynx.cfg
dVt@D& /etc/lynx.cfg.cs
=XBXSW8)DJ /etc/lynx.cfg.ja
n03SXaU~V /etc/lynx.cfg.sk
g5 |\G%dOt --------------------------------------------------------------------------------
rLVc<595 !>@V#I '*ICGKoT 显示有关于包的改变信息的日志:
f-nC+ tWOze, N --changllog选项的作用是显示有关于包的改变信息的日志。
U?ic$J]N kZ[yv 示例:
Ng39D#_) f EiEfu 此为部分显示结果
+;iesULXn [root@localhost ~]# rpm -q --changelog lynx
H.[&gm}p> * 五 7月 09 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-18
F}.TT=((8 - Removed perl dependencies (bug #127423).
BBJ]>lQ * 三 6月 16 2004 Elliot Lee <
sopwith@redhat.com>
:::f,aCAu - rebuilt
>~>[}d;glw * 三 5月 26 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-16
jTgh+j]AP - No longer need lynx-284-ipv6-salen.patch.
;<@O^_+ - No longer need lynx2-8-2-telnet.patch.
bNU^tL3QZ * 六 2月 14 2004 Elliot Lee <
sopwith@redhat.com> 2.8.5-15
RTY4%6]O - rebuilt
7%!KAtc * 二 12月 02 2003 Tim Waugh <
twaugh@redhat.com> 2.8.5-14
hPpXB:(-0 - Updated to dev16, fixing bug #110196.
Aq]'.J=4 - No longer need crlf patch.
#*M$,ig - Use shipped ja translations.
+&zC