Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
U2l7@uDr; ('BFy>@ 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
B/u0^! aUUr&yf_L 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
?$T!=e" R1 u1 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
oju)8H1o# --------------------------------------------------------------------------------
Yz4)Q1 x@/ N9* #/!fLU@ 以下简要介绍RPM包的安装,删除和查询
hqOy*!8'@ .4P5tIn\ RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
^|-*amh @y?<Kv}s rpm命令的格式为:
=g|e-XC (T+fO}0 rpm [options] [packages]
e}>8rnR{ )bN|*Bw3 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
rK 9 R+,eX jz" 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
G&8)5d[ --------------------------------------------------------------------------------
+iKs)s_~ ernZfd{H {!h|(xqN+ RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
W3K&C[f 49.
@Uzo 以下为rpm --showrc命令显示的节选:
5MUM{(C 3>LyEXOW 示例:
z/09~Hc Ws2SD6!4` 此为部分显示结果
4JF)w;X} [root@localhost ~]# rpm --showrc
)\fAy
ARCHITECTURE AND OS:
.u[hK build arch : i386
6b&<5,=d: compatible build archs: athlon i686 i586 i486 i386 noarch
/HCd52 build os : Linux
A0Z<1|6r* compatible build os's : linux
"]*16t%Z%x install arch : athlon
i=67 install os : Linux
Z|zyO- compatible archs : athlon i686 i586 i486 i386 noarch
t[gz#' compatible os's : linux
' *h y!f] RPMRC VALUES:
Mle@.IIT 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
d#~^)r optflags : %{__global_cflags} -m32 -march=athlon
4-lG{I_S: Features supported by rpmlib:
MLD-uI10{ rpmlib(VersionedDependencies) = 3.0.3-1
pbg[\UJyd PreReq:, Provides:, and Obsoletes: dependencies support versions.
K5X,J/n rpmlib(CompressedFileNames) = 3.0.4-1
MZ" yjQ A file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
Tc{r;:'G< rpmlib(PayloadIsBzip2) = 3.0.5-1
=apcMW(zn package payload can be compressed using bzip2.
Vy*&po[
--------------------------------------------------------------------------------
+%yVW f v.Fq.
} Ej^M~Vv rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
88c-K{}3 A4!IbJD,0 示例:
q:Lw!'Zh N^i<A2'6S; [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
}~gBnq_DDU Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
)Rhy^<xH Preparing... ########################################### [100%]
E+XpgR5 1:lynx ########################################### [100%]
_3_d;j#G U --------------------------------------------------------------------------------
Yr9>ATR FFE IsB"9 -9Iz$(>a 以下列出一些通用选项(可以用于所有模式):
xDRNt Lj<u ;Y:_}kN8_ --dbpath path
cW+6Emh 用path作为RPM数据库的路径。
ZM)Y Rdh 'n'83d)z --ftpport prot
LR :Qb]|" 用port作为FTP端口。
J
LOTl. V=#L@ws --ftpproxy host
|Ld/{&Qr 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
vfb~S~|U6g B(}u:[
b^S --help
i1ph{;C 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
KIt:ytFx dQhh,} --justdb
DK2m(9/`3 只更新数据库;不改变任何文件。
+(>!nsf !@ERAPuk --pipe command
;Dl< GW3< 用管道把rpm输出到commond。
"T>74bj_|Q k+*DPo@) --quiet
V*an0@ 仅显示错误信息。
SSi-Z r >%reS --rcfile filename
Dx<">4 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
gQ]WNJ~> ^4jIT1 --root dir
8;'fWV?
U 在dir目录内执行所有操作。
Z<j(ZVO gO
C5 --version
li>`9qCmI 输出rpm版本号。
O0`k6$=6r o+U]=q*|)$ -vv
1PwqWg-\\ 输出调试信息。
"2cJ'n/L d'1L#`? --------------------------------------------------------------------------------
uFd.2,XNP +q z"+g FcR(uv< 安装升级和刷新
hY5G=nbO* $s]c'D) 安装或升级一个RPM包,install命令的语法为:
3Q-i%7l oBVYgv) rpm -i [install-options] package_file
aBV{Xr~#( rpm --install [install-options] package_file
%m\dNUz4g ,^dyS]!d$ 示例:
SoS GQ&k vo'=d"zm [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
yn;h.m [): package lynx-2.8.5-18 is already installed
\k6Ho?PL [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
+.i?UHNB --------------------------------------------------------------------------------
J{98x zb =F>@z4[P- P#`Mg@. 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
< 8yv( +-=o16*{ ! rpm -U [install-options] package_file
NL})_.Og rpm --upgrade [install-options] package_file
3U#z {% \/8 I6a= 示例:
]6wo]nV[P *G{%]\s? 先安装旧版
?t LJe [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
h> K~<BAz' IvLo&6swW 再安装新版
-Fcg}\9 [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
}F=+*-SYZ a<CN2e_Z 显示出新版本信息
&@E{0ZD [root@localhost ~]# rpm -q lynx
fJ!i%</V lynx-2.8.5-18
d8 1u f<.43kv@ 说明:
d
]LF5*i -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
Mx,QgYSu h-rPLU;Bw 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
w6F'rsko] --------------------------------------------------------------------------------
Qz*!jwg H ]BH Yh%a7K 刷新的语法是:
\k?uh+xl wRwTN"Yg rpm -F [install-options] package_file
y#\jc4F_a _C`cO rpm --freshen [install-options] package_file
F<8Rr#Z Ax[!7~s 示例:
1i;-mYGaMn %j],6wW5J 从未安装过lynx包,使用-F选项,将无法升级。
L%,tc~)A cnm&oC 6 [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
\79KU [root@localhost ~]# rpm -q lynx
VV/6~jy0 package lynx is not installed
et|P5%G --------------------------------------------------------------------------------
` aTkIo:ms YxH"*)N Kp")
%p# 安装和更新选项为:
H\ A!oB,sw 8>.l4:` --allfiles
jg8j>"Vj> 安装或更新所有文件。
7Mxw0J _RG!lmJV --badreloc
a/!!Y@7 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
VO ^[7Y ~YO-GX( --excludedocs
/60`"xH 不安装任何文档文件。
X+;F5b9z HA%%WSuf --excludepath path
6
W/S?F~{ 不安装文件名以path开始的任何文件。
@-dM'R6C FoM4QO --force
\tFg10 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
xao'L \-kX-Tq -h,--hash
2kV[A92s 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
r(` ;CY]@ (p<QRb:&Z --ignorearch
'| Enc"U 即使二进制包用于不同的体系结果也进行安装。
<VD^f ?qr-t+ --ignoreos
}J}a;P4 即使操作系统不匹配也安装二进制包。
c-z2[a8 -L>\ 58` --ignoresize
|B&KT 安装前不检查磁盘的可用空间。
G5W6P7-<X UeB8|z --includedocs
}5gAxR, 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
z)Xf6& *z4n2"<l --nodeps
qM
F'& 不检查这个包是否依赖于其他包的存在。
'$u3i
#.\ 1Sox@Ko --noorder
BCV<( @c 安装之前,不为了满足依赖关系而对包进行重新排序。
,eq[X\B> +5Z0-N@ --noscripts
o)'u%m 不执行任何预安装或后安装脚本。
6'y+Ev$9 }49X
N --notriggers
~S}>|q$ 不执行任何由包安装触发的脚本。
6zs&DOB %&KJtKe --oldpackage
P;[5#-e 允许升级以用旧包替换新包。
}K,:aN,44\ NVx`'Il8
" --percent
8cn)ox|J[ 当文件被解压时输出完成百分比的信息。
9`}Wp2 [\CQ_qs| --prefix path
Ms5m.lX 把可重定位包的安装前缀设置为path。
6U;pYWht FUzIuz 6 --replacefiles
&fA`Od6l" 即使包替换了来自其他安装包的文件,也安装这些包。
Lv@JfN"O xB{0lI --replacepkgs
b_Ns
Ch3@ 即使某些包已经被安装,也安装他们。
-jsNAQ fLK*rK^{" --test
vQ=W<>1 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
\a+F/I$hwa DX.u"&Mm --------------------------------------------------------------------------------
Saa#Mj`M \dj&4u3 AfKJaDKf 查询
~[XDK`B L%`~`3%n- query命令的语法为:
jI@0jxF nt\6o?W rpm -q[information-options] [package-options]
"~x\bSY rpm --query[information-options] [package-options]
]c{Zh?0 _3<J!$]&p 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
lbrob' '+ --------------------------------------------------------------------------------
\FN"0P(G 21GjRPs\ ,c"_X8Fkx$ 以下简单示演示一下包查询:
QytqO{B^ ~k+"!'1 简单查询:
P0U=lj/b x8%Q TTY 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
7uJy<O
kXS_:f;M 示例:
lZCvH1&" yA*~O$~Y [root@localhost ~]# rpm -q lynx
2|F.J G^ lynx-2.8.5-18
dT8m$}h9 --------------------------------------------------------------------------------
VVeO>j d X5U.8qI3 L>$yslH;b 信息查询:
(8o~ XL B1m@ rpm -qi packagename命令可以得到安装包的汇总信息。
\~:Kp
Kq 3:jKuOX 示例:
z<c^<hE:l [root@localhost ~]# rpm -qi lynx
%Rv&VFg Name : lynx Relocations: (not relocatable)
BDZB;DPb Version : 2.8.5 Vendor: Red Hat, Inc.
eKn&`\j6 Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
%)*!(%\S*3 Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
b_-ESs]g Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
+<6L>ZAL Size : 4837340 License: GPL
E&V"z^qs_ Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
~PaD _W#xP Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> 'qQ 5K
o URL :
http://lynx.isc.org/ e/lfT?J\ Summary : 一个基于文本的网页浏览器。
@& #df Description :
{U(-cdU{e` Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
r=4'6! 图像,但是它支持框架、表格、以及多数其它 HTML
qdh;zAMx 标签。Lynx 优于图形化浏览器的地方是它的速度――
"L.)ML Links 能够快速启动、退出、及显示网页。
.6SdSB^M 标识拥有者
WwbExn< --------------------------------------------------------------------------------
h>= e<H?f bW<_K9" [CBA Lj5 找出什么包拥有文件file:
yXS ~PG x3T)/'( 示例:
,eOOV@3C >i~W$;t [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
{g\Yy(r
lynx-2.8.5-18
sLK J<=0i --------------------------------------------------------------------------------
Gm^@lWzG EU]{S=T =[(1u|H9 列表包中的文件:
X;flA*6V /pgfa-< 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
4][m!dsU t5N@z 示例:
84)$ CA+NX 3v;o`Em& 此为部分显示结果
??12
J# [root@localhost ~]# rpm -ql lynx
~\4l*$3(^ /etc/lynx-site.cfg
2<>n8 K /etc/lynx.cfg
7^'TU=ss_ /etc/lynx.cfg.cs
YQ X+lE /etc/lynx.cfg.ja
v^y3r /etc/lynx.cfg.sk
A=!&2( /usr/bin/lynx
"C.'_H!Ex /usr/share/doc/lynx-2.8.5
CCfuz & /usr/share/doc/lynx-2.8.5/INSTALLATION
z*ZEw /usr/share/doc/lynx-2.8.5/README
Fwyv>U /usr/share/doc/lynx-2.8.5/docs
^Tc&?\3 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
KCJ zE> /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
1qbd6D|t /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
(7`goi7M /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
OP]=MZP| /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
fJLlz$H /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
-(~Tu>KaH /usr/share/doc/lynx-2.8.5/docs/CMU.announce
l"o@.C}f/ /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
QKc3Q5)@j /usr/share/doc/lynx-2.8.5/docs/FM.announce
6=A2Y:8 /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
}M?GqA= /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
sY7:Lzs., /usr/share/doc/lynx-2.8.5/docs/README.TRST
D/:~#) /usr/share/doc/lynx-2.8.5/docs/README.chartrans
QR2J;Oj_ " jn@S- --------------------------------------------------------------------------------
7oA$aJQ "UKX~}8T n|lXBCY7K 列出包所提供的实际能力:
2/=CrK LdI) --provides选项的作用是列出这个包所提供的实际能力。
iq,qf)BY.| w_@NT} 示例:
VE4!=4 ,=B
"%=S [root@localhost ~]# rpm -q --provides lynx
'cy35M config(lynx) = 2.8.5-18
-'BJhi\Y]~ webclient
O7ceSz lynx = 2.8.5-18
[Av87!kJ!X --------------------------------------------------------------------------------
!vfjo[v
ySP1WK uljd)kLy4O 列出这个包所倚赖的任何包:
Gv>,Ad
ka Sd'
uXX@ -R,--requires选项的作用是列出这个包所依赖的任何包。
_7~O>. :-.R*W 示例:
|!8[Vg^Wh jC
,foqL [root@localhost ~]# rpm -qR lynx
wfM$JYfI /bin/sh
@!'Pr$` config(lynx) = 2.8.5-18
c_}i(HQ indexhtml
rOyK==8/Fg libc.so.6
IGEf*! libc.so.6(GLIBC_2.0)
Namw[TgJ libc.so.6(GLIBC_2.1)
C>$5<bx libc.so.6(GLIBC_2.2)
8NudY3cU! libc.so.6(GLIBC_2.3)
K+dkImkh libcrypto.so.4
9H2^4D8 libncursesw.so.5
YoGnk^$ libssl.so.4
=#^%; 6 6z libz.so.1
iOPv
% [ rpmlib(CompressedFileNames) <= 3.0.4-1
'?E^\\"* rpmlib(PayloadFilesHavePrefix) <= 4.0-1
ldrKk'S,B --------------------------------------------------------------------------------
cbsy&U zBay 3a ;WJ}zjo > 列出包中的配置文件
b=:AFs{ N/DcaHFYo -c,--configfiles选项的作用是列出包中的配置文件
yJWgz`/L 15r,_Gp8 示例:
hdW",Bf' Kpz>si?CL [root@localhost ~]# rpm -qc lynx
$Eg|Qc-1 /etc/lynx-site.cfg
@}!1Uk3ud /etc/lynx.cfg
{#:js /etc/lynx.cfg.cs
upQ:C>S /etc/lynx.cfg.ja
T.d+@ZV<# /etc/lynx.cfg.sk
Q7&Yy25 --------------------------------------------------------------------------------
uaNJTob %'"#X?jk1 + Q
If7= 显示有关于包的改变信息的日志:
(WR&Vt4R