Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
uk WL3 QTF1~A\ 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
.#sX|c=W h7.jWJTo 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
u f<%!=e W:j9 KhvT 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
4/\Ynb.L --------------------------------------------------------------------------------
IcqzMmb @o}J ) <o|k'Y(- 以下简要介绍RPM包的安装,删除和查询
"5$p=| dKXzFyW RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
J?t(TW6E Iq19IbR8 rpm命令的格式为:
9T$%^H9 &.yX41R rpm [options] [packages]
c;t3I}, Q9p7{^m&E 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
{@x-T ~z41$~/ 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
1S+T:n --------------------------------------------------------------------------------
mo4F\$2N Y>E` 7n zcOm"-E- RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
I:al[V2g .bV^u 以下为rpm --showrc命令显示的节选:
pFu!$.Fr JAMV@ 示例:
wr:-n %@aC5^Ovy+ 此为部分显示结果
Wy1.nn[ [root@localhost ~]# rpm --showrc
x}`)'a[ ARCHITECTURE AND OS:
m,6u+Z, build arch : i386
E)p[^1WC compatible build archs: athlon i686 i586 i486 i386 noarch
^xgPL' build os : Linux
it>l?h7 I compatible build os's : linux
H8@z/ install arch : athlon
X$t!g` install os : Linux
j+lcj&V# compatible archs : athlon i686 i586 i486 i386 noarch
|Q%nnN compatible os's : linux
f/.f08 RPMRC VALUES:
!)J$f_88D 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
)"tM[~e` optflags : %{__global_cflags} -m32 -march=athlon
1B 0[dK2N Features supported by rpmlib:
n#?y;Y\ rpmlib(VersionedDependencies) = 3.0.3-1
+uNMyVH PreReq:, Provides:, and Obsoletes: dependencies support versions.
p?
VDBAx rpmlib(CompressedFileNames) = 3.0.4-1
wJgH15oB file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
+>Y]1IlI rpmlib(PayloadIsBzip2) = 3.0.5-1
#4nBov3d package payload can be compressed using bzip2.
e !w{ap8u --------------------------------------------------------------------------------
tk 5p@l QR-pji
y ?vik2RW rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
Lcy6G%A AEFd,;GF 示例:
j,i)ecZ> DbR!s1ux [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
<ZO+e*4 Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
B'y)bY'_dS Preparing... ########################################### [100%]
:UKc:JVNM 1:lynx ########################################### [100%]
6 RSit --------------------------------------------------------------------------------
)*.rl YoQQ , z-]ND 以下列出一些通用选项(可以用于所有模式):
hVZS6gU,x I~ mu'T --dbpath path
nI73E 用path作为RPM数据库的路径。
va#].4_ Nd;pkssd --ftpport prot
}KftVnD? 用port作为FTP端口。
SFEDR?s E3CwA8)k --ftpproxy host
<
jX5}@`z 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
uXA}" f2 S]e;p\8$Z --help
{8;}y[R 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
i\4YT r, S%G&{5 --justdb
;D(6Gy9~ 只更新数据库;不改变任何文件。
.F _u/"** NJ$Qm.S --pipe command
f&Sovuuh 用管道把rpm输出到commond。
-0k{O@l" 4z OFu/l6R --quiet
C(xsMO'k,, 仅显示错误信息。
#>z !ns Xoq - --rcfile filename
;<F^&/a|yQ 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
uaLjHR0 E;k$ICOXA --root dir
}1a(*s,s-^ 在dir目录内执行所有操作。
G8Ow;:Ro
':=20V --version
Oo~
输出rpm版本号。
r. rzU R_:lp\S& -vv
;jKL B^4nX 输出调试信息。
fNrpYR X ,a0RI<D --------------------------------------------------------------------------------
fQw=z$ Io/;+R. q03nu3uDI 安装升级和刷新
@c>MROlrlF BISH34 安装或升级一个RPM包,install命令的语法为:
=""5
c je%y9*V rpm -i [install-options] package_file
p~-)6)We? rpm --install [install-options] package_file
95/;II A=D
G+z'' 示例:
SK@lr vNm4xa% [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
}h sR} package lynx-2.8.5-18 is already installed
m&MZn2u[4i [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
kFfNDM#D --------------------------------------------------------------------------------
Q:ql~qew }Os7[4RW & TN.6Hm3 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
$/E{3aT@F2 b>}
)G7b} rpm -U [install-options] package_file
i\K88B&24 rpm --upgrade [install-options] package_file
cA90FqUH Yqt~h 示例:
\5HVX/ (;N#Gqb6l 先安装旧版
T.WN9=N [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
\MAv's4b@ BY$L[U;@T 再安装新版
I5Rd~-="G [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
6>b#nFVJ )L"J?wTe 显示出新版本信息
qE6D"+1y7 [root@localhost ~]# rpm -q lynx
mF>{cVTF lynx-2.8.5-18
{JfL7% nbDjoZZ4 说明:
IY@N -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
OskQ[
e0 M'NOM>8 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
&o`LT|*m --------------------------------------------------------------------------------
1CUI6@Cz) @G|z_ 8K\S]SZ 刷新的语法是:
E6?0/" a{.-qp rpm -F [install-options] package_file
)<5hga][~a 0/~{, rpm --freshen [install-options] package_file
oSO~72 ;_/!F}d 示例:
$WQm"WAKe HoZsDs.XZ 从未安装过lynx包,使用-F选项,将无法升级。
x*:"G'zT 3_J({ [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
<.lt?!.ZH [root@localhost ~]# rpm -q lynx
8(!?y[ package lynx is not installed
h~Z:YY)4 --------------------------------------------------------------------------------
^jk-GRD* +rDKx(Rk kr44@!s+' 安装和更新选项为:
H00iy$R QghL=
--allfiles
7Ewq'Vu`y 安装或更新所有文件。
*M6j)jqV D@
BP< --badreloc
)s
?Hkn 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
| tFg9RT 1E$^ul-v --excludedocs
V'l9fj*E 不安装任何文档文件。
/!hxW}>^ gjB(Pwx --excludepath path
f!B\X*| 不安装文件名以path开始的任何文件。
[QwqP=-6 ;a(7% --force
AaM~B`B 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
`pd+as J
c:j7}OOV -h,--hash
jZ<f-Ff0 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
.6iJ:A6T P#,g5 --ignorearch
k!g%vx 即使二进制包用于不同的体系结果也进行安装。
ca'c5*Fs C]krJse@ --ignoreos
6'.CW4L 即使操作系统不匹配也安装二进制包。
yk2XfY W: 3fLXk+ --ignoresize
\IOF 9)F 安装前不检查磁盘的可用空间。
ql_,U8Jw DV!0zzJ --includedocs
<t,lq 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
ca:Vdrw` jq(rnbV --nodeps
u/`
t+-A 不检查这个包是否依赖于其他包的存在。
8@KGc
)k _$T.N --noorder
D\z`+TyJ 安装之前,不为了满足依赖关系而对包进行重新排序。
pH396GFIW 4BJ w+EV8 --noscripts
V"A*B 不执行任何预安装或后安装脚本。
J+qcA} Nbt.y 'd --notriggers
]q|U0(q9 不执行任何由包安装触发的脚本。
Htce<H-P lh;;%@1DM --oldpackage
X1&c?T1 %[ 允许升级以用旧包替换新包。
t#nRa Pzp q =26($ --percent
U)_x(B3d/ 当文件被解压时输出完成百分比的信息。
3Zm;:v4y 88zK)k{ --prefix path
,'@t.XP 把可重定位包的安装前缀设置为path。
Nkk+*(Z %p^`,b} --replacefiles
.:Zb~ 即使包替换了来自其他安装包的文件,也安装这些包。
(l)r.Vj KtaoU2s --replacepkgs
F7`[r9 $ 即使某些包已经被安装,也安装他们。
T{*!.+E PLK;y --test
GO6uQ}; 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
s 5F?m (5)DQ1LaF --------------------------------------------------------------------------------
9@YhAj ]fU0;jzX ,veI'WHMB 查询
Bv^5L>JZ/ .QDeS|l query命令的语法为:
E&\ 0+-Dw
R7Z! rpm -q[information-options] [package-options]
piAFxS<6 rpm --query[information-options] [package-options]
v.>95|8 X>Y>1fI. 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
ov|pXi<e --------------------------------------------------------------------------------
,BlNj^5f knRs{1}Pw{ Y".4."NX 以下简单示演示一下包查询:
:a)` iJnb $6/CTQ 简单查询:
k1HCPj ,UW!?}@ 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
3d(:Y6D) o3oTu 示例:
?rQIUP{D7 !Gh*Vtd8- [root@localhost ~]# rpm -q lynx
+3r4GEa
Z lynx-2.8.5-18
+w(B9rH --------------------------------------------------------------------------------
BB? 4>#D Pq3|O
Z 1-8G2e 信息查询:
*NoixV1> w*gG1BV rpm -qi packagename命令可以得到安装包的汇总信息。
U;FJSy b4>1UZGW- 示例:
Jmun^Q/h [root@localhost ~]# rpm -qi lynx
MJy(B>< Name : lynx Relocations: (not relocatable)
)Vpt.4IBd Version : 2.8.5 Vendor: Red Hat, Inc.
1"RC! Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
(A~w IKY, Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
B5!|L)7>{p Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
70N Lv Size : 4837340 License: GPL
Eu$hC]w Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
q4Y7 HE|ym Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> ;r95i1a' URL :
http://lynx.isc.org/ Z4D[nPm$ Summary : 一个基于文本的网页浏览器。
X=%e'P*X Description :
rWip[>^ Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
B[;aNyd< 图像,但是它支持框架、表格、以及多数其它 HTML
6rN.)dL.#N 标签。Lynx 优于图形化浏览器的地方是它的速度――
!5>PZ{J Links 能够快速启动、退出、及显示网页。
%G'P!xQhy 标识拥有者
VH<-||X/4 --------------------------------------------------------------------------------
.c\iKc# $)VnHr `hy uS5ADh 找出什么包拥有文件file:
WL}XD
Kx B<&g 示例:
=v=u+nO U,Z7nH3_ [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
{z |+.D lynx-2.8.5-18
(E7C9U* --------------------------------------------------------------------------------
sQMfU{S / |}wT/3>\ \ 9#X]H 列表包中的文件:
.:B;%* NPLJ*uHH 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
TECp!`)j" PgYIQpV 示例:
&|fWtl;43 c2fw;)j&X 此为部分显示结果
oe[f2?- [root@localhost ~]# rpm -ql lynx
#F'8vf'r /etc/lynx-site.cfg
Wn Ng3'6 /etc/lynx.cfg
q)OCY}QA /etc/lynx.cfg.cs
-BEd7@?A /etc/lynx.cfg.ja
yhd]s0(! /etc/lynx.cfg.sk
SL?YU(a /usr/bin/lynx
!>)o&sM /usr/share/doc/lynx-2.8.5
PyM59v /usr/share/doc/lynx-2.8.5/INSTALLATION
TPNKvv!s /usr/share/doc/lynx-2.8.5/README
ev1:0P /usr/share/doc/lynx-2.8.5/docs
JHg
y&/ /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
[rReBgV /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
Sgn<=8,6c /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
'j\mz5#s /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
DJ|lel/' /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
a.fdCI]% /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
S#S&_#$`,X /usr/share/doc/lynx-2.8.5/docs/CMU.announce
mi@ni+2Tn /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
k;jXVa /usr/share/doc/lynx-2.8.5/docs/FM.announce
Qn)AS1pL+ /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
Nu@dMG<5 /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
|
&/_{T /usr/share/doc/lynx-2.8.5/docs/README.TRST
e;9x%kNs! /usr/share/doc/lynx-2.8.5/docs/README.chartrans
d^d+8R M# cJ&+rP --------------------------------------------------------------------------------
Zhc99 L&K m[s$) -T =LKf.@]# 列出包所提供的实际能力:
>FqU=Q q$'[&&