Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
I Gv_s+O-* B!GpD@U 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
z_R^n#A~r JL $6Fw; 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
fpf1^TZ _6" vPN 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
O-Hu:KuIf --------------------------------------------------------------------------------
O%5cMz?eU sv\'XarM |0FRKD] 以下简要介绍RPM包的安装,删除和查询
0fA42*s; ]#R'hL%f RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
?g|K"P<1 v{`Z rpm命令的格式为:
WsRG>w3" /_y%b.f^ rpm [options] [packages]
44FK%TmtF ! utgo/n 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
fgg^B[(Y `M/=_O3 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
E9pKR+P --------------------------------------------------------------------------------
O$u;]cg 4r#O._Z !O
F#4N RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
\DBoe:0~ '`?\CXX 以下为rpm --showrc命令显示的节选:
_d6mf4M]5 -B:Z(]3#\ 示例:
!Sr^4R +Z KJWYG^zI 此为部分显示结果
9+@"DuYc6 [root@localhost ~]# rpm --showrc
P`6
T;|VDk ARCHITECTURE AND OS:
DR3M|4[ build arch : i386
b\NWDH7} compatible build archs: athlon i686 i586 i486 i386 noarch
xb\(>7M6Y build os : Linux
=o;QvOS; compatible build os's : linux
^-{ 1]G: install arch : athlon
hPr*<2mp install os : Linux
Sxf|gDC compatible archs : athlon i686 i586 i486 i386 noarch
nL!h hseH compatible os's : linux
RrKAgw RPMRC VALUES:
a
OR} 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
I8HUH*|)n optflags : %{__global_cflags} -m32 -march=athlon
cw.Uy(ks|$ Features supported by rpmlib:
?GqFtNz rpmlib(VersionedDependencies) = 3.0.3-1
.B*Yg<j PreReq:, Provides:, and Obsoletes: dependencies support versions.
hu~02v5 rpmlib(CompressedFileNames) = 3.0.4-1
EquNg@25W file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
yq+<pfaqvK rpmlib(PayloadIsBzip2) = 3.0.5-1
}l$M%Ps!a package payload can be compressed using bzip2.
'D%No!+Py --------------------------------------------------------------------------------
jENarB^As cd{3JGgB idnn%iO rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
i,rP/A^q
Y<TlvB)w 示例:
ONJW*!( X@Eq5s [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
}`6-^lj Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
^k &zX!W Preparing... ########################################### [100%]
I9*o[Jp5 1:lynx ########################################### [100%]
z:9 --------------------------------------------------------------------------------
AbUU#C7 8OH<ppi ASY
uZ 以下列出一些通用选项(可以用于所有模式):
6CO>Tg:% /k<*!H]KSg --dbpath path
8(ny^]v| 用path作为RPM数据库的路径。
S<Q8kW: A}C&WT~ --ftpport prot
)<G>]IP< 用port作为FTP端口。
d|TRP,y rMxst --ftpproxy host
?"+'OOqik 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
8F($RnP3 +P|$T:b --help
7c!oFwM 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
~6U@*Svk -`wGF#}y(= --justdb
U@yrqT@;AU 只更新数据库;不改变任何文件。
DamLkkoA
&=|W95 --pipe command
9F0B-aZ 用管道把rpm输出到commond。
n4YEu\* QI~s~j --quiet
R*.XbkW~ 仅显示错误信息。
g _;5" W6'+#Fp --rcfile filename
B;4hI? 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
-qfd)A6] #@BM1BpQ --root dir
1jo.d 在dir目录内执行所有操作。
%_M B- ~U*2h =] --version
']$ttfJB 输出rpm版本号。
<9-tA\`8N NrVQK}%K -vv
dDW],d}B; 输出调试信息。
7qon:]b4 U"-mLv"| --------------------------------------------------------------------------------
X ~4^$x v3S{dX< 25ul,t_Du 安装升级和刷新
GEA@AD=^f %xxe U 安装或升级一个RPM包,install命令的语法为:
L3Ry#uw *Dh.'bB! rpm -i [install-options] package_file
L"zOa90ig rpm --install [install-options] package_file
b9EJLD ;Iw'TF 示例:
ec1snMY gtJ^8khME [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
]gTaTY package lynx-2.8.5-18 is already installed
( NjX?^ [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
{ZbeF#*" --------------------------------------------------------------------------------
j='Ne5X1
_+|* 'Twi
@I 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
dge58A)Q qTqvEa^X` rpm -U [install-options] package_file
N<Bi.\XC rpm --upgrade [install-options] package_file
dcU|y%k% 'BAe>r_Pn 示例:
po=*%Zs*T 7`X"B*`~b 先安装旧版
F
xFK [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
/qI80KVnN p: sn>Y 再安装新版
$0LlaN@e [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
a9QaF s" wgLS9. 显示出新版本信息
LU?#{dZ [root@localhost ~]# rpm -q lynx
CvQ LF9| lynx-2.8.5-18
HLYM(Pz =Z#tZ{" 说明:
~l6e&J -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
,wO5IaV -rH4/Iby 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
Y141Twjvd --------------------------------------------------------------------------------
54uTu2 5*g@;aR1 b${Kj3( 刷新的语法是:
ys+?+dY2 #l;Ekjfz rpm -F [install-options] package_file
z@~1e]% <]wN/B-8J rpm --freshen [install-options] package_file
}'H Da M ip>dHj
z 示例:
IZAbW GmAE!+" 从未安装过lynx包,使用-F选项,将无法升级。
`R:<(: Q7=J[,V: 2 [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
y9s5{\H [root@localhost ~]# rpm -q lynx
zztW7MG2lQ package lynx is not installed
a$aI% --------------------------------------------------------------------------------
c
|C12b[ uT-WQ/id }a<MVG:>SF 安装和更新选项为:
[&{"1Z DN^ln%# --allfiles
5V?1/ 安装或更新所有文件。
ni%^w(J3Q ;"Ot\:0 --badreloc
@
K@~4! 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
zLxWyPM0; ?erDP8 --excludedocs
2lp.Td`{ 不安装任何文档文件。
^f`#8G7 ( Rdnd| --excludepath path
jC\R8_ 不安装文件名以path开始的任何文件。
^<% w'*gR uxh4nyE --force
=<e# 2 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
DdSUB RhQOl9 -h,--hash
|LNXu 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
l^Lg"m2 ]iz5VI@ --ignorearch
G&uj}rj 即使二进制包用于不同的体系结果也进行安装。
PTePSj1N P@5^`b| --ignoreos
DV%tby 即使操作系统不匹配也安装二进制包。
zkd#vAY(A 6]rrj --ignoresize
zP9 HYS 安装前不检查磁盘的可用空间。
/(}V!0\? qQ1m5_OD`z --includedocs
G3U+BC23E 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
T.1z<l"" 6=')*_~/ --nodeps
4a3f!G$ 不检查这个包是否依赖于其他包的存在。
M1ayAXO qp{NRNkQ --noorder
;3?M?E/$s 安装之前,不为了满足依赖关系而对包进行重新排序。
RK'( {1 )(ma --noscripts
Gf%o|kX] 不执行任何预安装或后安装脚本。
s-C.+9 M?\)&2f[Z --notriggers
"3^6 不执行任何由包安装触发的脚本。
($cu!$lY~ eq@ v2o7 --oldpackage
be764do 允许升级以用旧包替换新包。
Eui;2P~ 3p^WTQ>( --percent
d&ZwVF! 当文件被解压时输出完成百分比的信息。
`r]Cd
{G {(tE pr --prefix path
T@RzY2tz 把可重定位包的安装前缀设置为path。
@DUdgPA )0GnTB;5Z --replacefiles
{T^'&W>8G8 即使包替换了来自其他安装包的文件,也安装这些包。
FF_$)%YUp XsR%_eT --replacepkgs
<wSmfg,yF 即使某些包已经被安装,也安装他们。
9m'[52{o w"BTu-I --test
,F*e^#> 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
ebao7r5@ pDKJLa --------------------------------------------------------------------------------
W*s`1O > =~arj r2<+ =INn 查询
_*;cwMne- >WD^)W fa query命令的语法为:
I{Kc{MXn z)]EB6uRg rpm -q[information-options] [package-options]
Ke/P[fo rpm --query[information-options] [package-options]
i5wA=K_ @qe>ph[UA 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
43)9iDmJ8< --------------------------------------------------------------------------------
)RkU='lB " $}F]pa[ K9P"ncMt 以下简单示演示一下包查询:
BsRas M"FAUqz` 简单查询:
hZ#tB H\b5]q% 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
}3*h`(Bv7 .*f;v4! 示例:
<.' cCY J`8>QMK^5 [root@localhost ~]# rpm -q lynx
\LYQZ*F lynx-2.8.5-18
cwD0 ~B --------------------------------------------------------------------------------
b:3hKW zk/!#5JtK Xo*$|9[. 信息查询:
R5i8cjKZ?w dyp]y$ rpm -qi packagename命令可以得到安装包的汇总信息。
q+:(@w6 XnY}dsSO 示例:
]_=HC5" [root@localhost ~]# rpm -qi lynx
c,-x}i0c Name : lynx Relocations: (not relocatable)
'LOqGpmVc Version : 2.8.5 Vendor: Red Hat, Inc.
EiN.VU ` Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
'wZy: c Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
XVLuhwi Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
m0*
B[ Size : 4837340 License: GPL
V*m)h Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
XH2SEeh Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> _Pz3QsV9 URL :
http://lynx.isc.org/ j(BS;J$i Summary : 一个基于文本的网页浏览器。
|HU
qqlf Description :
]q3Kd{B Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
\|pAn 图像,但是它支持框架、表格、以及多数其它 HTML
T7T!v 标签。Lynx 优于图形化浏览器的地方是它的速度――
3D.S[^s* Links 能够快速启动、退出、及显示网页。
[!q&r(-K 标识拥有者
2at?9{b --------------------------------------------------------------------------------
[.I,B tY+ WV @Tm$r iR_Syk`G*A 找出什么包拥有文件file:
Y-Ku2m B5cyX*! ? 示例:
'; dW'Uwc 0B4(t6o [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
=c.q]/M lynx-2.8.5-18
< t (Pw --------------------------------------------------------------------------------
?|8Tgs@+ q5!l(QL. n>0dz# 列表包中的文件:
@r]s9~Lx9 48ma&f; 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
0oJ^a^| 7qUtsDK 示例:
nMa^Eq# r:5Ve&~ 此为部分显示结果
Vtg/,1KQ [root@localhost ~]# rpm -ql lynx
1b7xw#gLx /etc/lynx-site.cfg
.fsk DW /etc/lynx.cfg
+7Lco"\w< /etc/lynx.cfg.cs
/C:'qhY, /etc/lynx.cfg.ja
} E#+7a /etc/lynx.cfg.sk
LA?\~rh! /usr/bin/lynx
GA_`C"mx /usr/share/doc/lynx-2.8.5
Riw7<j /usr/share/doc/lynx-2.8.5/INSTALLATION
iXm||?Rnx /usr/share/doc/lynx-2.8.5/README
^0|NmMJ] /usr/share/doc/lynx-2.8.5/docs
7
h1"8#X /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
NslA/"* /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
m3(T0.j0P /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
-n
*>zGc /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
9$,gTU_a /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
P{Z71a5 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
a!:8`X~[/$ /usr/share/doc/lynx-2.8.5/docs/CMU.announce
WDGGT.h G /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
zn
?;>Bl /usr/share/doc/lynx-2.8.5/docs/FM.announce
^!<7#kX /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
3N"&P@/0x /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
N
&[,nUd /usr/share/doc/lynx-2.8.5/docs/README.TRST
]k:m2$le /usr/share/doc/lynx-2.8.5/docs/README.chartrans
M',D 6XAr8mw9 --------------------------------------------------------------------------------
AMd)d^; bVeTseAG =[K)<5,@ 列出包所提供的实际能力:
]pV1T = b!J)] --provides选项的作用是列出这个包所提供的实际能力。
{?mQqoZ?. y<1$^Y1/) 示例:
IOkC [([ GeaDaYh#T [root@localhost ~]# rpm -q --provides lynx
eM+;x\jo? config(lynx) = 2.8.5-18
@6co\.bv webclient
iL_F*iK5 lynx = 2.8.5-18
@sHw+to|p) --------------------------------------------------------------------------------
z>33O5U +w.Kv
; S%X\,N 列出这个包所倚赖的任何包:
VMIX$# 9I\3T6&tr -R,--requires选项的作用是列出这个包所依赖的任何包。
ARdGh_yJ& FMdLkyK; 示例:
bjBeiKH )c*k_/4 [root@localhost ~]# rpm -qR lynx
5g1M_8e'+ /bin/sh
q83~j`ZJ$ config(lynx) = 2.8.5-18
GD[ou.C}k indexhtml
UY-IHz;&O- libc.so.6
B`B%:# libc.so.6(GLIBC_2.0)
Dsj|~J3 libc.so.6(GLIBC_2.1)
~y2)&x
libc.so.6(GLIBC_2.2)
ES\Q5)t/fo libc.so.6(GLIBC_2.3)
~'2r&?=\ libcrypto.so.4
bkwa{V libncursesw.so.5
.W : libssl.so.4
a*':W%7 libz.so.1
K@P`_yxN rpmlib(CompressedFileNames) <= 3.0.4-1
'n[+r}3 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
+qUkMx --------------------------------------------------------------------------------
I\upnEKKzZ vA;F]epr! [DxefYyI 列出包中的配置文件
Z SRRlkU %L
j0 -c,--configfiles选项的作用是列出包中的配置文件
%x6Ov\s2 6
r.H8 示例:
i6md fp|k Yxd{&47 [root@localhost ~]# rpm -qc lynx
'dc+M9u)_q /etc/lynx-site.cfg
lP* /etc/lynx.cfg
f5aF6FBH /etc/lynx.cfg.cs
6%kJDY. /etc/lynx.cfg.ja
bqrJP3 /etc/lynx.cfg.sk
qggk:cN1 --------------------------------------------------------------------------------
Dk`4bYK }@14E-N= ;}WtJ&y=M 显示有关于包的改变信息的日志:
|[Ie.&) ,MM>cOQ --changllog选项的作用是显示有关于包的改变信息的日志。
)@,90Vhh X&(ERY,h 示例:
#$=8g
RZj H=&/ Q 此为部分显示结果
WBr:|F+~s [root@localhost ~]# rpm -q --changelog lynx
hDljY!P>p * 五 7月 09 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-18
ojx'g8yO - Removed perl dependencies (bug #127423).
aZj J]~bO * 三 6月 16 2004 Elliot Lee <
sopwith@redhat.com>
}r}RRd - rebuilt
*`ZB+ \* * 三 5月 26 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-16
#*$_S@ - No longer need lynx-284-ipv6-salen.patch.
{^cF(7p - No longer need lynx2-8-2-telnet.patch.
3e%l8@R@ * 六 2月 14 2004 Elliot Lee <
sopwith@redhat.com> 2.8.5-15
eA?uny
f2r - rebuilt
-R&E