Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
Y<:%_]] n0 _:!]k^ 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
ml.l( 6A iBwl(,)?m2 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
l6Ze6X I ?JzLn,& 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
g?A4C`l6iy --------------------------------------------------------------------------------
J*U,kyYF j7<`^OG knh^q;q* 以下简要介绍RPM包的安装,删除和查询
mV@.JFXKP "Vho`x3 RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
y^Oj4Y: 8^\DQ&D rpm命令的格式为:
?'P8H^K6u xE;4#+_I rpm [options] [packages]
jbpnCUzi %FT F 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
tNjb{(eO\h {G&K_~Vj 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
Tcz67&c |W --------------------------------------------------------------------------------
gdSv)( Z$X2*k6PK 37?%xQ! RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
?T7`E q Lx8^V7X 以下为rpm --showrc命令显示的节选:
L:%ek3SOz PQWo<Uet 示例:
v[e$RH &sR{3pC} 此为部分显示结果
7`6n]4e [root@localhost ~]# rpm --showrc
J^hj
R%H ARCHITECTURE AND OS:
S-gL]r3G8 build arch : i386
?#ndMv!$ compatible build archs: athlon i686 i586 i486 i386 noarch
aN).G1 build os : Linux
L;Nz\sJ compatible build os's : linux
#?}k0Y install arch : athlon
yf*MG&} install os : Linux
~)tIO<$U compatible archs : athlon i686 i586 i486 i386 noarch
Pw1V1v&>q compatible os's : linux
$ n`<,;^l RPMRC VALUES:
#lM!s 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
Mto3Ryic! optflags : %{__global_cflags} -m32 -march=athlon
W>wIcUP<< Features supported by rpmlib:
%LXk9K^]e rpmlib(VersionedDependencies) = 3.0.3-1
t&mw@bj PreReq:, Provides:, and Obsoletes: dependencies support versions.
Z7JI4" rpmlib(CompressedFileNames) = 3.0.4-1
+NxEx/{ file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
*hF5cM[ rpmlib(PayloadIsBzip2) = 3.0.5-1
L,[0*h package payload can be compressed using bzip2.
p
W:[Q\rSj --------------------------------------------------------------------------------
^.mQ~F >sm<
< gVb 1'"o; a]k/ rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
L/%3_, ~4=4Ks0 示例:
&1F)/$,v _{_LTy%[ [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
9^4^EY# Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
k^ B'W{ Preparing... ########################################### [100%]
KG'4;Z5J 1:lynx ########################################### [100%]
d5T0#ue/e --------------------------------------------------------------------------------
uWG'AmK_#E isj<lnQ NlU:e}zGR 以下列出一些通用选项(可以用于所有模式):
16ke CG\ J}i$ny_3OB --dbpath path
$T^O3 8$ 用path作为RPM数据库的路径。
8|d lt$ j08G-_Gjn --ftpport prot
FnP/NoZa> 用port作为FTP端口。
1mJBxg}( `;(/Wh --ftpproxy host
U/&?rY^| 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
$ZK4Ps -$ !
D'U:) --help
pb{'t2kk 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
uCNQ.Nbf C cwz
% LKh --justdb
KB&t31aq 只更新数据库;不改变任何文件。
@>qzRo Pgr>qcbql --pipe command
wQ2'%T|t 用管道把rpm输出到commond。
y
8];MTl 'hVOK(o0 --quiet
:?RooJ~# 仅显示错误信息。
hK@1
s ORv[Gkq_N) --rcfile filename
er+m:XuV 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
XsQ<yeun cI?dvfU? --root dir
S@Yb)">ZQ 在dir目录内执行所有操作。
}dAb}0XK. Zul]ekv --version
EqUiC*u8{I 输出rpm版本号。
:QUZ 7^u Dd!MG'%hlb -vv
H6/@loO!Xy 输出调试信息。
hNyYk(t^ @xtcjB9 --------------------------------------------------------------------------------
[@rZ.Hsl
fhL dM OB6I8n XW 安装升级和刷新
l#~Sh3@L( {u9(qd;; 安装或升级一个RPM包,install命令的语法为:
hAfR Hd )}~k7bb}Y rpm -i [install-options] package_file
NX@TWBn% rpm --install [install-options] package_file
vo!:uvy;2 dB<BEe\$g. 示例:
Z A1?' ,
y{o!w [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
8s?;<6 package lynx-2.8.5-18 is already installed
6 [a CjW [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
Ny*M{}E --------------------------------------------------------------------------------
%a8'6^k C(}9 b\UQ6V 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
fR5
NiH s]5wzbF O rpm -U [install-options] package_file
@K4} cP rpm --upgrade [install-options] package_file
@s/;y VVq x\3 ` W 示例:
qoB O*H:CW 先安装旧版
MO9}Itg [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
xPQO}wKa 0Ny0#;P
再安装新版
+@Fy) {C7 [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
OZ![9l }!Qo
wG 显示出新版本信息
.3{S6# [root@localhost ~]# rpm -q lynx
d+fmVM?p lynx-2.8.5-18
70lb6A O7s0M?4 说明:
#T#&qo# -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
z.e%AcX R(k6S 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
gBYL.^H^l --------------------------------------------------------------------------------
_f|Au`7m DcSL f4A C(?>l.QGw 刷新的语法是:
;)0vxcMB kQ.atr`? e rpm -F [install-options] package_file
EVgn^, T"kaOy rpm --freshen [install-options] package_file
mRj-$:}L rU<
H7U 示例:
x:xKlPGd Ad@))o2 从未安装过lynx包,使用-F选项,将无法升级。
eff6=DP w]tv<U={ [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
Eqp?cKrji [root@localhost ~]# rpm -q lynx
Mr2dhSQ! package lynx is not installed
Fdm7k){A --------------------------------------------------------------------------------
XXuU@G6Z7$ cX7xG U >p\IC 安装和更新选项为:
0z#+^
75!IzJG --allfiles
&m>`+uVBP 安装或更新所有文件。
C.8]~MP ?.\CUVK --badreloc
>bz}IcZP 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
IJS9%m# }`5%2iG --excludedocs
fAUtqkB 不安装任何文档文件。
(}4tj4d \dIIZSN --excludepath path
@,M !&l 不安装文件名以path开始的任何文件。
P8DJv-f` {*
>$aI --force
^CZn<$ 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
;?= ] ffa{ \ts:' -h,--hash
Va(R*38k 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
B*Hp nt "VH5 --ignorearch
6/nhz6= 即使二进制包用于不同的体系结果也进行安装。
<G 2;nvRr 3t68cdFlz --ignoreos
zhHQJcQ. 即使操作系统不匹配也安装二进制包。
W
qci51y># )P:TVe9` --ignoresize
Y_Ej-u+>{ 安装前不检查磁盘的可用空间。
ouVR[w>V kn+`2-0 --includedocs
^uIZs}=+ 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
wbd>By(T1 -H Zvz[u --nodeps
O:xRUjpL 不检查这个包是否依赖于其他包的存在。
)w;XicT q6H90Zb --noorder
t+m$lqm 安装之前,不为了满足依赖关系而对包进行重新排序。
aWOApXJ ^YenS6`F --noscripts
~`T(mh', 不执行任何预安装或后安装脚本。
j\@s pbE@ iknB c-TLD --notriggers
9Hlu%R 不执行任何由包安装触发的脚本。
hd/5*C{s 9p2"5x --oldpackage
[5 a`$yaQ 允许升级以用旧包替换新包。
j,EE`g& sKn>K/4JZ --percent
:E4i@ O7% 当文件被解压时输出完成百分比的信息。
e#FaK^V :ozHuHJ# --prefix path
D~NH 4B 把可重定位包的安装前缀设置为path。
> ^n' f`/JY!uj{ --replacefiles
;oob
TW{ 即使包替换了来自其他安装包的文件,也安装这些包。
saU|.\l <MT_zET --replacepkgs
~u,g5 即使某些包已经被安装,也安装他们。
g 4Vt"2| 1swh7 --test
d/Zt}{ 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
lNqXx{!k 3_^w/-7`B --------------------------------------------------------------------------------
5T8X2fS: 5_G7XBvD/w kW6}57iV 查询
^a<=@0| WAqR70{KM query命令的语法为:
#mx;t3ja7 >@h0@N rpm -q[information-options] [package-options]
(;~[}" rpm --query[information-options] [package-options]
sl |S9Ix akJ{- 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
mQVduG --------------------------------------------------------------------------------
1m}'Y@I F4kU) i &rcr])jg[ 以下简单示演示一下包查询:
W
86S)+h U
NQup;#h 简单查询:
9XobTi3+' F ypqf| 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
MI',E?#yB FE/&<g0,: 示例:
;S,g&%N AWD &K! [root@localhost ~]# rpm -q lynx
={={W lynx-2.8.5-18
T_v --------------------------------------------------------------------------------
ou,W|<% x9-K}s]% wnt^WW=a[ 信息查询:
if#$wm% -7m;rD4J rpm -qi packagename命令可以得到安装包的汇总信息。
k?|VFh1 Lm ,io\z 示例:
f=}u;^ [root@localhost ~]# rpm -qi lynx
]y-r
I Name : lynx Relocations: (not relocatable)
cpu+"/\ Version : 2.8.5 Vendor: Red Hat, Inc.
jDH)S{k Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
I`Rxijz Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
)bPNL$O Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
PeTA:MW Size : 4837340 License: GPL
6Oo'&3@ Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
^h^j:!76j Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> +n2x@ 0op URL :
http://lynx.isc.org/ ;E*^AW Summary : 一个基于文本的网页浏览器。
9L!Vj J Description :
4.H!rkMM Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
<XCH{Te1 图像,但是它支持框架、表格、以及多数其它 HTML
47$JN}qI0 标签。Lynx 优于图形化浏览器的地方是它的速度――
-?LSw Links 能够快速启动、退出、及显示网页。
xv4nYm9 标识拥有者
z)QyQ --------------------------------------------------------------------------------
i,;Q }Z0)FU+ -cY/M~ 找出什么包拥有文件file:
0A5xG& {D`F$=Dlw 示例:
'DntZK aW w`v[v [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
LT'#0dCC lynx-2.8.5-18
.Ddl.9p5 --------------------------------------------------------------------------------
*zz/U
(9D ]r|.\}2Y7 BN#^
/a- 列表包中的文件:
mI0|lp 1$ ks(PH6:]< 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
pSV
8! z81I2?v[Jr 示例:
BtU,1`El5 r~t&;yRv 此为部分显示结果
4XX21<yn [root@localhost ~]# rpm -ql lynx
Fo~C,@/Qt /etc/lynx-site.cfg
p)TH^87 /etc/lynx.cfg
'y'>0'et /etc/lynx.cfg.cs
c{FvMV2em /etc/lynx.cfg.ja
>A2&
Mjo /etc/lynx.cfg.sk
`DWzp5Ax /usr/bin/lynx
AbcLHV. /usr/share/doc/lynx-2.8.5
bs_I{bCu? /usr/share/doc/lynx-2.8.5/INSTALLATION
_ogT(uYyr /usr/share/doc/lynx-2.8.5/README
60X B /usr/share/doc/lynx-2.8.5/docs
^+,mxV'8! /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
#i)h0ML/e /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
M{O2O( /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
5
0~L(< /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
{(xNC#
/usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
Ai#W.
n /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
#-e3m/> /usr/share/doc/lynx-2.8.5/docs/CMU.announce
f"k/j?e* /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
j}0*`[c /usr/share/doc/lynx-2.8.5/docs/FM.announce
^0X86 /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
T3M 4r| /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
QI`Z[caF /usr/share/doc/lynx-2.8.5/docs/README.TRST
XUW~8P /usr/share/doc/lynx-2.8.5/docs/README.chartrans
OP:;?Fs9` tb0s+rb --------------------------------------------------------------------------------
(">!vz <C CEqY4 xA&