Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
jNy.Y8E& \^%}M!tan 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
-PQv ?5 }iuw5dik+ 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
&!
?eL GM<-&s!Uj 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
OBAi2Vw --------------------------------------------------------------------------------
)>- =R5ZV O0y_Lm\ m9Hit8f@Q 以下简要介绍RPM包的安装,删除和查询
&`XVq"7 *=c1do%F RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
;d9QAN&0} Wiu"k%Qsh rpm命令的格式为:
{Dmjm{
K6)j0]K1 rpm [options] [packages]
0_t`%l= IobD3:D8W 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
N*&1GT#9 e@OX_t_ 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
iW /}# --------------------------------------------------------------------------------
d;}nh2* NTI+ H+Sz=tg5 RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
7x4PaX( )TH@#1 以下为rpm --showrc命令显示的节选:
/d<P-!fK EJNU761 示例:
fx>4 P(z++A& 此为部分显示结果
n#OB%@]<V [root@localhost ~]# rpm --showrc
?m?::R H ARCHITECTURE AND OS:
1^(ad;BCy build arch : i386
p2$P:!Y) compatible build archs: athlon i686 i586 i486 i386 noarch
~1vDV>dpE build os : Linux
X*@dj_, compatible build os's : linux
9c :cw install arch : athlon
~AT'[(6 install os : Linux
'u |c compatible archs : athlon i686 i586 i486 i386 noarch
@wNG{Stj compatible os's : linux
cP_.&!T RPMRC VALUES:
&AbNWtCV+G 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
\ Et3|Iv optflags : %{__global_cflags} -m32 -march=athlon
zsyIV!( Features supported by rpmlib:
xRLT=.ir rpmlib(VersionedDependencies) = 3.0.3-1
D!-g&HBTC PreReq:, Provides:, and Obsoletes: dependencies support versions.
Ks`J([(W& rpmlib(CompressedFileNames) = 3.0.4-1
!58@pLJw file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
y''z5[' rpmlib(PayloadIsBzip2) = 3.0.5-1
0*D$R`$ package payload can be compressed using bzip2.
iN8zo:&Z --------------------------------------------------------------------------------
4-H+vNG{% DKJmTH]rUg %%gc2s rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
~^fZx5 G[I"8iS, 示例:
UJ7*j%XQz_ ywm8N%]v [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
hVAn>_( Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
a>I+]`g Preparing... ########################################### [100%]
( !fKNia@S 1:lynx ########################################### [100%]
EF}\brD1 --------------------------------------------------------------------------------
J({Xg? ^sEYOX\ YdC6k?tzS 以下列出一些通用选项(可以用于所有模式):
q" sed] hwBfdZ --dbpath path
gANuBWh8T 用path作为RPM数据库的路径。
O6a<`]F Yz"#^j}Kg --ftpport prot
jaMjZp;{( 用port作为FTP端口。
Pz |>"' oiT[de\S --ftpproxy host
4n g]\ituS 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
)SRefW.v ujq=F --help
2E/"hQw 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
+LZLy9iKt g:D>.lKd --justdb
cr?Q[8%t1 只更新数据库;不改变任何文件。
a# y;dK #9}D4i.`} --pipe command
?o4C; 用管道把rpm输出到commond。
}`QUHIF #Z`q+@@]A --quiet
i6tf2oqO7 仅显示错误信息。
>G*eNn mPN@{.(j --rcfile filename
>WQMqQ^t@ 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
@qqg e' <+Dn8 --root dir
3kIN~/<R+7 在dir目录内执行所有操作。
"9P>a=Y XQs1eP'{ --version
4Lh!8g=/ 输出rpm版本号。
%C'?@,7C 8#
>op6^ -vv
o"Euwh!!
输出调试信息。
^aMg/.j }QcCS2)Ud --------------------------------------------------------------------------------
KRLQ #,9 +0%w ;'9z Z!#!Gu*V 安装升级和刷新
1N^[.= ^f
&XQQY 安装或升级一个RPM包,install命令的语法为:
ICoHI .hP D$o rpm -i [install-options] package_file
2d(e:rh] rpm --install [install-options] package_file
[vK^Um P[#e/qnXu| 示例:
&)Tdc %~JJ. & [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
el<s8:lA package lynx-2.8.5-18 is already installed
gJXq^~-hd [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
Sh~dwxp*" --------------------------------------------------------------------------------
}6}l7x E7 Ul;d
3cyHfpx-W 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
d>&,9c% GR.^glG?6 rpm -U [install-options] package_file
u+e{Mim rpm --upgrade [install-options] package_file
Z{Qu<vy_ Y3cMC) 示例:
hh)`645=x B6nX$T4zP 先安装旧版
'!cCMTj [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
TnOggpQ6X qIE9$7*X 再安装新版
[nG<[<0G; [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
[M}{G5U. '8.r-`l( 显示出新版本信息
B+VubUPMS [root@localhost ~]# rpm -q lynx
#7$
H lynx-2.8.5-18
eIEeb,#i q&-`,8# 说明:
R)(T^V`{ -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
omu|yCK ufZDF=$7 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
=/+-<px --------------------------------------------------------------------------------
j'<<4.( gHEu/8E cJ
n= 刷新的语法是:
VUGmi]qd ]^'Kd*x rpm -F [install-options] package_file
l0w]`EE m@F`!qY~Y\ rpm --freshen [install-options] package_file
Q&ptc>{bH6 x8\?}UnB 示例:
JCzeXNY =sU<S,a* 从未安装过lynx包,使用-F选项,将无法升级。
D~iz+{Q4 -1_)LO&H [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
$q{!5-e [root@localhost ~]# rpm -q lynx
_QE qk@ql package lynx is not installed
x7w4[QYw --------------------------------------------------------------------------------
xY8$I6 Jbg/0|1 J26V nK 安装和更新选项为:
{n.PF8A5X :$|HNeDO --allfiles
9Cp-qA%t 安装或更新所有文件。
)5JFfp)# |?xN\O^#} --badreloc
t%FwXaO# 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
G]tn i SrJGTuXg --excludedocs
beGa#JH, 不安装任何文档文件。
Rz/gtEP P [ck84F/ --excludepath path
P{jbl!UD7 不安装文件名以path开始的任何文件。
{.|CdqwY I@~QV@U --force
v`x.)S1 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
Tc:)-
z[o
@4#c&h3 -h,--hash
({)+3]x 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
fc3{sZE2M [;yOBF --ignorearch
W:nef<WH 即使二进制包用于不同的体系结果也进行安装。
3m)0z{n 6ex/TySM --ignoreos
D|p9qe5% 即使操作系统不匹配也安装二进制包。
9};8?mucr _,0 --ignoresize
$G+@_' 安装前不检查磁盘的可用空间。
EjR9JUu (D&3G;0tK --includedocs
0<@KG8@hI; 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
gzT*- <w9JRpFY --nodeps
XJ\DVZ 不检查这个包是否依赖于其他包的存在。
?4&e;83_#y vWv" --noorder
rfJz8uF% 安装之前,不为了满足依赖关系而对包进行重新排序。
$6 9&O ,V m
< rK --noscripts
hH3RP{'= 不执行任何预安装或后安装脚本。
{9pZ)tB L}b.ulkMD --notriggers
!hy-L_wL] 不执行任何由包安装触发的脚本。
zxl@(hd UnV.~ u~ --oldpackage
fOGFq1D 允许升级以用旧包替换新包。
itP,\k7>d *#|&JIEsi --percent
783,s_ 当文件被解压时输出完成百分比的信息。
>T-u~i$s
*n
]GsOOn --prefix path
C2I_%nU Z1 把可重定位包的安装前缀设置为path。
p%Vt#?q &`r-.&Y --replacefiles
LA5(sp@O 即使包替换了来自其他安装包的文件,也安装这些包。
0i>5<ej,f k%#EEMh --replacepkgs
hWLA<wdb 即使某些包已经被安装,也安装他们。
lgy<?LI\ !i}w~U< --test
8/cX]J 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
5Ln,{vsv M
FMs[+2_o --------------------------------------------------------------------------------
BwpqNQN MKk\
u9 B dfwa 查询
xm~`7~nFR An0|[ uWH query命令的语法为:
\?-<4Bc@ !>o7a}? rpm -q[information-options] [package-options]
T3<4B!UB& rpm --query[information-options] [package-options]
'<)n8{3Q5w Q&tG4f< 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
L`TLgH&?R --------------------------------------------------------------------------------
U< fGGCw rZ$O?K Of#u 以下简单示演示一下包查询:
+TL%-On pah'>dAL 简单查询:
b_taC^-l |>^JRx 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
SKN`2[ahD u
c)eil 示例:
G~a ZJ, {}przrU^c [root@localhost ~]# rpm -q lynx
&Z@o Q lynx-2.8.5-18
RbnVL$c --------------------------------------------------------------------------------
N>`Aw^ _@& +Kc &r/Mi% 信息查询:
$%d*@'c V f&zL
Sgr rpm -qi packagename命令可以得到安装包的汇总信息。
FD
#8mg O0v}43J[ 示例:
F/{!tx [root@localhost ~]# rpm -qi lynx
b8t7u Name : lynx Relocations: (not relocatable)
qe#tj/aZ Version : 2.8.5 Vendor: Red Hat, Inc.
0[(8 Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
? OM!+O Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
!f[_+CD Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
TIDO@NwF Size : 4837340 License: GPL
PC8Q"O Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
<kqo^ Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> hn@08t G URL :
http://lynx.isc.org/ U7F!Z(
9 Summary : 一个基于文本的网页浏览器。
B9z?mt'|r) Description :
JH9J5%sp Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
LH% F8 图像,但是它支持框架、表格、以及多数其它 HTML
vvMT}-! 标签。Lynx 优于图形化浏览器的地方是它的速度――
CAhXQ7w'Z Links 能够快速启动、退出、及显示网页。
gr2U6gi 标识拥有者
&p@O_0nF --------------------------------------------------------------------------------
</zEg3F\ C,r;VyW6BI *i%d,w0+ 找出什么包拥有文件file:
U8?mc d7upz]K9g 示例:
Ui W>J g!|kp? [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
;6$jf:2m lynx-2.8.5-18
KZE,bi:~ --------------------------------------------------------------------------------
rb.N~ n_A3#d<9 vk^xT 列表包中的文件:
n 7[V&`e_ 1Pu~X
\sO 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
lL3U8}vn *g2x%aZWbG 示例:
Jnov<+ d$!RZHo10V 此为部分显示结果
{EQOP] [root@localhost ~]# rpm -ql lynx
g) jYFfGfH /etc/lynx-site.cfg
chX"O0?" /etc/lynx.cfg
)ez9"# MH' /etc/lynx.cfg.cs
99QU3c<. /etc/lynx.cfg.ja
3=j"=-= /etc/lynx.cfg.sk
PJH& /usr/bin/lynx
rV#ch( /usr/share/doc/lynx-2.8.5
/U9"wvg /usr/share/doc/lynx-2.8.5/INSTALLATION
:$c
| /usr/share/doc/lynx-2.8.5/README
;.980+i1 /usr/share/doc/lynx-2.8.5/docs
;e *!S}C, /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
%h!B^{0 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
sO@Tf\d /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
zrb}_ /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
B]tQ(s~ /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
O\r0bUPE /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
{P_.~0pc* /usr/share/doc/lynx-2.8.5/docs/CMU.announce
6i/(5 nQ /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
.ioEIs g /usr/share/doc/lynx-2.8.5/docs/FM.announce
xy;;zOh` /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
R\[e!g*I /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
XSLFPTDEc /usr/share/doc/lynx-2.8.5/docs/README.TRST
rey!{3U /usr/share/doc/lynx-2.8.5/docs/README.chartrans
=aW9L)8D %.|@]!C --------------------------------------------------------------------------------
Km$\:Xo 9%9#_?RW bk[!8-b/a 列出包所提供的实际能力:
NzvXN1_% k<?b(&`J --provides选项的作用是列出这个包所提供的实际能力。
dy[X3jQB (sZ"iGn% 示例:
6'f;-2 ckCE1e>s [root@localhost ~]# rpm -q --provides lynx
mC#>33{ config(lynx) = 2.8.5-18
0g8NHkM:2a webclient
y:uE3Apm lynx = 2.8.5-18
gB33? --------------------------------------------------------------------------------
;$g?T~v7 V'gh6`v 5{,<j\#L 列出这个包所倚赖的任何包:
r~['VhI!;E sW\!hW1*x -R,--requires选项的作用是列出这个包所依赖的任何包。
S_H+WfIHV' RViAwTvY 示例:
8}:nGK|kx FS.L\MjV]U [root@localhost ~]# rpm -qR lynx
5b7RYV /bin/sh
]`WJOx4 config(lynx) = 2.8.5-18
1'8YkhQ2a indexhtml
Nh+ H 9 libc.so.6
pA4xbr 2 libc.so.6(GLIBC_2.0)
%W S+(0*1 libc.so.6(GLIBC_2.1)
JBZ@'8eqi] libc.so.6(GLIBC_2.2)
[:*)XeRK libc.so.6(GLIBC_2.3)
_+MJ%'>S libcrypto.so.4
GM<9p_
B libncursesw.so.5
_Fg5A7or libssl.so.4
Y'X%Aw;` libz.so.1
?a]mDx>xh rpmlib(CompressedFileNames) <= 3.0.4-1
)4 ;`^]F rpmlib(PayloadFilesHavePrefix) <= 4.0-1
+=)+'q]S --------------------------------------------------------------------------------
jebx40TA3 qH_Dc=~la "m>81-0 列出包中的配置文件
Vxt+]5X BZ^}J!Q'* -c,--configfiles选项的作用是列出包中的配置文件
oXgcc*j )+Pus~w 示例:
BMf@M '|=;^Z7.K [root@localhost ~]# rpm -qc lynx
M',?u /etc/lynx-site.cfg
klhtKp_p /etc/lynx.cfg
/>>\IR /etc/lynx.cfg.cs
_)-o1`*- /etc/lynx.cfg.ja
,/unhfs1q /etc/lynx.cfg.sk
DtnEi4h, --------------------------------------------------------------------------------
],].zlN EoDA]6?Lj -UT}/:a 显示有关于包的改变信息的日志:
O#r%>;3* ;dhQN}7 --changllog选项的作用是显示有关于包的改变信息的日志。
&%Tj/ Qx ,R|BG 示例:
93hxSRw 0{SL&<&