Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
eB<V%,%N# !
kOl$!X4 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
RAg|V:/M n3l"L|W^(< 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
s{"`=dKT I |<+'G 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
9z|>roNe --------------------------------------------------------------------------------
L6[rvM|9_ L5zG0mC8 rx}ujjx 以下简要介绍RPM包的安装,删除和查询
N1s$3Ul \4\\575zp' RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
c5B_WqjJ FfD
,cDs rpm命令的格式为:
qSpa4W[ +c]N]?k& rpm [options] [packages]
JL.ydH79 (:fE _H2z 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
zCGmn& *M ZyS;+" 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
j^aQ>(t(9 --------------------------------------------------------------------------------
D)O6|DiO 0'V- _ pH6uuB RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
A5.'h< (.quX@w"m 以下为rpm --showrc命令显示的节选:
:b M$; /v
bO/Mr 示例:
RXx?/\~yd; /SPAJHh 此为部分显示结果
3I>S:|=K [root@localhost ~]# rpm --showrc
(v'lb!j^# ARCHITECTURE AND OS:
_Y
><ih build arch : i386
0'\FrG compatible build archs: athlon i686 i586 i486 i386 noarch
k@t,[ build os : Linux
PO%yWns30o compatible build os's : linux
g<hv7?"[ install arch : athlon
p+`*~6Jj/ install os : Linux
'.h/Y/oz compatible archs : athlon i686 i586 i486 i386 noarch
ir@N>_ compatible os's : linux
t5X^(@q4N RPMRC VALUES:
CJ}@R.Zy 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
/4"S}P>f optflags : %{__global_cflags} -m32 -march=athlon
xPfnyAo?%z Features supported by rpmlib:
O&?CoA? rpmlib(VersionedDependencies) = 3.0.3-1
\6`%NhkM_ PreReq:, Provides:, and Obsoletes: dependencies support versions.
?2<6#>(7a rpmlib(CompressedFileNames) = 3.0.4-1
Ltic_cjYd? file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
$Va]vC8? rpmlib(PayloadIsBzip2) = 3.0.5-1
}lNufu package payload can be compressed using bzip2.
Zm;
+Ku> --------------------------------------------------------------------------------
<SC|A| tZNad Yyo9{4v+p{ rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
B yy-Cc o.
V0iS] 示例:
,
R.+-X ,a]~hNR*X [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
g]iy-,e Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
YW$x: Preparing... ########################################### [100%]
M;p q2$ 1:lynx ########################################### [100%]
[BZ(p --------------------------------------------------------------------------------
T24#gF~ .z-^Ga* @rK>yPhf 以下列出一些通用选项(可以用于所有模式):
C>\!'^u1 QnP?; --dbpath path
' ! UF& 用path作为RPM数据库的路径。
H8t{ >C)] <E}]t,'3 --ftpport prot
'9p5UC 用port作为FTP端口。
mk`cyN>m &W!d}, ;
--ftpproxy host
a5U2[Ko80 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
EkjK92cF /<?X-IDz.{ --help
m"|(w`n]E+ 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
2`FsG/o\T~ dT,m{[+ --justdb
S~a:1
_Wl 只更新数据库;不改变任何文件。
WH*=81)zp K_lL\ --pipe command
Wse*gO 用管道把rpm输出到commond。
DT(Zv2 b1,T!xL --quiet
7Yw\%}UL 仅显示错误信息。
!DX/^b $Z7|t --rcfile filename
6m{$rBR 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
ux79"5qb L%s4snE --root dir
D917[<$ 在dir目录内执行所有操作。
pXT$Y8M 0[!gk]p --version
In9|n^=H@ 输出rpm版本号。
jVFRq T% HH~
du -vv
@#--dOWYR 输出调试信息。
agxSb^ 8tF L^al1T --------------------------------------------------------------------------------
jQ\
MB zS"zb b{|/J <Fe 安装升级和刷新
>/HU' /glnJ3 安装或升级一个RPM包,install命令的语法为:
U` nS` p |e-+xX|; rpm -i [install-options] package_file
SSsQu^A rpm --install [install-options] package_file
:Ye#NPOI 4FHX#` 示例:
f({-j%m K^qUlyv [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
\PMKmJX0O package lynx-2.8.5-18 is already installed
HxqV[|}0u [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
7F9g:r/^ --------------------------------------------------------------------------------
ie)1 h i!}nGJGg
}Ka.bZS 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
2hA66ar{$ +i_f.Ipp rpm -U [install-options] package_file
CT:eV7<>s rpm --upgrade [install-options] package_file
KjfKo;T H"RF[bX( 示例:
`:BQ&T%UQR L"du"- 先安装旧版
; 7v7V [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
,;e-37^0l GoVPo' 再安装新版
yJ`1},^ [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
F-7b`cF9[r *(q8?x0> 显示出新版本信息
q>.t~ [root@localhost ~]# rpm -q lynx
"O1*uwm lynx-2.8.5-18
6p]R)K>wS 79B`w
# 说明:
|`;1p@w" -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
^sn>p}Tg "`gZy)E 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
*0@;
kD=
--------------------------------------------------------------------------------
$No>-^) Hkz~9p $HCAC4 刷新的语法是:
BaTOh'52 ^]!1 'xg rpm -F [install-options] package_file
Yl~?MOk 2c`=S5 rpm --freshen [install-options] package_file
?gMrcc/{ bOIM0<(h 示例:
D&6Qk&> I
3,e)Z 从未安装过lynx包,使用-F选项,将无法升级。
DoB3_=yJ+ @C [|'[xQ [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
,~?A.
5 [root@localhost ~]# rpm -q lynx
iK:qPrk- package lynx is not installed
QRh4f\fY --------------------------------------------------------------------------------
nMdN$E ^5 =E`q". $JSC+o(q3# 安装和更新选项为:
P7.8tM2} n zrCOMld --allfiles
KPe.AK,8 安装或更新所有文件。
;Owu:}
*P\_:>bV( --badreloc
{s'_zSz 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
p6l@O3 TvG:T{jwy --excludedocs
gsm^{jB 不安装任何文档文件。
)MW}!U9G }'0Xz9/ l --excludepath path
}vA
nP]!A5 不安装文件名以path开始的任何文件。
[qMO7enu# 8=o5;]Cg --force
[QN7+#K, 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
8*~:gZ7: BW-P%:B1!R -h,--hash
pV|?dQ 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
$M<