Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
*|a_(bQ4@ 5e6]v2 k 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
pRc@0^G F{ B__Kf 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
WFsa8qv NuLQkf) 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
28>gAz.# --------------------------------------------------------------------------------
FF)F%o+:w aj|I[65 W6
f *> 以下简要介绍RPM包的安装,删除和查询
?b:l.0m ]'EtLFv) RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
=|
%:d:r w=e~
M rpm命令的格式为:
BC9rsb g75)&U`>} rpm [options] [packages]
-|"mB"Dc m}'kxZTOm 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
)$]_;JFr E,>/6AU 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
{^1D|y --------------------------------------------------------------------------------
[wj&.I{^s E#Smi507p hwSn?bkw RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
v\'Eo*4 :1PT`:Y 以下为rpm --showrc命令显示的节选:
`h+ sSIko 7D@O:yO 示例:
OjCTTz Dny5X.8 此为部分显示结果
4'cdV0] [root@localhost ~]# rpm --showrc
<=W;z=$!Bb ARCHITECTURE AND OS:
T&H[JQ/h build arch : i386
WSz#g2a compatible build archs: athlon i686 i586 i486 i386 noarch
xrFFmQ<_W build os : Linux
<w}YD @(f compatible build os's : linux
MRMswNQ install arch : athlon
E=_M=5] install os : Linux
GKTrf\"c compatible archs : athlon i686 i586 i486 i386 noarch
b*+Od8r compatible os's : linux
/U4F\pZl RPMRC VALUES:
CE=&ZHt9 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
l&R~I6^E optflags : %{__global_cflags} -m32 -march=athlon
5Q;Fwtm Features supported by rpmlib:
e23}'qb rpmlib(VersionedDependencies) = 3.0.3-1
$-Lk,}s.* PreReq:, Provides:, and Obsoletes: dependencies support versions.
zWb>y rpmlib(CompressedFileNames) = 3.0.4-1
n,!PyJ file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
@T0F }(k rpmlib(PayloadIsBzip2) = 3.0.5-1
"t$c'` package payload can be compressed using bzip2.
AcqsXBKd --------------------------------------------------------------------------------
O(2)A>} -NHA{?6r swss#?.se rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
s5F,*< s2FJ^4 示例:
z@R:~ 8J-$+ ; [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
:G=N|3 Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
0,a\vs%@X Preparing... ########################################### [100%]
b) "bX} 1:lynx ########################################### [100%]
t:B~P,r --------------------------------------------------------------------------------
Rf||(KC< 7s+3^' +&6R(7XC 以下列出一些通用选项(可以用于所有模式):
/>=)=CGv; LmE%`qNg --dbpath path
2Dgulx5kGZ 用path作为RPM数据库的路径。
o?BcpWp :s`~m;Y9? --ftpport prot
D[yOFJ~p) 用port作为FTP端口。
j
qfxQ .Zv@iL5 --ftpproxy host
%C^U?m` 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
:Q@=;P2 ZCsL%( --help
FH:^<^M 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
UIPi<_Xa owM3Gz%?UA --justdb
biLx-F c 只更新数据库;不改变任何文件。
}SpjB -LI^(_ --pipe command
4iMo&E< 用管道把rpm输出到commond。
\Ld/'Z;w CT(VV6I\ --quiet
SEu1M}+E 仅显示错误信息。
b9b384Q1O do@`(f3g --rcfile filename
fG_.&!P 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
hfw$820y[ \Jq$!foYx --root dir
^x8*]Sz#x 在dir目录内执行所有操作。
s$ZzS2d xXkP(^ Y --version
VUAW/
输出rpm版本号。
\ t4:(Jp 3 @AET.qGC -vv
y;aZMT.YI 输出调试信息。
,kS3Ioj sx7;G^93 --------------------------------------------------------------------------------
[*^`rQ W?is8r: /o%J /| 安装升级和刷新
6%?bl{pNn Z&BJ/qk
\- 安装或升级一个RPM包,install命令的语法为:
T:k-`t0":N /<ODP6Yy; rpm -i [install-options] package_file
GxjmHo rpm --install [install-options] package_file
/=4 m4
2IDN?Mw 示例:
>.'rN>B+ c4H5[LPF [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
_nW{Q-nh package lynx-2.8.5-18 is already installed
'e
@`HG
[root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
{BB#Bh[ --------------------------------------------------------------------------------
0*7N= 9HJrMX K`}8fU 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
euO!vLd X B q/<kEgM rpm -U [install-options] package_file
za$v I?ux rpm --upgrade [install-options] package_file
_ zM/>Qa {-?^j{O0. 示例:
Nmu;+{19M .&Tcds 先安装旧版
N<XS-XB, [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
g>].m8DZ' /*Xr^X6 再安装新版
?VUW.- [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
2L?jp:$;X MC=pN(l 显示出新版本信息
Jw "fqr [root@localhost ~]# rpm -q lynx
L>:YGM"sL lynx-2.8.5-18
D3,9X#B= pYXusS7S 说明:
o!bIaeEaU -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
_4~'K? Js{X33^Ju 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
KYe@2 6
--------------------------------------------------------------------------------
0_\@!#-sml ?4QX;s7 M`m-@z 刷新的语法是:
BF >678h D=ZH? d rpm -F [install-options] package_file
V!^5#A< :&59N^So| rpm --freshen [install-options] package_file
W#^W1j>_G 9UbD=}W 示例:
oXW51ty bm`x;M^M 从未安装过lynx包,使用-F选项,将无法升级。
xb6y=L xhq-$"B [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
4o|-v [root@localhost ~]# rpm -q lynx
VH*4fcT'D package lynx is not installed
y+jOk6)W75 --------------------------------------------------------------------------------
T-.Q 6sE%] u<V Obj?, O 安装和更新选项为:
=H8
LBM mEh([ZnY --allfiles
CGYZEPRR 安装或更新所有文件。
jEaU; /^Ckk --badreloc
Jw-?7O 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
MTyBGrs( xMOq/") --excludedocs
yDl{18~zv 不安装任何文档文件。
3n ~n-Jo 3Ql77?&k --excludepath path
aFfd!a"n 不安装文件名以path开始的任何文件。
coG_bX?e a%FM)/oI|T --force
0-VC$)S 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
J/T$.*X |:[
[w&R -h,--hash
JSf \ApX 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
B:?MMXB u[Ij4h. --ignorearch
)c; YR}tC 即使二进制包用于不同的体系结果也进行安装。
8Pgw_ 21N1 PjxZ3O --ignoreos
SO!|wag$ 即使操作系统不匹配也安装二进制包。
"bhF`,V ?q lpi( --ignoresize
cM|!jnKm 安装前不检查磁盘的可用空间。
[v%j? p$S\l] , --includedocs
8gIf 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
f$2DV:wuC r9\7I7z --nodeps
A
,$CYLj+ 不检查这个包是否依赖于其他包的存在。
16cc9%
4lCEzWo[/ --noorder
XCAy _fL<B 安装之前,不为了满足依赖关系而对包进行重新排序。
:"im2J |<2g^ZK) --noscripts
VMZUJ2Yj/& 不执行任何预安装或后安装脚本。
<meQ 8c%Sd'+Pt --notriggers
X"sc'#G T 不执行任何由包安装触发的脚本。
m ?)k&{I @,\J\ rb --oldpackage
l(~i>iQ
4 允许升级以用旧包替换新包。
^J]_O_ee$ Cu\6VnW_6 --percent
(gQr?K 当文件被解压时输出完成百分比的信息。
$yoIz.?V &%=]lP] --prefix path
+m>)q4e 把可重定位包的安装前缀设置为path。
:4\=xGiY J]-z7<j'] --replacefiles
B3';Tcs 即使包替换了来自其他安装包的文件,也安装这些包。
U)sw
Iis E nD5+&M0 --replacepkgs
8aMmz!S 即使某些包已经被安装,也安装他们。
Y<WA-dYoF >;NiG)Z --test
@
=XJ< 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
T=W;k<P\k s`$YY_ --------------------------------------------------------------------------------
mzGMYi* <