Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
A;co1,]gR $H<_P'h-B 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
!VD$uT (HAdr5 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
ygz2bHpD~ lQIg0G/3 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
mB`HPT --------------------------------------------------------------------------------
D?KLV_Op NS[ Z@@ Ku[q#_7 以下简要介绍RPM包的安装,删除和查询
LphCx6f,X $<-a>~^Tp RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
OLG)D#m(4/ rmjuNy=( rpm命令的格式为:
=oSD)z1c?x +L 09^I rpm [options] [packages]
4Wl`hF Es[3Ppz 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
{QEvc ;6V~yB 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
3~sV- --------------------------------------------------------------------------------
_{o 3 y"DZ !!.@F;]W jZ~girA RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
o6u^hG6~' Mc?_2<u- 以下为rpm --showrc命令显示的节选:
3Dr\ O_`u )v(rEY 示例:
"-:H$ ,zjz "7' 此为部分显示结果
Y~Uf2(7b5 [root@localhost ~]# rpm --showrc
/
B!j`UK ARCHITECTURE AND OS:
$?ss5:
S build arch : i386
%g?M?D8Ud3 compatible build archs: athlon i686 i586 i486 i386 noarch
v}!lx)# build os : Linux
=sWK;` compatible build os's : linux
5B~]%_gZr install arch : athlon
HL{aqT2 install os : Linux
<8(q. compatible archs : athlon i686 i586 i486 i386 noarch
ftn10TO * compatible os's : linux
@0@WklAJA RPMRC VALUES:
/R|?v{S1 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
Da<`|
l optflags : %{__global_cflags} -m32 -march=athlon
@Mya|zb Features supported by rpmlib:
B}7j20:Z rpmlib(VersionedDependencies) = 3.0.3-1
Ifp8oL? S; PreReq:, Provides:, and Obsoletes: dependencies support versions.
%0&,_jM/9 rpmlib(CompressedFileNames) = 3.0.4-1
5]G%MB/|$ file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
U2`:' rpmlib(PayloadIsBzip2) = 3.0.5-1
VK/L}^=GOO package payload can be compressed using bzip2.
U9BhtmY --------------------------------------------------------------------------------
%]F/!n
6(7
56 J[}j8x?r rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
!}}
)f/ hvI#D>Z!Yp 示例:
q>+!Ete1p V1,p<>9 [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
U^}7DJ Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
)W_akUL Preparing... ########################################### [100%]
BuvnY 1:lynx ########################################### [100%]
ByE@4+9 --------------------------------------------------------------------------------
zZd.U\"2 Swf%WuDj xm=Gt$>.o 以下列出一些通用选项(可以用于所有模式):
OeGLMDw n3?
msY(* --dbpath path
LT)I
?ud 用path作为RPM数据库的路径。
jjrE8[ i\uj>;B --ftpport prot
mCn:{G8+ 用port作为FTP端口。
vMY!Z1.* M:.+^.h --ftpproxy host
O=LW[h! 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
<^$ppwk$ oumbJ7X=L --help
P];0,;nF 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
W NeBthq6 nWc@ufY --justdb
HS*Y%* 只更新数据库;不改变任何文件。
$U/lm;{% B&7:=t,m( --pipe command
k&L/JzzI 用管道把rpm输出到commond。
#""T>+ R@uA4Al --quiet
r#oJch= 仅显示错误信息。
yIr0D6L }Z\S__\9 --rcfile filename
Q(Yn8t 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
OVxg9 Xe:rPxZf~ --root dir
J8@.qC'! 在dir目录内执行所有操作。
7}MnvWP Z0v?3v}9^ --version
@@-TW`G7 输出rpm版本号。
F+NX
[ QrFKjmD< -vv
,cS_687o 输出调试信息。
Wt@hST pd`m//G --------------------------------------------------------------------------------
l{]KA4 0Ntvd7"`} t_16icF9U 安装升级和刷新
2wPc
yD jAcKSx$}y" 安装或升级一个RPM包,install命令的语法为:
9
!UNO Zv@
Fr9m rpm -i [install-options] package_file
4Z=`; rpm --install [install-options] package_file
QBi]gT@&g $B<:SuV# 示例:
~H
a9 q:e [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
;!=i|"PG package lynx-2.8.5-18 is already installed
g)ZMU^1 [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
,~1sZ`C --------------------------------------------------------------------------------
01&E.A .#iot(g /d! 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
Og@{6> $`%Om WW{ rpm -U [install-options] package_file
NOkgG0Z rpm --upgrade [install-options] package_file
XjP;O,x imzPVGCD{ 示例:
yH43Yo#Rk @TXLg2 先安装旧版
Ac*J;fI [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
\/\w|j %K=_ 再安装新版
.L;e:cvx [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
@OFxnF` X6(s][Wn 显示出新版本信息
a]%sks [root@localhost ~]# rpm -q lynx
9iM%kY#)W lynx-2.8.5-18
S3WUccv 2P^qZDG 8I 说明:
j`$$BVZ -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
7Nk|9t Y6)o7t 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
bi",DKU{l --------------------------------------------------------------------------------
|Ox='.oIb xYW&Mfka @^.W|Zh[& 刷新的语法是:
VlL%dN;
0 QX<x2U rpm -F [install-options] package_file
[.Kp/,JY 1kvs2 rpm --freshen [install-options] package_file
#,6T. O u-:3C<&> 示例:
; Ad5Jk 5F
^VvzNn 从未安装过lynx包,使用-F选项,将无法升级。
Ks6\lpr /Yg&:@L [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
S ++~w9} [root@localhost ~]# rpm -q lynx
Yc_(g0NK package lynx is not installed
H=f|X<8 --------------------------------------------------------------------------------
]b sabS? 8 Zp^/43 wD{c$TJ?{F 安装和更新选项为:
pz)>y&_o <m1v+cnqo --allfiles
NW 2`)e' 安装或更新所有文件。
%OO}0OW mb1c9 --badreloc
).(y#zJ7P 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
*W^ZXhrZ r;[ =y<Yf --excludedocs
=Tl_~OR 不安装任何文档文件。
m~Q24Z]!'& k1zK3I&c_ --excludepath path
5dE=M};v 不安装文件名以path开始的任何文件。
+
Hv'u (1GU --force
6j6;lNUc 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
fxr#T'i {N/%%O.b -h,--hash
\#B<'J9.` 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
iQ2j ejd3( S
>CKm:7 --ignorearch
Nf3UVK8LtS 即使二进制包用于不同的体系结果也进行安装。
i 61k ^IIy> --ignoreos
kC
6*An_f 即使操作系统不匹配也安装二进制包。
~eoM
2XlW {)!>e --ignoresize
>X05f#c"v/ 安装前不检查磁盘的可用空间。
N8#j|yf v*=P --includedocs
(?JdiY/ 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
|b.xG_-s1 S**eI<QFSk --nodeps
=D Q:0w 不检查这个包是否依赖于其他包的存在。
}(ORh2Ri DR:$urU$ --noorder
zB`woI28 安装之前,不为了满足依赖关系而对包进行重新排序。
4m1r@
$ W [K.|8ho --noscripts
wT::b V{ 不执行任何预安装或后安装脚本。
*pS 7,Hm E8}evi --notriggers
:Z6j5V;s 不执行任何由包安装触发的脚本。
<]LljTm`i c:9n8skE7 --oldpackage
FC,=g`Q! 允许升级以用旧包替换新包。
^9q#,6
uu,F5<y[ --percent
9iZio3m 当文件被解压时输出完成百分比的信息。
d`B<\Y#{Us BU/A\4xQ,Y --prefix path
Wx{E\ l 把可重定位包的安装前缀设置为path。
;t\h"K<,| 6xJffl --replacefiles
X4!7/& 即使包替换了来自其他安装包的文件,也安装这些包。
#H>{>0q PKSfu++Z --replacepkgs
c8JW]A`9b) 即使某些包已经被安装,也安装他们。
4Qfsxg t n5 --test
4r1\&sI$~ 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
&o;0%QgF x
I.W-js[ --------------------------------------------------------------------------------
71c[`h*0{ \{lv~I CG=c@-"n/ 查询
K\F0nToJ. L4g%o9G query命令的语法为:
_f^KP@^j r8Pd}ptPU rpm -q[information-options] [package-options]
JL= c IH8 rpm --query[information-options] [package-options]
chE!,gik rXX>I;`& 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
D'#Q`H --------------------------------------------------------------------------------
1I9v`eT4 <GNLDpj S v>6:y9?G 以下简单示演示一下包查询:
k5.5$<< T "lL+Heq>V 简单查询:
-y+>^45 : OY~Q3
@ 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
?W'p&(; !=,4tg` 示例:
"S%t\ `NsjtT'_ [root@localhost ~]# rpm -q lynx
sV lynx-2.8.5-18
.9qK88fU R --------------------------------------------------------------------------------
lZ\8W^ S 13cQ?4 Y$r78h=4 信息查询:
Iv6 q(c d qn5G!fI rpm -qi packagename命令可以得到安装包的汇总信息。
lrT2*$ w3 kW g.-$pp 示例:
WKEb
'^ [root@localhost ~]# rpm -qi lynx
dq[h:kYm Name : lynx Relocations: (not relocatable)
FLqN3D=yQ Version : 2.8.5 Vendor: Red Hat, Inc.
f
V. c6 Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
!.]JiT'o Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
7z{wYCw Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
-1g:3'%
P Size : 4837340 License: GPL
8-#%l~dr Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
$RPW/Lyiq Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> }~XWtWbd- URL :
http://lynx.isc.org/ BPba3G9H Summary : 一个基于文本的网页浏览器。
Iry$z^ Description :
jmM|on! Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
O<gfZ> 图像,但是它支持框架、表格、以及多数其它 HTML
LwH#|8F 标签。Lynx 优于图形化浏览器的地方是它的速度――
7^q~a(j Links 能够快速启动、退出、及显示网页。
$1an#~ 标识拥有者
hArY$T&MB --------------------------------------------------------------------------------
$<^t][{ C9n%!()> ,S8 K! 找出什么包拥有文件file:
QU|_
r2LM ut{T:kT 示例:
*U?O4E9 :gh[BeqQ) [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
\*xB<mq lynx-2.8.5-18
Kx__&a --------------------------------------------------------------------------------
Ey46JO" 5'~_d@M =!O->C: 列表包中的文件:
]A#lV$ *T|B'80 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
{4 Of. 6o3
bq| 示例:
> VG *eVq(R9?T 此为部分显示结果
XpIiJry!6 [root@localhost ~]# rpm -ql lynx
/:&!o2&1H /etc/lynx-site.cfg
Zp_(vOc /etc/lynx.cfg
I2ek`t] /etc/lynx.cfg.cs
U@lc1# /etc/lynx.cfg.ja
@
D+ftb/ /etc/lynx.cfg.sk
*2'8d8>R%] /usr/bin/lynx
kIrrbD /usr/share/doc/lynx-2.8.5
DX>a0-Xj /usr/share/doc/lynx-2.8.5/INSTALLATION
pm&THd /usr/share/doc/lynx-2.8.5/README
{|+Y;V` /usr/share/doc/lynx-2.8.5/docs
5\- uo /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
Y Y:BwW: /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
^rkKE
dd /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
e%4?-{( /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
=P-&dN /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
DHidI\*gT /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
qfkHGW?1/j /usr/share/doc/lynx-2.8.5/docs/CMU.announce
l^B.iB /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
x%P|T3Qy5 /usr/share/doc/lynx-2.8.5/docs/FM.announce
"q4tvcK. /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
-+9[X*VCc /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
85{m+1O~ /usr/share/doc/lynx-2.8.5/docs/README.TRST
&v\F ah U /usr/share/doc/lynx-2.8.5/docs/README.chartrans
T X`X5j 5/48w-fnZ --------------------------------------------------------------------------------
9N]Xa ^6 6!f 5^W >%JPgr/
8 列出包所提供的实际能力:
rCyb3,W 4DXbeQs: --provides选项的作用是列出这个包所提供的实际能力。
#u<Qc T@ 3JoY- 示例:
-!\3;/ ]AP1+
&9fN [root@localhost ~]# rpm -q --provides lynx
><%585 config(lynx) = 2.8.5-18
~Eut_d webclient
yev!Nw lynx = 2.8.5-18
D{|q P
nE4 --------------------------------------------------------------------------------
f49kf** *2X6;~ rvA>khu0/ 列出这个包所倚赖的任何包:
-"(*'hD wak 26W>I3 -R,--requires选项的作用是列出这个包所依赖的任何包。
1I Yip\:lS urp|@WZ 示例:
c,UJ uCZ r4.6W[|d [root@localhost ~]# rpm -qR lynx
SNEhP5! /bin/sh
-luQbGcT3 config(lynx) = 2.8.5-18
ia6 jiW x indexhtml
, ,3lH-C libc.so.6
PN}+LOD<t libc.so.6(GLIBC_2.0)
#mH@ /6,#[ libc.so.6(GLIBC_2.1)
:,BAw , libc.so.6(GLIBC_2.2)
5Iu5N0cn libc.so.6(GLIBC_2.3)
bT,:eA libcrypto.so.4
tMr7d libncursesw.so.5
&|SWy
2N libssl.so.4
]A4=/6`g?b libz.so.1
{+N<
9(O rpmlib(CompressedFileNames) <= 3.0.4-1
Z:b?^u4. rpmlib(PayloadFilesHavePrefix) <= 4.0-1
EZtU6kW" --------------------------------------------------------------------------------
Xj?Wvt QxT'\7f ~C-Sr@ a?/ 列出包中的配置文件
6)HmE[[F ~cz}C("Z -c,--configfiles选项的作用是列出包中的配置文件
!}*N'; ,(jJOFf 示例:
{1GJ,['qL ;qx#]Z0 < [root@localhost ~]# rpm -qc lynx
8&QST!JGSX /etc/lynx-site.cfg
C|{Sj`,XG /etc/lynx.cfg
9t! d.} /etc/lynx.cfg.cs
AbU`wr/h 4 /etc/lynx.cfg.ja
HKN|pO3v /etc/lynx.cfg.sk
%V_ XY+o --------------------------------------------------------------------------------
dQX-s=XJ D{9a'0J egmUUuO 显示有关于包的改变信息的日志:
zcpL[@B '.}}k!# --changllog选项的作用是显示有关于包的改变信息的日志。
w7)pBsI ~Ps *i]n( 示例:
/SvhOi g`EZLDjt 此为部分显示结果
w0QtGQ| [root@localhost ~]# rpm -q --changelog lynx
rcnH ^P * 五 7月 09 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-18
.5JIQWE( - Removed perl dependencies (bug #127423).
= XZU9df * 三 6月 16 2004 Elliot Lee <
sopwith@redhat.com>
Khq\@`RaT - rebuilt
ci,(]T+! * 三 5月 26 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-16
$`pf!b2Z - No longer need lynx-284-ipv6-salen.patch.
"tEp8m - No longer need lynx2-8-2-telnet.patch.
1N5
E * 六 2月 14 2004 Elliot Lee <
sopwith@redhat.com> 2.8.5-15
wl=tN{R - rebuilt
NP>v@jO * 二 12月 02 2003 Tim Waugh <
twaugh@redhat.com> 2.8.5-14
.EYL - Updated to dev16, fixing bug #110196.
o.s'0xP] - No longer need crlf patch.
(6,:X - Use shipped ja translations.
AvL /gt: - Use %find_lang.
>}k*!J| - Default config file now sets UTF-8 (bug #110986).
!&)X5oJ --------------------------------------------------------------------------------
" <bjS ]+lT*6P* (6%T~|a 包选择选项
3j#VKj+Uc H4i}gdR package_name
N$=YL
@m8 查询已安装包的package_name。
,@Csa# ;W0J -a,--all
0 '&C5v' 查询所有已安装拨。
g%2G=gR$?z 'afW'w@ -f file,--file file
m:_#kfC&K" 找出什么包拥有文件file。
v[CR$@Y qxRsq&_ -g group,--group group
lL}6IZ5sb 找出什么包拥有组group。
6:_~-xG 3mgvWR -p package_file
k-$Acv( 查询未安装包package_file
_z_YJ7A> `&;#A*C0 --querybynumber num
U$:^^Zt`B 查询第num个数据库条目。主要用于调试。
!D22HSv(w l|g*E.:4 -qf,--queryformat num
lp*5;Ls'q 指定显示查询结果时所采用的格式,使用标记来表示不同的数据类型(NAME,FILENAME,DISTRIBUTION)。格式说明是标准printf格式化的一个变体。
NF$6yv9C %Tp9GGt --specfile specfile
#rHMf%0 查询specfile,就好象它是个包
OPvPP>0*8 at>_EiS --triggeredby pkg
NT6jwK.?)? 列出触发安装pkg包的包。
sbvP1|P8% (nqhX<T> --whatrequires capability
jMT[+f 列出要求特定能力来行使职责的包。
r$<!?Z -J]?M --whatprovides capability
0GMb?/
列出提供特定能力的包。
+:A `e+\ --------------------------------------------------------------------------------
6Dd>ex!-A k_g@4x1y* <?7CwW 信息选择选项:
Z@Rqm:e /X8a3Eqp9 -c,--configfiles
mtUiO
p 列出包中的配置文件。
COi15( G2 m?-)SA --changelog
w+m7jn!$ 显示有关于包的改变信息的日志。
5N9Cd[4 `JIp$ -d,--docfiles
9G6)ja?W 列出包中的文档文件。
dcKpsX
u7!gF&tA --dump
2_$8Ga 转储包中每个文件的信息。这个选项必须至少与-l,-c或-d之一共同使用。
eKP>}` 以下列顺序输出信息:
1^IMoC7$# path size mtime md5sum mode owner group isconfig isdoc rdev symlink
AyJl:aN^ 5a |[cR --filebypkg
51:5rN(_ 列出每个包中的所有文件。
df{?E): n%r>W^2j -i
lG6&uMvo 显示包的信息,包括名字,版本和描述。
lB}?ey .J.}}"+U -l,--list
:7@[=n 列出包中所有文件
8hV]t'/; uVYn,DB` --last
:b9#e g 根据安装时间列出包,最新的包排第一位。
<B%wq>4S b'(AVA --provides
03?ADjO 列出这个包所提供的实际能力。
a,rXG _9oKW;7f7 -R,--requires
6I[*p0j5 列出这个包所依赖的任何包。
mI2Gs)SO |A4B4/! -s,--state
t{,$?} 列出包中的每个文件及其状态。可能的状态为normal,not installed或replaced。
2NFk#_9e~ -cUW,>E --scripts
:] Wn26z) 列出任何在安装和卸载过程中所使用的包特定的shell脚本。
"]^U(m>f w !kk(QMV --------------------------------------------------------------------------------
+sJ{9# 6 fe\'N4 8y<mHJ[B 卸载
A._CCou xK8m\=# uninstall命令的语法为:
NO/$}vw 52^3N>X4X rpm -e package_name
N+V#=Uy rpm --erase package_name
Ob%iZ.D|3< [voc_o7AI 示例:
S|d /?}C|e d%@0xsU1 [root@localhost ~]# rpm -e lynx
VK4UhN2 [root@localhost ~]# rpm -q lynx
l="(Hp%b package lynx is not installed
qY&(O`?m& --------------------------------------------------------------------------------
Cpzd k~+H tzl,r"k3 i K@RQi 卸载选项为:
+;H=_~b `-nSH)GBM --allmatches
TrZ!E`~ 删除包的所有版本。应该只指定一个包,否则会导致错误。
kW+>"3 =Q"thsR --nodeps
<S_0=U 在卸载包之前不检查依赖性。
[YQtX_;w oCwep^P(v --noscripts
;E}&{w/My 不执行任何预卸载和后卸载脚本。
x~l"'qsK 2SC'Z>A --notriggers
p;[.&oJ 不执行任何由这个包的删除而出发的脚本。
H/f}tw ,>g(%3C --test
PazWMmI 不真正卸载任何包,仅仅查看活动过程。