Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
<GHYt#GIZ+ ~_IHaw$hg 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
]u l$* x_Jwd^`t! 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
=0;}K@(J 4'4\,o 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
iy.2A!f^. --------------------------------------------------------------------------------
,lA.C%4au~ P}ok*{"J<> !zj0/Q G\ 以下简要介绍RPM包的安装,删除和查询
/xGmg`g<# ~c)~015` RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
^<e@uNGg mC?i}+4>4R rpm命令的格式为:
K{b(J
Nd &[NG]V!Oc rpm [options] [packages]
8t@p@Td| bl_H4 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
f7h*Vu`> /!^&;$A' 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
Hqnxq --------------------------------------------------------------------------------
c|F[.;cR XNQAi (!GS ,QzL)W7 RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
7\*FEjRM] wC `+ 以下为rpm --showrc命令显示的节选:
/ kt2c[9 |#1(Z-} 示例:
/ XnhmqWm% qd8n2f 此为部分显示结果
?bM_q_5 [root@localhost ~]# rpm --showrc
+xc'1id@[ ARCHITECTURE AND OS:
7eWk7&Xul build arch : i386
qd"_Wu6aF= compatible build archs: athlon i686 i586 i486 i386 noarch
!T](Udf build os : Linux
J!'@ Bd compatible build os's : linux
it] E-^2> install arch : athlon
.h0b~nI>> install os : Linux
&>e-(4Xu compatible archs : athlon i686 i586 i486 i386 noarch
N2.AKH compatible os's : linux
:Mm3
gW) RPMRC VALUES:
Y"-^%@|p 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
k}
]T;|h] optflags : %{__global_cflags} -m32 -march=athlon
\J+* Features supported by rpmlib:
8NaqZ+5x rpmlib(VersionedDependencies) = 3.0.3-1
,`ZYvF^% PreReq:, Provides:, and Obsoletes: dependencies support versions.
}y9mNT rpmlib(CompressedFileNames) = 3.0.4-1
^Y-]*8;] file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
T\w?$ s rpmlib(PayloadIsBzip2) = 3.0.5-1
[]a[v%PkG package payload can be compressed using bzip2.
Ag F,aZU --------------------------------------------------------------------------------
JQ4{` =,b r$]HIvJD dnV[ P rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
1hcjSO 6mKjau{r_ 示例:
,+~rd4a \P1S|ufv [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
!Hys3AP Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
?nP*\8 Preparing... ########################################### [100%]
('-JY 1:lynx ########################################### [100%]
;FZ@:%qDm --------------------------------------------------------------------------------
Sm~l:v0% o]
mD"3_ 2h[85\4 以下列出一些通用选项(可以用于所有模式):
0P\$2lk
Z*-g[8FO --dbpath path
S[7WW$lF 用path作为RPM数据库的路径。
=XXZ?P sZW^!z --ftpport prot
hEh}PX: 用port作为FTP端口。
w`q%#qRk ew"v{=X --ftpproxy host
e9Nk3Sj] 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
l x,"EOP fu90]upz~ --help
^h{)Gf,+\ 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
q$aaA`E% 4wrk2x[ --justdb
XoA+MuDzpo 只更新数据库;不改变任何文件。
,=l7:n tU_y6 --pipe command
irN6g#B?
用管道把rpm输出到commond。
<!pY$ !qX_I db\ --quiet
B/`
!K 仅显示错误信息。
i86>] E*jP8 7g --rcfile filename
?s:d[To6 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
44-R!
<vXGi --root dir
8P=o4lO+ 在dir目录内执行所有操作。
C`5 hGiz)v~ --version
b, :QT~g= 输出rpm版本号。
`F/Tv 5@L f%V4pzOc" -vv
}!6\|;Qsz, 输出调试信息。
nxr!`^Mne h[PYP5{L --------------------------------------------------------------------------------
}fKSqB]T-
=|9H F$[ U|%* 安装升级和刷新
o`Ta("9^ rD*sl} 安装或升级一个RPM包,install命令的语法为:
.w]GWL XP@1~$ rpm -i [install-options] package_file
8stwg' rpm --install [install-options] package_file
j\m_o% 4 _)\c&.p]f 示例:
s>^dxF!+ /Ml.}7& [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
v'e[GB0 package lynx-2.8.5-18 is already installed
;X?mmv' [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
X,LD --------------------------------------------------------------------------------
` \+@Fwfx ~V$|i" p ZZc:\fJ 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
_r2J7& ai{Sa U rpm -U [install-options] package_file
x:QgjK rpm --upgrade [install-options] package_file
;$z$@@WC O9r>E3-q 示例:
95z]9UL ca>Z7qT! 先安装旧版
0X^Ke(/89 [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
;g~TWy^o #y%!\1M/:A 再安装新版
<A#
l
35 [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
KG=h& /RMPS.
d
{ 显示出新版本信息
`(3/$% [root@localhost ~]# rpm -q lynx
SI=yI- lynx-2.8.5-18
P><o,s"v 6qp%$>$Vt; 说明:
[/X4"D-uOK -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
ldp%{"ZZ L@gWzC~?Q 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
LU9A# --------------------------------------------------------------------------------
"70WUx(\t G8;w{-{m S*n@81Z 刷新的语法是:
0A( +ZMd ="g*\s?r rpm -F [install-options] package_file
K#U<ib-v mL4] l(U rpm --freshen [install-options] package_file
KhMSL _N@ro 示例:
2"B _At n+PzA[ 从未安装过lynx包,使用-F选项,将无法升级。
)LyojwY_g ' Tc]KXD6 [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
~t~-A,1 [root@localhost ~]# rpm -q lynx
oIefw:FE,a package lynx is not installed
;vIrGZV< --------------------------------------------------------------------------------
Y_QH&GZ [3!~PR] d.P\fPSD 安装和更新选项为:
u07pq4Ly WoBo9aR --allfiles
=X.9,$Y 安装或更新所有文件。
R[;zX(y V#`fs|e;y --badreloc
sxt-Vs7+6 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
*;Ed*ibf DrO2 y --excludedocs
?! `=X>5 不安装任何文档文件。
s%W<dDINl sx`O8t --excludepath path
%Jrt4sg[j- 不安装文件名以path开始的任何文件。
Mv6-|O dS<C@( --force
$t6e2=7 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
^/U|2'$'>E 8f3vjK' -h,--hash
YWxc-fPZ 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
UNkCL4N l'TWkQ- --ignorearch
-]t,E,(! 即使二进制包用于不同的体系结果也进行安装。
]~E0gsq ivW(*c --ignoreos
tz&y*e& 即使操作系统不匹配也安装二进制包。
n2fbp\ I Qu]z)";7 --ignoresize
7K5P8N
, 安装前不检查磁盘的可用空间。
P`e!Z: 6CMub0 --includedocs
"1HRLci 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
k+DR]icv 'FS?a --nodeps
gR}35:$Z- 不检查这个包是否依赖于其他包的存在。
1)[]x9]^q' G3{=@Z1 --noorder
1rDqa(7 安装之前,不为了满足依赖关系而对包进行重新排序。
=%>oR NwZ@#D#[ Y --noscripts
(bh95X 不执行任何预安装或后安装脚本。
#Z<a
Y>&Ew*Y --notriggers
Z" uY}P3 不执行任何由包安装触发的脚本。
(1NA $VxA0
=ad --oldpackage
.({smN,B 允许升级以用旧包替换新包。
q|LDo~H Co3:*nbRv --percent
17OH] 当文件被解压时输出完成百分比的信息。
4~N[%>zJ C|o`k9I# --prefix path
tT79p.z B 把可重定位包的安装前缀设置为path。
m]cHF.:5 "|HDGA5 --replacefiles
HuVJ\%. 即使包替换了来自其他安装包的文件,也安装这些包。
e@ \p0( QurW/a --replacepkgs
ZPD[5)~ 即使某些包已经被安装,也安装他们。
Cj?L@%" RJ$7XCY%`* --test
FSRj4e1y1 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
4NdN<#Lr !0dNQ[$82 --------------------------------------------------------------------------------
A+UU~?3y ?K3(D;5
&i =lu/9
i6 查询
Ck /F9( 2~t[RY query命令的语法为:
]$,UPR/3 UAyC.$! rpm -q[information-options] [package-options]
vC5n[0 rpm --query[information-options] [package-options]
25&J7\P* |eWjYGwJa 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
mSo_} je( --------------------------------------------------------------------------------
Uk,gJR V3ndV-uQE 3ux0Jr2yT 以下简单示演示一下包查询:
+L5\; e0$=!QlPr 简单查询:
%H+\>raLz
>X51$wBL 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
%b^OeWip MW+b;0U`# 示例:
A3ZY~s#Iv U5r7j [root@localhost ~]# rpm -q lynx
LbII?N8`N lynx-2.8.5-18
E(i[o? --------------------------------------------------------------------------------
EFc-foN g9Yz*Nee< ts8+V<g 信息查询:
G!XIc>F* 2m~V{mUT! rpm -qi packagename命令可以得到安装包的汇总信息。
0JD~M\-!^a FPJd| 示例:
_H^^y$+1 [root@localhost ~]# rpm -qi lynx
H&yD*@ Name : lynx Relocations: (not relocatable)
XB[<;*Iz Version : 2.8.5 Vendor: Red Hat, Inc.
UQ.7>Ug+8s Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
-$,%f? Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
VG>vn`x>a Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
Z,.G%"i3C Size : 4837340 License: GPL
?r2 #.W Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
4);)@&0Md~ Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> C8L'si URL :
http://lynx.isc.org/ +L=*:e\j Summary : 一个基于文本的网页浏览器。
n\ Hs@. Description :
>~\89E02 Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
$.:mai 图像,但是它支持框架、表格、以及多数其它 HTML
W k}AmC 标签。Lynx 优于图形化浏览器的地方是它的速度――
X.TI>90{ Links 能够快速启动、退出、及显示网页。
nJbbzQ,e 标识拥有者
(S ^8UV --------------------------------------------------------------------------------
aSP4a+\* A4QcQ" &,.Y9;
b 找出什么包拥有文件file:
Ei2%DMN7) U/NBFc:[y: 示例:
$@i"un; wP/A^Rs [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
Eaqca{%/^ lynx-2.8.5-18
&'' WRgZ} --------------------------------------------------------------------------------
D\ H/ T,_(?YJW <A.W 8b7D 列表包中的文件:
> MG>=A s[Ur~Wvn 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
j:bgR8%e "EV!>^Z 示例:
dC<LDxlv gf+d!c(/ 此为部分显示结果
n& $^04+i [root@localhost ~]# rpm -ql lynx
F6hmku>\1 /etc/lynx-site.cfg
A!63p$VT; /etc/lynx.cfg
)J(q49 /etc/lynx.cfg.cs
&5t :H 8b /etc/lynx.cfg.ja
_u}4j 9T /etc/lynx.cfg.sk
Yif*"oO /usr/bin/lynx
:h,`8 Di /usr/share/doc/lynx-2.8.5
^JR;epVJ
/usr/share/doc/lynx-2.8.5/INSTALLATION
J`*iZvW#Bx /usr/share/doc/lynx-2.8.5/README
C_LvZ= /usr/share/doc/lynx-2.8.5/docs
aJqeD'\> /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
!rhk
$L /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
eb|i3. /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
$c&0F, /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
26n^Dy>} /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
q/1Or;iK /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
(.3'=n|kE /usr/share/doc/lynx-2.8.5/docs/CMU.announce
CCDDK L]N: /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
4ujvD ^ /usr/share/doc/lynx-2.8.5/docs/FM.announce
4Tct /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
V|MY!uV /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
OJ4SbI /usr/share/doc/lynx-2.8.5/docs/README.TRST
Wn|&cG9 /usr/share/doc/lynx-2.8.5/docs/README.chartrans
Ei({`^ Pgp {$ID --------------------------------------------------------------------------------
V84*0&q