Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
%TR->F d82IEhZ# 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
Kc(_?` "W1 q}4_ 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
<oeHZD_OR )8vcg{b{d 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
k!%HcU%J --------------------------------------------------------------------------------
Qr0GxGWU
8!T^KMfz Cf+O7Y`^ 以下简要介绍RPM包的安装,删除和查询
SGbo|Xe7: >DV0!'jW RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
4o|~KX8Qz ~#-`Qh rpm命令的格式为:
?+TD2~rD( ))MP]j9
T rpm [options] [packages]
jb*#!m.l ;DGWUK.U[H 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
F:H76O` 8 Rc6Rk!^ 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
gG$o8c- --------------------------------------------------------------------------------
gNO$WY^ 5 Fd ]3 GnLh qm"\ RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
f.u{;W 0!?f9kJq 以下为rpm --showrc命令显示的节选:
&"CS1P| uD5i5,q1Hs 示例:
hgh1G7A& ;1y\!f3#V~ 此为部分显示结果
=6 [!'K [root@localhost ~]# rpm --showrc
J^?O]| ARCHITECTURE AND OS:
q&wMp{ build arch : i386
Q/+a{m0f compatible build archs: athlon i686 i586 i486 i386 noarch
Xau.4&\d build os : Linux
YvU#)M_h compatible build os's : linux
\mycn/e install arch : athlon
g-]td8}# install os : Linux
weDv[b5i compatible archs : athlon i686 i586 i486 i386 noarch
a RV!0?fS compatible os's : linux
}cf-r>WaR RPMRC VALUES:
G9gvOEI/ 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
Eod2vr=Q optflags : %{__global_cflags} -m32 -march=athlon
LRmO6>y Features supported by rpmlib:
Obd! rpmlib(VersionedDependencies) = 3.0.3-1
N7e^XUG PreReq:, Provides:, and Obsoletes: dependencies support versions.
SY{J rpmlib(CompressedFileNames) = 3.0.4-1
6tzn% ? file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
_l Jj 6= rpmlib(PayloadIsBzip2) = 3.0.5-1
{7;TQ?/ package payload can be compressed using bzip2.
jXdn4m/O --------------------------------------------------------------------------------
712i| {wm
` *R:nB)(6< rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
' ZB%McS ~ 7k
b4[ 示例:
v:+se6HY?p :')<|(Zy [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
65}:2l2< Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
/2z2a-!r Preparing... ########################################### [100%]
G%P]qi 1:lynx ########################################### [100%]
6yR7RF} --------------------------------------------------------------------------------
*zx;81X= $51#xe 6ZM<M7(V 以下列出一些通用选项(可以用于所有模式):
@GEvI2Vf.0 Rbl(oj# --dbpath path
,p2
Di 用path作为RPM数据库的路径。
+yTL B^OhL!*tI --ftpport prot
q80?C.,` 用port作为FTP端口。
<k)rfv7 yf$7<gwX --ftpproxy host
vz _U 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
aJfW75C 3sL#_@+yz --help
BvYJ!Vj 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
[m4<j OU[Sm7B --justdb
QTDI^ZeuF 只更新数据库;不改变任何文件。
*L!R4;ubE )9*-Q%zc --pipe command
5=$D~>-# 用管道把rpm输出到commond。
5-sxTp ;TR.UUT --quiet
$DQMN 仅显示错误信息。
|5W u0T +yYz ;, \ --rcfile filename
18`?t_8g 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
Z$@Juv&>5^ d)
> if<o --root dir
YlYTH_L>E 在dir目录内执行所有操作。
[k.<x'# Ltu;sw --version
@Pa ;h 输出rpm版本号。
@1kA%LLK ){,8}(| -vv
9SU;c l 输出调试信息。
o|UZdGu -Z#A}h --------------------------------------------------------------------------------
}6o` in>M O/FQ'o1F EJRwyF5LK 安装升级和刷新
FkRrW^?5G V43|Ej}E 安装或升级一个RPM包,install命令的语法为:
-m-~ :*\JJ w rpm -i [install-options] package_file
P ^D\znvc rpm --install [install-options] package_file
1c\$ziB }3QEclZr 示例:
e\)PGjSI z S^:Ng5 [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
05w_/l+ package lynx-2.8.5-18 is already installed
B>JRta;hj [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
eE7+fMP{ --------------------------------------------------------------------------------
uv Z!3 UH. r% qgLP{v cm-!6'` 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
5I@< 6S&X tNq~M rpm -U [install-options] package_file
1YQ|KJ*K rpm --upgrade [install-options] package_file
}2G'3msx mgg/i@( 示例:
KecR jon ~ l].dOso$` 先安装旧版
g
}5lGz4 [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
A5z5e#
,u f BukrPsV 再安装新版
z#*fELV [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
JH5ckgdZ LG@5Z- 显示出新版本信息
/wKL"M-% [root@localhost ~]# rpm -q lynx
/u5MAl.<[ lynx-2.8.5-18
m{;2! [>v.#:YM^ 说明:
RlC|xj"l% -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
eqg|bc[i!t (;!92ct[? 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
B_Ul&V --------------------------------------------------------------------------------
Ms=5*_J2Jk u}r> ?/V! d6^:lbj 刷新的语法是:
r{cmw`WA/P / <C{$Gu rpm -F [install-options] package_file
h*>%ou =Gv*yR*]t rpm --freshen [install-options] package_file
Xfc+0$U@ -.@dA'j[ 示例:
3#A4A0 JtvZ~s 从未安装过lynx包,使用-F选项,将无法升级。
Y5{KtW *O|_)G [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
ObPXVqG"? [root@localhost ~]# rpm -q lynx
@>fsg-| package lynx is not installed
Y1Q240 --------------------------------------------------------------------------------
a`e'HQ x{O) n 57wHo[CJ 安装和更新选项为:
@
D,]v: K'Y/0:"* --allfiles
T>hrKn.!D: 安装或更新所有文件。
c>Tf@Aog> U)[LKO1 --badreloc
kzk8b?rOA 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
nR]*RIp5 .C\2f+(U --excludedocs
AQ&vq$ 不安装任何文档文件。
o:'@|(&