Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
f&K}IM8& # !.9l4@z# 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
5r'=O2AZX Sq?,C&LsA 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
EJO.'vQ 4;?1Kb# 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
Y3D3.T6Q --------------------------------------------------------------------------------
D 5=C^`$2 |p;4dL fwRGT|":B 以下简要介绍RPM包的安装,删除和查询
oz Vpfs 7TP$ RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
A3xbT\xdg [`q.A`Fd rpm命令的格式为:
bSQ_" X )I/%{ rpm [options] [packages]
3QH(4N 3 Q@9S 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
n1_ %Td @v"T~6M 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
H1Q''$}Z. --------------------------------------------------------------------------------
Mk<m6E$L IT,"8s QDP-E[ RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
SzRL}}I
1U 以下为rpm --showrc命令显示的节选:
S<*' ;{5~ '=$TyiU 示例:
MdLj,1_T R j-jAH 此为部分显示结果
cnbo+U [root@localhost ~]# rpm --showrc
HTw#U2A;+ ARCHITECTURE AND OS:
`Rrr>vj build arch : i386
0"hiCGm' compatible build archs: athlon i686 i586 i486 i386 noarch
ma3Qi/ build os : Linux
O!o <P5X^ compatible build os's : linux
:#qUMiu$ install arch : athlon
r|M'TA~: install os : Linux
ohtT
O]\ compatible archs : athlon i686 i586 i486 i386 noarch
D^$]>-^ compatible os's : linux
#&k8TY RPMRC VALUES:
gEE9/\>%- 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
u]R$]&< optflags : %{__global_cflags} -m32 -march=athlon
*}7U`Aa Features supported by rpmlib:
nz>K{( rpmlib(VersionedDependencies) = 3.0.3-1
O(odNQy~ PreReq:, Provides:, and Obsoletes: dependencies support versions.
r;9z5' rpmlib(CompressedFileNames) = 3.0.4-1
f;R>Pr;rD file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
[
ynuj3G
V rpmlib(PayloadIsBzip2) = 3.0.5-1
av)?>J~; package payload can be compressed using bzip2.
Dp^95V@ --------------------------------------------------------------------------------
#iiwD| $khrWiX O!/ekU|,r rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
,b$z!dvhl Ac
J>$L) 示例:
L+7*NaPY* 7$K}qsr< [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
R \ia6 Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
#o~[1K+Yq Preparing... ########################################### [100%]
YjX*)Q_sl? 1:lynx ########################################### [100%]
*g*VCO --------------------------------------------------------------------------------
FbmsN)mv!% u9BjgK(M k2pT1QZnt 以下列出一些通用选项(可以用于所有模式):
:fhB*SYK O6/xPeak --dbpath path
c+H)ed> 用path作为RPM数据库的路径。
_g65pxt =Z &u("|O)w$ --ftpport prot
YKNb59k 用port作为FTP端口。
H)\4=^ /Ad6+cY --ftpproxy host
v3~FR,Kl 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
\PzN XQ$ DDWp4`CS| --help
[Q|M/|mnR1 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
yYg 5 1"8Py --justdb
=Aj"j-r&{ 只更新数据库;不改变任何文件。
2!BsEvB( )}quw"H --pipe command
.ByU 用管道把rpm输出到commond。
w?*jdwh,' i]dz}= j' --quiet
jK e.gA 仅显示错误信息。
_%;M9Sg3 3h LqAj --rcfile filename
72u db^ 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
:1*zr 9Eu #lV --root dir
/-><k,mL? 在dir目录内执行所有操作。
q P'[&h5Y Rh[Ib m56 --version
MJA~jjy4 输出rpm版本号。
z$66\/V'] =D}4X1l -vv
.8:+MW/ 输出调试信息。
M.S
s:ttj wW^Zb --------------------------------------------------------------------------------
-IbbPuRq
9|<Be6 y)tYSTJK 安装升级和刷新
e+l\\9v 9N^+IZ@l 安装或升级一个RPM包,install命令的语法为:
:SK<2<8h BD4`eiu" rpm -i [install-options] package_file
#%4=)M>^ rpm --install [install-options] package_file
&lq^dFP&Su +
LS3T^ 示例:
p0Z:Wkz] #>XeR>T [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
|UYED%dC package lynx-2.8.5-18 is already installed
%2}C'MqS [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
EDtCNqBS~2 --------------------------------------------------------------------------------
#3.\j"b z(rK^RT 1TIlINlJ 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
HgaZbb>' ^j [Ku rpm -U [install-options] package_file
}I]W'<jY rpm --upgrade [install-options] package_file
/h7.oD8CU P2t_T'R} 示例:
ld95[cTP jFG5)t<D 先安装旧版
EavX8r [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
*<xrp*O R5gado 再安装新版
dl_{iMhF&E [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
0U%Xm[: |/*pT1(& 显示出新版本信息
/LF3O~Go [root@localhost ~]# rpm -q lynx
C 0>=x{,v lynx-2.8.5-18
,z G(u 1 %<AS?Ry 说明:
_[F@1NJ -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
Qm; BUG] 7OE[RX8!f 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
wA631kr --------------------------------------------------------------------------------
VXwPdMy*L ogJ<e_m nPOO3!<{ 刷新的语法是:
3}j1RYtz xHe^"LL rpm -F [install-options] package_file
VGB-h' VKNp,Lf rpm --freshen [install-options] package_file
`R0Y+#$8h vtZ?X';wh 示例:
>D~w}z/fk 1AT'S;` 从未安装过lynx包,使用-F选项,将无法升级。
pqH4w(; FQ!Oxlq,Q [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
c|Y!c!9F [root@localhost ~]# rpm -q lynx
R^6Zafp package lynx is not installed
Mi?}S6bp --------------------------------------------------------------------------------
m:3J!1 Z7KXWu+6`m CL1
oAk 安装和更新选项为:
[%?y( q 2uL9.q --allfiles
c.0]1 安装或更新所有文件。
F"[3c6yF !UcOl0"6 --badreloc
Z%e|*GS{ 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
5
q65nF >C# kqxfg --excludedocs
cQn)^jx= 不安装任何文档文件。
[@|be.g {xToz]YA --excludepath path
Ye@t_,)x 不安装文件名以path开始的任何文件。
n,sY\=vB `m, Ki69. --force
OX^3Q:Z= 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
s/h7G}Mu ul=7>";=| -h,--hash
M~p=#V1D 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
(Q_2ODKo K$ AB} Fvc --ignorearch
1`QsW&9=b 即使二进制包用于不同的体系结果也进行安装。
LABNj{=D! :Y^I]`lR" --ignoreos
]u0Jd#@ 即使操作系统不匹配也安装二进制包。
a_{6Qdl 1eD.:_t4 --ignoresize
:<%vE !$ 安装前不检查磁盘的可用空间。
c3#q0Ma Vo >Xp --includedocs
="3,}qR 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
K}K)`bifw UJn/s;$.e --nodeps
J=9 #mOcg" 不检查这个包是否依赖于其他包的存在。
n`.#59-Hx s i?HkJv5 --noorder
W>/UBN3 安装之前,不为了满足依赖关系而对包进行重新排序。
o\goE^,aeR 8(Fu --noscripts
f'_M0x 不执行任何预安装或后安装脚本。
\igaQ\~ oCuV9dA. --notriggers
Hm4bN\% 不执行任何由包安装触发的脚本。
2yxi= XWZ e "n|jRh --oldpackage
v ):V 允许升级以用旧包替换新包。
RHI&j~ 3\+N`! --percent
N,|r1u 9X# 当文件被解压时输出完成百分比的信息。
A?,A(-0C $:;%bjSI --prefix path
.Q[yD<)Ubs 把可重定位包的安装前缀设置为path。
F.
T@)7 'Sa!5h --replacefiles
mgcN( n1 即使包替换了来自其他安装包的文件,也安装这些包。
2*Q3.2 Z Y&GuDLUF --replacepkgs
z6cYC, 即使某些包已经被安装,也安装他们。
IN_gF_@% C{&)(#*L --test
K'Spbn!nC 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
75AslL?t 61|B]ei/ --------------------------------------------------------------------------------
mf2Mx=oy p:tN642 km4g}~N</ 查询
9I kUZW 9|3o< query命令的语法为:
Z
Xb}R^O- Y|RdzCM rpm -q[information-options] [package-options]
|X 3">U +- rpm --query[information-options] [package-options]
On%,l )E-E0Hl>7 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
8K^f:)Qw --------------------------------------------------------------------------------
aDveU)]=1 n_P(k-^U* }p{;^B 以下简单示演示一下包查询:
*8UYS A~v yoU2AMH2D^ 简单查询:
OoM_q/oI c[:Wf<%| 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
t:T?7-XIE Nb1J ~v 示例:
oyW00]ka &^+3errO [root@localhost ~]# rpm -q lynx
u`6/I#q` lynx-2.8.5-18
i6 L --------------------------------------------------------------------------------
>BJ}U_ck |D<+X^0' *l-`<. 信息查询:
m^A]+G#/ )Mi'(C; rpm -qi packagename命令可以得到安装包的汇总信息。
`
FxtLG,F jsdBd2Gdc 示例:
2d~LNy [root@localhost ~]# rpm -qi lynx
F.0d4:A+ Name : lynx Relocations: (not relocatable)
VVLIeJ(*XT Version : 2.8.5 Vendor: Red Hat, Inc.
H"D5e Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
Azn:_4O Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
?K<ZkYw? Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
"mtp0 Size : 4837340 License: GPL
fYn{QS? Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
QS;F+cmTh Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> Fr;lG URL :
http://lynx.isc.org/ ugxw!cj Summary : 一个基于文本的网页浏览器。
m}pL`:e! Description :
f~*K {7 Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
l5HWZs^ 图像,但是它支持框架、表格、以及多数其它 HTML
HlRAD|]\ 标签。Lynx 优于图形化浏览器的地方是它的速度――
oLP]N$'# Links 能够快速启动、退出、及显示网页。
>h%\HMKk 标识拥有者
y\Dn^ --------------------------------------------------------------------------------
6(.H3bu 1J'pB;.]s =qX*] 找出什么包拥有文件file:
$',3Pv ^ $wJi9D6 示例:
,R}Z=w# $}4K`Iu [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
2&x7W* lynx-2.8.5-18
oZ-FF' --------------------------------------------------------------------------------
GA ik;R 8f-:d] 4 l1 i>_R 列表包中的文件:
@G(xaU'u JCcQd01z 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
{,Fcd(MU r{Z[xWIX 示例:
Q"'V9m7
i zDd5cxFdZ 此为部分显示结果
X'@f"= v9k [root@localhost ~]# rpm -ql lynx
hHEPNR[.
/etc/lynx-site.cfg
9`INC~h /etc/lynx.cfg
?`aTu:1#Z /etc/lynx.cfg.cs
"*bk{)dz} /etc/lynx.cfg.ja
bP03G=`6w /etc/lynx.cfg.sk
>b43%^yii /usr/bin/lynx
n$
dw<y /usr/share/doc/lynx-2.8.5
7V'Le2T' /usr/share/doc/lynx-2.8.5/INSTALLATION
6V
P)$h8 /usr/share/doc/lynx-2.8.5/README
ZOn_dYjC /usr/share/doc/lynx-2.8.5/docs
J|q^+K /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
BkV(81"C /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
jN {Zw* /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
0d`5Gy_ D% /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
[ze/@29 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
w%rg\E /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
j8c6[ih /usr/share/doc/lynx-2.8.5/docs/CMU.announce
3I\m,Ob /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
[?I/Uo8
/usr/share/doc/lynx-2.8.5/docs/FM.announce
Vrg3{@$ /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
C
Oa.xyp /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
ENyAF%6 /usr/share/doc/lynx-2.8.5/docs/README.TRST
8 ?" Ze( /usr/share/doc/lynx-2.8.5/docs/README.chartrans
_k|g@" 0 {,h.: --------------------------------------------------------------------------------
V&R$8tpz GmAj<