Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
= iB,["s Huw\&E 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
}'"Gr%jf( 0x2!<z 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
A?5E2T1L%. 4S0>-?{ 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
F7m?xy --------------------------------------------------------------------------------
vQV K$n` $>M<j {'+QH)w( 以下简要介绍RPM包的安装,删除和查询
z"4]5&3A XK(`mEi
RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
+KGZHO! =]R3& ]#n rpm命令的格式为:
VvbFp <<A`aU^fX rpm [options] [packages]
Wx'Kp+9' +eX)48 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
| aQ"3d EUYCcL'G 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
_:n b&B --------------------------------------------------------------------------------
Gm`}(;(A FUK3)lT WnFG{S{s RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
NIr@R7MKd gCd`pi
8 以下为rpm --showrc命令显示的节选:
Rx36?/ 07T70[G 示例:
Q "r_!f `?\tUO2_T 此为部分显示结果
T Zir>5 [root@localhost ~]# rpm --showrc
^62|d ARCHITECTURE AND OS:
}H4=HDO build arch : i386
5y2?
f compatible build archs: athlon i686 i586 i486 i386 noarch
j Ib build os : Linux
DH DZ_t: compatible build os's : linux
x Ha=3n install arch : athlon
!%<^K.wG install os : Linux
kU5.iK' compatible archs : athlon i686 i586 i486 i386 noarch
EY`H}S!xy compatible os's : linux
g_*T?;!.U RPMRC VALUES:
h<l1]h+x 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
E{xVc;t optflags : %{__global_cflags} -m32 -march=athlon
XALI<ZY Features supported by rpmlib:
jkAAqR R rpmlib(VersionedDependencies) = 3.0.3-1
d<w~jP\ PreReq:, Provides:, and Obsoletes: dependencies support versions.
I[MgIr^ rpmlib(CompressedFileNames) = 3.0.4-1
h 6G/O`: file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
>>[/UFC)n rpmlib(PayloadIsBzip2) = 3.0.5-1
jcCoan package payload can be compressed using bzip2.
\hO2p6 --------------------------------------------------------------------------------
O/%< }3Sq rRES8/ #0I{.Wy] rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
|4) G |*(8r() 示例:
+,+vkpL-% WE}kTq [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
Hs"(@eDV&J Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
;T]d MfO Preparing... ########################################### [100%]
5 v^yQ<70 1:lynx ########################################### [100%]
$!vxVs9n --------------------------------------------------------------------------------
h)lPi 31^cz*V <q)4la 以下列出一些通用选项(可以用于所有模式):
6Q4X6U:WB T&Xl'=/ --dbpath path
>>l`,+y 用path作为RPM数据库的路径。
qpoV]#iW %x;x_ --ftpport prot
=M 6[URZ 用port作为FTP端口。
r#PMy$7L 87!C@XlK_ --ftpproxy host
U8#xgz@ 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
3>ex5 p]D]:
Z}P --help
4!62/df 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
Gz
I~TWc+G ?)Nj c&G --justdb
djQv[Vc{ 只更新数据库;不改变任何文件。
]e:/" ubMOD< --pipe command
%OR|^M 用管道把rpm输出到commond。
+ Y.1)i} _R|Ify#J --quiet
7T``-:`[ 仅显示错误信息。
@r(Z%j7 I-D^>\k+ --rcfile filename
xVB;s.'! 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
{3a&1'a0g Agh`]XQ2 --root dir
4nfu6Dq 在dir目录内执行所有操作。
)O+}T5c= #mR4fst --version
Mk<Vydds 输出rpm版本号。
P`4]-5gE dhg~$CVO -vv
<%}QDO8\i 输出调试信息。
h/eR ~na!@<zB{ --------------------------------------------------------------------------------
iO/XhSD |LG4=j.l z@|dzvjl
Q 安装升级和刷新
%m,6}yt Kr'f- { 安装或升级一个RPM包,install命令的语法为:
c'6g*%2k 'XQ`g CF= rpm -i [install-options] package_file
in <(g@Zg rpm --install [install-options] package_file
$\o{_?}1 vgt]:$ 示例:
m ~#! :,;K>l^U [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
l:;PXy6) package lynx-2.8.5-18 is already installed
'k;4 j|< [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
B0$:b! --------------------------------------------------------------------------------
_CBWb `=+^|Y} @[<nQZw: 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
s..lK
"b x_=n-lAF rpm -U [install-options] package_file
k NqS8R| rpm --upgrade [install-options] package_file
z't??6 Ft=zzoVKg 示例:
Q'l^9Bz c5q9LQ/ 先安装旧版
"]'?a$\ky: [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
[L`ZE*z 0C<[9Dl.G8 再安装新版
M}:=zcZ l [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
+;BAV j hYToMq 显示出新版本信息
_LP/!D [root@localhost ~]# rpm -q lynx
+h^jC9,m~{ lynx-2.8.5-18
mE O\r|A 8,D 2^Gg 说明:
<H3ezv1M -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
q/3ziVd7p ,jA)wJ 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
&*G<a3Q --------------------------------------------------------------------------------
^m#-9- ` g,`A[z2 Vt^3iX{! 刷新的语法是:
2 &/v] 1"8yLvtn rpm -F [install-options] package_file
:(dHY f-6vLX\Vu rpm --freshen [install-options] package_file
rWys'uc &uP~rEJl+ 示例:
CO-_ea U( U~{du;\ 从未安装过lynx包,使用-F选项,将无法升级。
rqv))Zo` {l_{T4xToB [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
@uo ~nF j, [root@localhost ~]# rpm -q lynx
Yw5' 6NU
package lynx is not installed
I`[i;U{CK --------------------------------------------------------------------------------
i|
\6JpNA: rG?>ltxB mOo`ZcTU 安装和更新选项为:
@3fn)YQ' NC&DF