Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
3|(<]@
$ YL&)@h 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
YkSHJ{> x@3"
SiC 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
nArG
I}@ s("\]K 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
ipC
<p?PpR --------------------------------------------------------------------------------
vYg>^!Q n7/>+V+ Hu$y8_Udw 以下简要介绍RPM包的安装,删除和查询
<DZ$"t kRqe&N e RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
Ay0.D FL Z(I=KBI rpm命令的格式为:
s63!]LDr [H@71+_Q rpm [options] [packages]
~L4L|q 7 TPVB{
107 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
g.pR4Mf=Z ]
@:x<> 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
=2@V} --------------------------------------------------------------------------------
tU0jFBB C}qHvwFm mXs.@u/ RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
IU;a$ G%ZP` 以下为rpm --showrc命令显示的节选:
G|YNShK4=9 |:]}u|O 示例:
m5v IS ;;|.qgxc~ 此为部分显示结果
4L_)@n} [root@localhost ~]# rpm --showrc
zbI|3 ARCHITECTURE AND OS:
ZeqsXz build arch : i386
e2yCWolmTS compatible build archs: athlon i686 i586 i486 i386 noarch
:gn&wi build os : Linux
{H* compatible build os's : linux
:$*@S=8 O install arch : athlon
NfWL3"&X install os : Linux
bTt1y O compatible archs : athlon i686 i586 i486 i386 noarch
F*T$n"^ compatible os's : linux
]\y]8v5( RPMRC VALUES:
(H8JV1J 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
i1ScXKO optflags : %{__global_cflags} -m32 -march=athlon
[1nUq!uTm Features supported by rpmlib:
Mc&Fj1h5 rpmlib(VersionedDependencies) = 3.0.3-1
{y'4&vt<~ PreReq:, Provides:, and Obsoletes: dependencies support versions.
IN75zn*% rpmlib(CompressedFileNames) = 3.0.4-1
Tje(hnN file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
k [LV^oEg rpmlib(PayloadIsBzip2) = 3.0.5-1
Iz[ohn!f package payload can be compressed using bzip2.
6{quO#! --------------------------------------------------------------------------------
~ dk9 7Z8 ^YJ%^P U;j\FE^+> rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
OA^6l# Y?$ 示例:
*M/:W =,t &?$mS'P [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
aS``fE;O Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
|`xM45 Preparing... ########################################### [100%]
RO@=&3s 1:lynx ########################################### [100%]
hd]ts. --------------------------------------------------------------------------------
R?IRE91 : Y?3f
Fg [+_>g4M~% 以下列出一些通用选项(可以用于所有模式):
4fL`.n1^ g^^pPVK_ --dbpath path
VVDW=G 用path作为RPM数据库的路径。
5M/~|"xk dI|D c --ftpport prot
jweX"G54R 用port作为FTP端口。
rsq?4+\ ac\( [F- --ftpproxy host
Gt+rVJ=v 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
53 -Owjpx )KEW`BC5T --help
+I?k8',pi 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
4,>9N9.?9 P)cEYk --justdb
!6x7^E;c 只更新数据库;不改变任何文件。
CW2)1%1iz =t`cHs29 --pipe command
}*C*!?pcd 用管道把rpm输出到commond。
3I(;c ,S K:^0*5Y-k --quiet
`2hg?(ul 仅显示错误信息。
oEX^U4/= 91]sO%3 --rcfile filename
k<5g 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
>ZW|wpO Z/dhp0k --root dir
4Us_Z{. 在dir目录内执行所有操作。
]x{.qTtw r?IBmatK/ --version
e,,O 输出rpm版本号。
^,,}2dsb> [Ky3WppR -vv
x
FWhr#5, 输出调试信息。
>lfuo lj UdsU w --------------------------------------------------------------------------------
l&}}Io$?@
Inn{mmz
1 %pxO<O 安装升级和刷新
*\(z"B * k<@ 安装或升级一个RPM包,install命令的语法为:
Io|Du AL.psw-Il rpm -i [install-options] package_file
!=A;?Kdq rpm --install [install-options] package_file
IrMB=pWo i")0 3b 示例:
8XG';K_ .r2*tB). [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
Q@7d:v package lynx-2.8.5-18 is already installed
Bp3E)l [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
<N1wET- --------------------------------------------------------------------------------
B]@25 FJ-H
; XbqMWQN* 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
]8}51y8 o<G#%9j rpm -U [install-options] package_file
"VZXi_P rpm --upgrade [install-options] package_file
o8Gygi5 Dnl<w<}ZU: 示例:
Pc_aEBq wapSpSt 先安装旧版
}f]Y^>-Ux [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
Z &Ciy n 5nUJ9sqA 再安装新版
Ml7
(<J [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
BHf$ %?3z, d&[RfZ` 显示出新版本信息
]%)<9]} [root@localhost ~]# rpm -q lynx
Qr9;CVW lynx-2.8.5-18
y TD4![
fT|A^ 说明:
,/D}a3JD -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
Z*q9vX xEp?|Q$ 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
Dlq!:dF{& --------------------------------------------------------------------------------
KWZhCS?[( Zym6btc qh:Bc$S 刷新的语法是:
aPVzOBp -cM1]soT rpm -F [install-options] package_file
b7Jxv7$e
Fq@o_bI rpm --freshen [install-options] package_file
B*,)@h $[A\i<# 示例:
pYx,*kG:HW D]]wJQU2 从未安装过lynx包,使用-F选项,将无法升级。
viG,z4Zf )63
$,y-;$ [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
dPwyiV0 [root@localhost ~]# rpm -q lynx
L%T(H<