Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
G8zbb g[*"LOw 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
_pmo
6O :uJHFF xg 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
9}_' 0(>3L : 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
)HcLpoEi --------------------------------------------------------------------------------
FTr'I82m( W^7yh&@lU jgiS/oW 以下简要介绍RPM包的安装,删除和查询
f@gvDo]Y b0/YX@ RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
@?jtB ~0h@p4 rpm命令的格式为:
&=f?:UZ% Be9,m!on rpm [options] [packages]
xs&xcRR" m[z$y 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
(I`lv=R"j B<ncOe 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
:`4F0 --------------------------------------------------------------------------------
a`8]TD 4JyA+OD4 { S.{
RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
FUf.3@} 'N^*, 以下为rpm --showrc命令显示的节选:
O._\l?m za+)2/
`L 示例:
G[*z,2Kb> -k@1#c+z 此为部分显示结果
f[
2PAz [root@localhost ~]# rpm --showrc
E[7E%^:Mg ARCHITECTURE AND OS:
Dw.I<fns^B build arch : i386
5F!Qn\{u{ compatible build archs: athlon i686 i586 i486 i386 noarch
`*elzW build os : Linux
ak-agH compatible build os's : linux
[?hvx} install arch : athlon
[Y~~C J install os : Linux
rB{w4 compatible archs : athlon i686 i586 i486 i386 noarch
&4+|{Zx0 compatible os's : linux
7#W]Qj RPMRC VALUES:
ZyDNtX% 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
}n
"5r(*^@ optflags : %{__global_cflags} -m32 -march=athlon
SQhVdYU1' Features supported by rpmlib:
7r50y> rpmlib(VersionedDependencies) = 3.0.3-1
{6WG PreReq:, Provides:, and Obsoletes: dependencies support versions.
q7<d|s rpmlib(CompressedFileNames) = 3.0.4-1
OR*JWW[] file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
C/QmtT~`e rpmlib(PayloadIsBzip2) = 3.0.5-1
t|V<K^ package payload can be compressed using bzip2.
&AOGg\ --------------------------------------------------------------------------------
)0/*j]Kf mE5{)<N:C iE}] E rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
L N
Fe7<y j "'a5;Sy 示例:
a5R.
\a<q L ph0C^8 [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
<R+?>kz6 Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
l
S3LX Preparing... ########################################### [100%]
L"/?[B": 1:lynx ########################################### [100%]
QeC\(4? --------------------------------------------------------------------------------
IC5QH<.$C x.Egl4b3 sQj]#/yK: 以下列出一些通用选项(可以用于所有模式):
y/ Bo4fM 4H(8BNgzV --dbpath path
2m]4 用path作为RPM数据库的路径。
P3]K'*Dyd c|JQ0] K --ftpport prot
IG# wY 用port作为FTP端口。
s9a`2Wm }^0'IAXi --ftpproxy host
%#rtNDi 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
7K
"1^ |!9xL*A --help
bS2g4]$'po 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
H8I)D& cw AT+l%% --justdb
B`<}YVA 只更新数据库;不改变任何文件。
3cgq'ob {hJCn*m_ --pipe command
K!Fem6R 用管道把rpm输出到commond。
s+v9H10R /&Cq-W --quiet
1U#W=Fg' 仅显示错误信息。
_B#x{ii jrFPd --rcfile filename
B1J,4 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
yf0v,]v[ u6F>o+Td) --root dir
as]M%|/-I 在dir目录内执行所有操作。
P8}IDQ9 BO4;S/ O --version
;Z"MO@9: 输出rpm版本号。
f|M^UHt8* <W!n lh -vv
2I}+AW!!= 输出调试信息。
=.;ib6M Za1mI^ L1 --------------------------------------------------------------------------------
xjiV9{w z/`+jIB .:f ao' 安装升级和刷新
@wa"pWx8 K=HLMDs 安装或升级一个RPM包,install命令的语法为:
wW p7N =1,!EkG rpm -i [install-options] package_file
$*G3'G2'iS rpm --install [install-options] package_file
p0 X%^A,4
rP'%f 6 示例:
$.pCoS]i =WUL%MfW [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
vR:#g;mnk package lynx-2.8.5-18 is already installed
%6 Av1cv [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
s|H7;.3gp --------------------------------------------------------------------------------
Pe,k y>ow ^7/v[J<< S+~;PmN9qL 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
x%r$/= ~dEo^vJD rpm -U [install-options] package_file
}dzVwP= rpm --upgrade [install-options] package_file
j@(S7=^C6% 5hy7}*dR 示例:
NZv 8# Z2m^yRQ( 先安装旧版
U5N |2 [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
U ->vk{v APF`b 再安装新版
6]%=q)oL[ [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
P8ej9ULX, gh*k\0 显示出新版本信息
]gVA6B?&9 [root@localhost ~]# rpm -q lynx
hG.}>(VV lynx-2.8.5-18
<Tjhj* ] 9C)F*r7 说明:
QxLrpM"O -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
Yb5@W/' VnSO>O 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
7F>]zrbK --------------------------------------------------------------------------------
eA(\#+)X ` Ncbe{}<md O0z-jZ,]) 刷新的语法是:
h ChO ]}].Aq rpm -F [install-options] package_file
NpZ'pBl 9ThsR&h3 rpm --freshen [install-options] package_file
5JVBDA^#om guYP| 示例:
75^*4[ Gdb0e]Vt+ 从未安装过lynx包,使用-F选项,将无法升级。
GY-4w@Wl r+[g.` [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
K/C} [root@localhost ~]# rpm -q lynx
:KvZP:T package lynx is not installed
&$CyT6mb^ --------------------------------------------------------------------------------
~s4JGV~R 6x(b/`VW @q<h.#9 安装和更新选项为:
X%-hTl CPNV\qCY --allfiles
.O0eSp|e 安装或更新所有文件。
j -o 4`#%<G --badreloc
eyDI>7W 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
EJC}"%h um]*nXIr --excludedocs
rjcH[U( 不安装任何文档文件。
rt vLLOIO |>j^$^l~ --excludepath path
Et*LbU 不安装文件名以path开始的任何文件。
"7+^`? 4IfkYM --force
w/o8R3F 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
9m>L\&\_e `k
I}p -h,--hash
KS~Q[-F1P 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
g=4P-i3 `O3#/1+ --ignorearch
h6LjReNo 即使二进制包用于不同的体系结果也进行安装。
t"%~r3{ Bq~S=bAB>R --ignoreos
otjT?R2g' 即使操作系统不匹配也安装二进制包。
2ALYfZ|d d:&cq8^ --ignoresize
!?i9fYu 安装前不检查磁盘的可用空间。
2xuU[ mXJG &EA --includedocs
gf9,/m 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
78xiT 6@^
?dQ --nodeps
U/q"F<?.c 不检查这个包是否依赖于其他包的存在。
$?kTS1I( fvTp9T\f3 --noorder
~rOvVi&4 安装之前,不为了满足依赖关系而对包进行重新排序。
J^` pE^S )06. dZq\ --noscripts
L~|_)4 不执行任何预安装或后安装脚本。
.ejC#vB{KM t9W* N\ --notriggers
2g)q
( 不执行任何由包安装触发的脚本。
Sb?v5 K~UT@,CS60 --oldpackage
iuEe#B;! 允许升级以用旧包替换新包。
PB8U+ k~<ORnda --percent
L-|7
& 当文件被解压时输出完成百分比的信息。
<Vyl*a{% /*S6 /# --prefix path
}F V_jJ 把可重定位包的安装前缀设置为path。
'#lEUlB 3WkrG.$[b --replacefiles
aFrZ
;_ 即使包替换了来自其他安装包的文件,也安装这些包。
M#],#o*G u`+kH8# --replacepkgs
/6N!$*8 即使某些包已经被安装,也安装他们。
/WAOpf5 `a7b,d --test
%I)*5 M6 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
O'~^wu. <3k9 y^0 --------------------------------------------------------------------------------
2rP!] zBrqh9%8e r)qow.+& 查询
$I4JKh J(,gLl query命令的语法为:
}`$({\^w M|z4Dy rpm -q[information-options] [package-options]
.0y .0=l rpm --query[information-options] [package-options]
x*^)B~7} 1G, ' 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
GV)DLHiyxX --------------------------------------------------------------------------------
N':d
T c&L|e$C] +{e2TY 以下简单示演示一下包查询:
b Oh[(O! jvE&%|Ngw 简单查询:
Xdf;'|HO %8%0l*n' 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
J]*?_>"#8 PTA_erU 示例:
vN)l3 Kzfy0LWM [root@localhost ~]# rpm -q lynx
#|l# lynx-2.8.5-18
g31\7\)Ir --------------------------------------------------------------------------------
)Oj%3 pEGHW; ^zS|O]Tx 信息查询:
~ln96*)M; P.t7_v> rpm -qi packagename命令可以得到安装包的汇总信息。
x5W@zqj RjR 示例:
r<kqs,-~ [root@localhost ~]# rpm -qi lynx
~rz%TDX0\ Name : lynx Relocations: (not relocatable)
\9.@Tg8` Version : 2.8.5 Vendor: Red Hat, Inc.
v.H@Ey2 Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
hKK"D:?PRs Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
o:/ymeG Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
fJG!TQJ[Y Size : 4837340 License: GPL
Ria*+.k@"B Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
]:]w+N%7 Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> <m?/yREK2 URL :
http://lynx.isc.org/ dy0xz5N- Summary : 一个基于文本的网页浏览器。
y"0!7^ Description :
uchz<z1 Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
.sPa${ 图像,但是它支持框架、表格、以及多数其它 HTML
Ba|76OBRJ 标签。Lynx 优于图形化浏览器的地方是它的速度――
$k3l[@;hE Links 能够快速启动、退出、及显示网页。
71yf+xL 标识拥有者
`>}e 5 --------------------------------------------------------------------------------
Zo5.Yse v/7iu*u F,
p~O{
Q 找出什么包拥有文件file:
a<Ptm(, jP"='6Vrw 示例:
)VR/a }%eXGdC [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
ww{07g lynx-2.8.5-18
Y)v_O_` --------------------------------------------------------------------------------
wd~!j&`a 3HmJixy SE!0f& 列表包中的文件:
m&r