Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
VL2ACv( [Y8ot-6 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
gPF5|% 3) oD_#oX5\ 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
-9yWf8; Eg0qY\' 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
V8}jFib --------------------------------------------------------------------------------
V8-*dE +(/' b'* A?4s+A@Eg 以下简要介绍RPM包的安装,删除和查询
&b9bb{y_$K 1dl(`=^X RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
]%ey rbU |}D5q| d@n rpm命令的格式为:
0}qnq" HC(7,3 rpm [options] [packages]
RI&V:1 5\.w\ 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
kj/v$m ~=k?ea/> 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
Yx':~ --------------------------------------------------------------------------------
NT;cTa=; /4{IxQk 6~tj"34_ RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
fx*Q,}t bT c^huP 以下为rpm --showrc命令显示的节选:
@r3,|tkrz Y[.f`Ei2 示例:
wuKr9W9Xa ;&`6b:ug 此为部分显示结果
4;V;8a\A [root@localhost ~]# rpm --showrc
\W+Hzf]
W# ARCHITECTURE AND OS:
<8YIQA build arch : i386
p@[n(?duC. compatible build archs: athlon i686 i586 i486 i386 noarch
eZMfn$McJv build os : Linux
Q=h37]U+ compatible build os's : linux
~'VVCtA install arch : athlon
;uN&yj<}a install os : Linux
^a?g~G compatible archs : athlon i686 i586 i486 i386 noarch
fR#W#n#m compatible os's : linux
Y{g[LG`U RPMRC VALUES:
o(eh. 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
{-1N@*K optflags : %{__global_cflags} -m32 -march=athlon
&}!AjA) Features supported by rpmlib:
K8{ef rpmlib(VersionedDependencies) = 3.0.3-1
DA^!aJ6iF PreReq:, Provides:, and Obsoletes: dependencies support versions.
9{CajtN rpmlib(CompressedFileNames) = 3.0.4-1
?yKG\tPhM file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
VfkQc$/ rpmlib(PayloadIsBzip2) = 3.0.5-1
!dOpLUh l package payload can be compressed using bzip2.
@BMuov --------------------------------------------------------------------------------
7}puj%JS
/ o,[Em< hr`,s!0Y rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
=+w/t9I[ `Ln1g@ 示例:
|>Pz#DCy <['ucp
[root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
FYIz_GTk Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
Wn&9R
j Preparing... ########################################### [100%]
3 EOuJ 1:lynx ########################################### [100%]
T$1(6<:+. --------------------------------------------------------------------------------
Zx^R -9 &Y1RPO41J &"d
:+!4h 以下列出一些通用选项(可以用于所有模式):
G6p R?K+ <4P.B?-/t --dbpath path
\0.!al0 用path作为RPM数据库的路径。
]T._TZ" |}Mt hj9n --ftpport prot
xtK}XEhG! 用port作为FTP端口。
A u"BDP [~ !9t9+~ --ftpproxy host
S^{tRPF%d 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
EpK7VW YM#J_sy@J. --help
y=zs6HaS 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
lcXo> ='6@^6y --justdb
m@"p#pt(_ 只更新数据库;不改变任何文件。
zvwv7JtB K0Lc~n/ --pipe command
.F3~eas 用管道把rpm输出到commond。
*i V#_ g ,yB^^% --quiet
4iY
<7l8 仅显示错误信息。
ik5"9b-\< 74a k|(! --rcfile filename
e#@u&+K/f 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
!}q@O-}j k#G+<7c< --root dir
f!G%$?] 在dir目录内执行所有操作。
!,{-q)'D q#`;G,rs --version
M $zt;7P| 输出rpm版本号。
U["IXR# } [OEtd{ -vv
kfq<M7y 输出调试信息。
rd^j< +1Pu29B0 --------------------------------------------------------------------------------
caZEZk#r; G{0f*
cH) ;Bat--K7+ 安装升级和刷新
AjINO}b OT#foP 安装或升级一个RPM包,install命令的语法为:
Tj=@5lj0 J7k=5Fqej; rpm -i [install-options] package_file
w[J.?v&^ rpm --install [install-options] package_file
-l{ wB" KJ_L>$
]* 示例:
yppXecFJ 9mEhZ" [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
Rk}=SB- package lynx-2.8.5-18 is already installed
Y{L|ja%9? [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
cBU@853 --------------------------------------------------------------------------------
F8B:P7I EHm:&w r6L 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
.&/A!3pW s"l ^v5 rpm -U [install-options] package_file
<9`/Y"\ p rpm --upgrade [install-options] package_file
q[+V6n`Z5 RO1xcCp 示例:
u;f${Wn'3 .?T,>#R 先安装旧版
xj8yQ Y1 [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
Y5nj _xQJL *->2$uWP 再安装新版
cPD&xVwq> [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
Lc.=CBQ <d89eV+ 显示出新版本信息
Ws%@SK [root@localhost ~]# rpm -q lynx
w<=?%+n lynx-2.8.5-18
YJdM6 xNlxi 说明:
v_M-:e3` -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
a;a^- n|D ?=zF]J:G1w 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
{m%]`0 --------------------------------------------------------------------------------
M)sM G
C HK_Vk\e .nDB{@# 刷新的语法是:
v@m2c_, UnTnc6Bo7W rpm -F [install-options] package_file
fXNl27c- 'cp1I&> rpm --freshen [install-options] package_file
v\&C]W] dsJMhB_41U 示例:
=CBY_ *CtWDUxSdW 从未安装过lynx包,使用-F选项,将无法升级。
{`RCh]W ckDWY<@v [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
fkKk/M>1 [root@localhost ~]# rpm -q lynx
;t6)(d4z? package lynx is not installed
Sq<ds}o'8l --------------------------------------------------------------------------------
\%],pZsA ~ i&K-|[3{g HNXMM 安装和更新选项为:
|| p>O PMOyZ3 --allfiles
J}zN]|bz 安装或更新所有文件。
dZ6\2ok+ -_`dA^ --badreloc
#_(t46 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
%Z.!T 6h5DvSO --excludedocs
}#cFr)4f 不安装任何文档文件。
Fu%D2%V$/ c]Z@L~WW --excludepath path
0:C ^-zrx 不安装文件名以path开始的任何文件。
s?j || rlRRGJ\l --force
1uwzo9Yg 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
r
&.gOC qI=j>x -h,--hash
+uqP:z 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
rl__3q ,$oz1,Q/ --ignorearch
v)c[-:"z 即使二进制包用于不同的体系结果也进行安装。
c.?+rcnq }LA7ku --ignoreos
Lb=4\ _ 即使操作系统不匹配也安装二进制包。
&YpWfY&V