Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
E0oU$IB a ,7&" 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
, %YBG1E[y wY"o`oZ 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
2u?zO7W)-L 0J~Qq]g 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
[Vf}NF --------------------------------------------------------------------------------
Y\2|x*KwvF <:8,niKtw D@X+{ 以下简要介绍RPM包的安装,删除和查询
^/Sh=4=G @/%{15s. RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
~:_0CKa! %]p6Kn/> rpm命令的格式为:
6#A:}B<? wcDjg&:=ml rpm [options] [packages]
+\# Fd DG;y6#|p 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
N_75-S7Cm 6aOp[-Le 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
P%X-@0) --------------------------------------------------------------------------------
b]gY~cbI8 A<YsfDa_d 8cHE[I RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
6g>)6ux>aV 0=v{RQ;W4 以下为rpm --showrc命令显示的节选:
+f4W"t D&hqV)d4R 示例:
d`Q7"}uZ oQ+61!5> 此为部分显示结果
I_ "Z:v{ [root@localhost ~]# rpm --showrc
lu UYo ARCHITECTURE AND OS:
MEwdw3 build arch : i386
\)m"3yY compatible build archs: athlon i686 i586 i486 i386 noarch
_|isa]u\z build os : Linux
_>bRv+RVR compatible build os's : linux
BQ05`nkF install arch : athlon
+C7T]&5s install os : Linux
L&Qi@D0P compatible archs : athlon i686 i586 i486 i386 noarch
~tm0QrJn/ compatible os's : linux
=?0QqCjK) RPMRC VALUES:
w\|Ei( 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
A~-#@Z optflags : %{__global_cflags} -m32 -march=athlon
%6 =\5> Features supported by rpmlib:
zXc}W*ymj rpmlib(VersionedDependencies) = 3.0.3-1
[EHrIn PreReq:, Provides:, and Obsoletes: dependencies support versions.
Ri?\m!o rpmlib(CompressedFileNames) = 3.0.4-1
VTe.M[: file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
_LfHs1g4 rpmlib(PayloadIsBzip2) = 3.0.5-1
#GqTqHNE< package payload can be compressed using bzip2.
}WP-W --------------------------------------------------------------------------------
QV,E#(\5 DOL%'k ?B H)JS0
G0 rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
jv}=&d u39FN?<^ 示例:
I
8Y*@$h uzorLeu [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
kC^.4n
om Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
O<,r>b, Preparing... ########################################### [100%]
q=Xg*PM, 1:lynx ########################################### [100%]
U|fTb0fB --------------------------------------------------------------------------------
6
nGY^ x%XT2+ W L~`u 以下列出一些通用选项(可以用于所有模式):
jL4>A$ t9*= --dbpath path
\5[-Ml 用path作为RPM数据库的路径。
y1(P<7:t? aV|k}H{wt --ftpport prot
/(%Ig,<"JC 用port作为FTP端口。
+J40wFI:y 2lz
{_9 --ftpproxy host
.98.G4J> 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
9.Ap~Ay. ;6<zjV7} --help
@6%gIsj<H 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
2YIF=YWO}, G)+Ff5e0L[ --justdb
6D*chvNA; 只更新数据库;不改变任何文件。
Zps&[;R$- i]M"Cu* --pipe command
EX 9Z{xX 用管道把rpm输出到commond。
W'G{K\(/ Nu.
(viQ} --quiet
6:RMU 仅显示错误信息。
!1-&Y'+ @DCJ}hud --rcfile filename
PdM*5g4 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
/W9
&Ke H0tF --root dir
k.>6nho`TV 在dir目录内执行所有操作。
Kfd _uXL> }@*I+\W/ --version
_>Ln@ 输出rpm版本号。
: ~'Z(-a HwW6tQ -vv
kC|Tubs( 输出调试信息。
E.#6;HHzN Z%;)@0~f --------------------------------------------------------------------------------
r:#Q9EA Okoo(dfM 4a 4N
C 安装升级和刷新
D@5s8xv AI R{s7N 安装或升级一个RPM包,install命令的语法为:
|=,83,a 8qmknJC rpm -i [install-options] package_file
aYBTrOd z rpm --install [install-options] package_file
FRS28D 1(#RN9 示例:
.o"<N 2b!j.T#u [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
;fkSrdj package lynx-2.8.5-18 is already installed
bu&;-Ynb [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
O*ImLR)i+s --------------------------------------------------------------------------------
fo;6huz v#Sj|47 >.n;mk 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
jF4csO=E Y}K!`~n1S rpm -U [install-options] package_file
3)xb nRk rpm --upgrade [install-options] package_file
db^aL8 s`r-v/3l 示例:
n{L:MT9TD OH0S2?,{> 先安装旧版
7}A5u,.,ht [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
AzxL%,_ P6:;Y5e0 再安装新版
JxnuGkE0[# [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
q;ZLaX\bFl }2h't.Z<u 显示出新版本信息
_HLC>pH~# [root@localhost ~]# rpm -q lynx
6<<'bi lynx-2.8.5-18
{v,{x1 YWSz84d 说明:
)`mbf|,&t{ -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
C`3V=BB b~jIv:9T 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
cxY$LY!zX --------------------------------------------------------------------------------
2YE7 23H=Z =l_rAj~I| [gpOuTW 刷新的语法是:
^Wif!u/HM AfUZO^< rpm -F [install-options] package_file
m"<4\;GK l<W*/}3 rpm --freshen [install-options] package_file
Wgav>7!9 /8=:qIJYA 示例:
u1tq2"D8 jY rym- 从未安装过lynx包,使用-F选项,将无法升级。
ud yAP> K*HCFqrU" [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
`'*F1F [root@localhost ~]# rpm -q lynx
z<n"{% package lynx is not installed
D*CIE\+ --------------------------------------------------------------------------------
'G<}U343=8 c/b%T #m[vn^8B]y 安装和更新选项为:
,wEM
Jh $[j-C9W --allfiles
wu;7NatHx 安装或更新所有文件。
C5>{Q:.`e' 1a5?)D --badreloc
y>@v>S 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
;&K3[;a /z/hUa --excludedocs
9cVn>Fb 不安装任何文档文件。
=*{K@p_ g4zT(,ZY --excludepath path
N{ : [/ 不安装文件名以path开始的任何文件。
#D/$6ah~m ARmu{cL --force
kSLSxfR 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
Z~duJsH iSOD&J_ -h,--hash
PZKbnu 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
enPzy:C M7`UoTc+>d --ignorearch
qJsQb 即使二进制包用于不同的体系结果也进行安装。
`DI{wqV9 "g
x5XW& --ignoreos
K.:6YXVs< 即使操作系统不匹配也安装二进制包。
4aj[5fhb- F(T=WR].o --ignoresize
z2rQ$O-# 安装前不检查磁盘的可用空间。
{;]uL`abi? $
1ak I --includedocs
6&g!ZE'G 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
;e&hM\p lH6Cd/a --nodeps
]+}:VaeA 不检查这个包是否依赖于其他包的存在。
{Uik| 0lLr[ --noorder
&>d:ewM\ 安装之前,不为了满足依赖关系而对包进行重新排序。
|usnY c28oLT1|D --noscripts
pKOT Qf 不执行任何预安装或后安装脚本。
<wIp$F. sq8 tv] --notriggers
8r7/IGFg 不执行任何由包安装触发的脚本。
yrxx+z|wR +~R.7NE% --oldpackage
=2ATqb"$w 允许升级以用旧包替换新包。
}M"-5K} d&GK