Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
F>Pr`T?> m`i_O0T 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
riR(CJ}Ff LMKhtOZ? 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
'Qdea$o i;Dj16h 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
Q g~cYwX --------------------------------------------------------------------------------
|RjAp.pm nQGl]2 ]K?;XA3 dZ 以下简要介绍RPM包的安装,删除和查询
c wNJ{S+ '9{`Czc(Gb RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
R2Es~T -pmb-#`M rpm命令的格式为:
i<0_sxfUD ^H"o=K8= rpm [options] [packages]
vB74r]'F r>: ~!o* 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
y1{TVpN =6Fpixq> 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
)ifjK6* --------------------------------------------------------------------------------
:FT x#cZ XHU\;TF QyghNImp RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
(}g4}A@x GY>G}bfh 以下为rpm --showrc命令显示的节选:
O&dBLh!G {FQ@eeU 示例:
rp9?p% {N3&JL5\"E 此为部分显示结果
g.Tc>?~ [root@localhost ~]# rpm --showrc
(Bq^
D9 ARCHITECTURE AND OS:
TAxu ]C$P build arch : i386
3Fb9\2<H compatible build archs: athlon i686 i586 i486 i386 noarch
\sBXS. build os : Linux
cY5w,.Q/! compatible build os's : linux
LZ34x: ,C install arch : athlon
;NOmI+t0w& install os : Linux
g,9&@g/ compatible archs : athlon i686 i586 i486 i386 noarch
3
,zW6 -} compatible os's : linux
}u9#S RPMRC VALUES:
?g\emhG 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
Nq9\ 2p optflags : %{__global_cflags} -m32 -march=athlon
Rh}}8 sv Features supported by rpmlib:
HYg! <y rpmlib(VersionedDependencies) = 3.0.3-1
h1t~hrq PreReq:, Provides:, and Obsoletes: dependencies support versions.
C. BlB rpmlib(CompressedFileNames) = 3.0.4-1
2HUw^ *3 file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
l`uI K. rpmlib(PayloadIsBzip2) = 3.0.5-1
7fI2b,~ package payload can be compressed using bzip2.
7nm'v'\u+V --------------------------------------------------------------------------------
IRGcE&m 7u{V1_n1 qnCjNN
rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
WBD?|Ss He,,bq 示例:
e)= "Fq! ZNVrja* [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
Sn
S$5o Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
-Bl]RpHCe Preparing... ########################################### [100%]
lA%FS]vh 1:lynx ########################################### [100%]
|
C^.[) --------------------------------------------------------------------------------
k#bG&BF `OfD^Q= SJ91(K 以下列出一些通用选项(可以用于所有模式):
Q^;:Kl.b ]5K+W --dbpath path
/GVjesN 用path作为RPM数据库的路径。
?&'Kw>s@ O\CnKNk, --ftpport prot
gu6%$z 用port作为FTP端口。
p}3` "L= ue^HhZ9 --ftpproxy host
,z<1:st]< 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
N]eBmv$| 3&>0'h --help
Y)@Y$_ 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
EK=
y!> iciKjXJ: --justdb
NRny]! 只更新数据库;不改变任何文件。
OP<N!y ?[ "u]&~$ --pipe command
GeDI\- 用管道把rpm输出到commond。
,]:Gn5~ ~`Rar2%B --quiet
D Qz+t 仅显示错误信息。
k 3H0$1 @I}VD\pF --rcfile filename
=&6sU{j* 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
PtYG%/s IITUM) --root dir
6I: 6+n 在dir目录内执行所有操作。
,jEc4ih4 O/|))H?C --version
U(0FL6sPC 输出rpm版本号。
7O'.KoMw Q-<Qm ? -vv
I?St}Tl 输出调试信息。
5D.Sg;\ ~Th,<w*o --------------------------------------------------------------------------------
mogmr lP*n%Pn) m";..V 安装升级和刷新
:_y!p N2k<W?wQ 安装或升级一个RPM包,install命令的语法为:
Q?;Tc.O"/ 6_<~]W& rpm -i [install-options] package_file
;@T0wd_i| rpm --install [install-options] package_file
#D/*<:q5 R)BXN~dQ 示例:
e@qH!.g) SkMFJ?J/ [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
4w~%MZA^ package lynx-2.8.5-18 is already installed
T\n6^@.> [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
E_En"r)y --------------------------------------------------------------------------------
S
:8 Pw| h`[h nj0sh"~+ 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
_XT'h;m $,2T~1tE rpm -U [install-options] package_file
Bcarx<P-p rpm --upgrade [install-options] package_file
4xEw2F lyX3'0c 示例:
Vi: ^bv C+uW]]~I) 先安装旧版
.=9WY_@SZ [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
:^Pks R mM72>1~L* 再安装新版
PWyf3 [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
|dqHpogh y/y~<-|<@ 显示出新版本信息
D/f4kkd [root@localhost ~]# rpm -q lynx
);':aXj lynx-2.8.5-18
+^lB"OcOX@ m)} 01N4 说明:
tnaFbmp -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
GkX Se)#p ('SId@ 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
) jH`lY) 1 --------------------------------------------------------------------------------
|bz%SB k`Ifl) -1Dq_!i 刷新的语法是:
}a$.ngP
>iae2W` rpm -F [install-options] package_file
3q}j"x? fCx( rpm --freshen [install-options] package_file
+x=)Kp> VO8rd>b4 示例:
jOVF+9M EC;>-s 从未安装过lynx包,使用-F选项,将无法升级。
Cp(2]Eb Nw'03Jzx_ [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
;5bd<N [root@localhost ~]# rpm -q lynx
v8*)^-Fx package lynx is not installed
i-Rn,}v --------------------------------------------------------------------------------
;o3gR4u_L @]vY[O!&; c%C6d97q 安装和更新选项为:
>i,_qe?V:w RC/ 3\' --allfiles
4_kN';a4Q 安装或更新所有文件。
zk
FX[-'O N=BG0t$ --badreloc
(_zlCHB 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
*$ g!/,
k[D_L` --excludedocs
M/quswn1 不安装任何文档文件。
,< x/ l P3|h* --excludepath path
Si>38vCJ* 不安装文件名以path开始的任何文件。
)Q'E^[Ua g w([08 --force
zo(#tQ-'m 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
|MFAP!rycS Sy|GM~ -h,--hash
[&