Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
9^3y\@ m ]7fqVOiOu 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
\<]nv}1O '$UlJDZ 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
{*r*+}@ weEmUw Z 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
,q] Wi# --------------------------------------------------------------------------------
hCQzD2 l(-6pP5` XnHcU=~q 以下简要介绍RPM包的安装,删除和查询
c8v+eyn kQxY"HD RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
!NUsfd ek1YaE rpm命令的格式为:
6'3@/. xvOGE]n rpm [options] [packages]
(~}IoQp> }mQ7N&cC 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
.|`JS?L[ }la\?I 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
#s'9Ydd --------------------------------------------------------------------------------
7WK^eW"y8 nTxeV% Mqc" RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
={,\6a|]: `_Iy8rv:P 以下为rpm --showrc命令显示的节选:
COPH)Bdq. 5q?2?j/h 示例:
O.61-rp J2A+x\{< 此为部分显示结果
69#mj*p@+ [root@localhost ~]# rpm --showrc
4C@ .X[r ARCHITECTURE AND OS:
kA3nhBH build arch : i386
#oBM A compatible build archs: athlon i686 i586 i486 i386 noarch
vv='.R, D build os : Linux
dK41NLGQ compatible build os's : linux
k`BS{,= install arch : athlon
:n,x?bM install os : Linux
<-DQ(0xg compatible archs : athlon i686 i586 i486 i386 noarch
5><T#0W? compatible os's : linux
g&rz*)|/ RPMRC VALUES:
6[,7g&C 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
Gdz* optflags : %{__global_cflags} -m32 -march=athlon
'fYF1gR4 Features supported by rpmlib:
e F)my rpmlib(VersionedDependencies) = 3.0.3-1
iu.Jp92 PreReq:, Provides:, and Obsoletes: dependencies support versions.
89j*uT rpmlib(CompressedFileNames) = 3.0.4-1
q[(1zG%NbA file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
On0,#i= rpmlib(PayloadIsBzip2) = 3.0.5-1
)jjL' package payload can be compressed using bzip2.
7c!#e=W@B --------------------------------------------------------------------------------
]app 9 jLn|zK B'I_i$g4w rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
tgj5l#P yO`
|X 示例:
iB5q"hoZC ZK h4:D [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
]xGpN ]u Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
aeDhC#h Preparing... ########################################### [100%]
=7[}:haB{ 1:lynx ########################################### [100%]
1p8pH$j' --------------------------------------------------------------------------------
-O\fy! 6xFchdMG{m $>T(31)c 以下列出一些通用选项(可以用于所有模式):
MDBqIL]Hc N' CWSf.e --dbpath path
^<_rE- k 用path作为RPM数据库的路径。
%Fx^" 5uV_Pkb?8 --ftpport prot
tt|P-p- 用port作为FTP端口。
xo4lM y&/bp<Z --ftpproxy host
vdigw.=z 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
CF:L#r M9G?^mW1sT --help
E;,__ 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
NkoyEa/^[ S$gLL kD1 --justdb
G7i0P j 只更新数据库;不改变任何文件。
Sk-Q 4D^ tN.$4+ --pipe command
!MVf(y$ 用管道把rpm输出到commond。
0+&K; -3 Sb%V\ --quiet
_ gGA/ 仅显示错误信息。
,f@j4*) oF a,IA --rcfile filename
@R<z=n" 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
z]KJ4 !pC`vZG" --root dir
e.^?hwl 在dir目录内执行所有操作。
KyQTrl.qdl 'h^Ya?g --version
e
tL?UF$ 输出rpm版本号。
Mp=T;Nz =k,?+h~ -vv
6=qC/1,l 输出调试信息。
dkY JO! YQyI{ --------------------------------------------------------------------------------
!D ?(}nag @eDs)mY y^[t3XA6Q 安装升级和刷新
?!<Q8= ^vTx%F 安装或升级一个RPM包,install命令的语法为:
`%^w-' ;<mcvm rpm -i [install-options] package_file
~]].i~EV( rpm --install [install-options] package_file
cLRzm9 >ts}\.(] 示例:
WnOvU<Z
< D?UURUR f [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
!@wUARQ package lynx-2.8.5-18 is already installed
!* KQ2#e [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
?6>*mdpl --------------------------------------------------------------------------------
kr@!j@j$ Ekik_!aB j8
`7)^ 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
Bo14t*( N=7iQ@{1 rpm -U [install-options] package_file
|@d}O8 rpm --upgrade [install-options] package_file
%Ofw"W p_%,JD 示例:
p~Cz6n mXS"nd30bD 先安装旧版
H "5,To [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
wnK6jMjkSf zg@i7T 再安装新版
H+-x.l` [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
C9!FnvH ~-y&C% 显示出新版本信息
tN_=&|{WE4 [root@localhost ~]# rpm -q lynx
c~ vql4 lynx-2.8.5-18
]~VuY:abH a7uL{*ZR 说明:
S8+l!$7 -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
\jV2":[%c Oo-4WqRJ 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
&j ;91wEn --------------------------------------------------------------------------------
&<_q00F Qds:*]vGS 'Z=_zG/RX 刷新的语法是:
H=*0KX{ V6_5v+n rpm -F [install-options] package_file
5O]ZX3z> Y<kz+d,C rpm --freshen [install-options] package_file
e=p_qhBt )m+O.`x 示例:
|Kjfh};-C KaS*LDzw 从未安装过lynx包,使用-F选项,将无法升级。
ZXkrFA | "L`BuAB [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
hO{&bY0 [root@localhost ~]# rpm -q lynx
2<h~:
L package lynx is not installed
p:$kX9mT& --------------------------------------------------------------------------------
^c/3!"wK
tS5J{j>T SK&1l`3 安装和更新选项为:
y29G#Y4J [{R>'~ --allfiles
ZR0 OqSp] 安装或更新所有文件。
*93=}1gN n%RaEL --badreloc
X2 ;72 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
ePl+ M lj8ficANo --excludedocs
m8x?`Gw~jw 不安装任何文档文件。
^+-]V9?+ KF@%tR}V{ --excludepath path
#`=>Mza 不安装文件名以path开始的任何文件。
4M|C>My :w
Y%= --force
/.rj\, 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
)?B-en\ n9 FA`e -h,--hash
c yP+a 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
^&y*=6C C`3XOth --ignorearch
Wd(|w8J{a 即使二进制包用于不同的体系结果也进行安装。
'rFLG+W 9!_LsQ\) --ignoreos
Y*Ay=@z=y 即使操作系统不匹配也安装二进制包。
:SO4@JT{W sh0x<_ --ignoresize
)+hJi/g 安装前不检查磁盘的可用空间。
#K$0%0=M p[%~d$JUq --includedocs
a #s
Nd 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
K.&6c,P] |HJ`uGN<b --nodeps
Xkx&'/QG,U 不检查这个包是否依赖于其他包的存在。
bO6cv{>x |F'eT
4 --noorder
hBcklI 安装之前,不为了满足依赖关系而对包进行重新排序。
QkTU@T6>o 9^ C6ZgNS --noscripts
qPUACuF' 不执行任何预安装或后安装脚本。
H15!QxD# 4\ )WMP --notriggers
'Cz]p~oF 不执行任何由包安装触发的脚本。
'cIFbjJ (r'NB --oldpackage
|pU>^ 允许升级以用旧包替换新包。
O| 2Q-
@D *!Dzst-J3 --percent
bM'AD[ 当文件被解压时输出完成百分比的信息。
Em7q@ ^d80\PXz --prefix path
`?JgHk 把可重定位包的安装前缀设置为path。
@@IA35'tc AiZFvn[n8 --replacefiles
<im<(=m9 即使包替换了来自其他安装包的文件,也安装这些包。
=[vT=sHz7 V"\t --replacepkgs
QiB:K Pz[ 即使某些包已经被安装,也安装他们。
[% YCupr# =j}]-! --test
3X%>xUI 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
,9 LLV:E{`p --------------------------------------------------------------------------------
>CNH= ={8ClUV# h<.&,6R 查询
;R|5sCb/m ; v>2z!M query命令的语法为:
|)yO]pB: .gx*gX1< rpm -q[information-options] [package-options]
zJXU>'obe rpm --query[information-options] [package-options]
dsrzXmE0 2;U(r:] 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
qp'HRh@P2: --------------------------------------------------------------------------------
m[(2 rS8/_' %A:<rO85o 以下简单示演示一下包查询:
qL
<@PC.5 VrWQ] L 简单查询:
Hy -)yR mwMu1# 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
s:cJF tvBLfqIr 示例:
!/ dH"h Z78i7k } [root@localhost ~]# rpm -q lynx
WYP\J1sy lynx-2.8.5-18
(N/-blto --------------------------------------------------------------------------------
.l|29{J .wUnN8crQ I[b{*g2Zw 信息查询:
X]n`YF7 {=,G>p rpm -qi packagename命令可以得到安装包的汇总信息。
g-,lY| a {U@"]{3Qx 示例:
;JgSA&'e [root@localhost ~]# rpm -qi lynx
Y]Z& Name : lynx Relocations: (not relocatable)
v;-0^s/P Version : 2.8.5 Vendor: Red Hat, Inc.
xA<-'8ST Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
LpI4R Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
^hr# 1 Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
gPA8A>U)[ Size : 4837340 License: GPL
D=Nt0y Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
\){_\{& Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> K>5bb URL :
http://lynx.isc.org/ VKfpk^rU Summary : 一个基于文本的网页浏览器。
W$Xr:RU Description :
3sIdwY)ZS_ Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
Nq^o8q_ 图像,但是它支持框架、表格、以及多数其它 HTML
*_mER` 标签。Lynx 优于图形化浏览器的地方是它的速度――
Fe+(+ S Links 能够快速启动、退出、及显示网页。
M+^ NF\ 标识拥有者
GT80k]e. --------------------------------------------------------------------------------
L>&{<M_ 8r:T&)v 7xY&7 x(v 找出什么包拥有文件file:
[6
"5 ,\1Rf. 示例:
x^i97dZS^" QFN 9j [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
{X<_Y< lynx-2.8.5-18
H3pZfdh?w --------------------------------------------------------------------------------
#c"05/=A ke KsLrd k^cnNx 列表包中的文件:
T,Q7 YI 44w
"U%+ 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
<g\:By^ ??|,wIRz 示例:
%&lwp ME$J?3r 此为部分显示结果
cVarvueS [root@localhost ~]# rpm -ql lynx
G(o6/ /etc/lynx-site.cfg
Jk:ZO|'Z /etc/lynx.cfg
0S
}\ML /etc/lynx.cfg.cs
7L6^IK /etc/lynx.cfg.ja
M0e&GR8<z> /etc/lynx.cfg.sk
YguW2R=6] /usr/bin/lynx
NXz/1ut% /usr/share/doc/lynx-2.8.5
/,j'Vr\" /usr/share/doc/lynx-2.8.5/INSTALLATION
!\$4A, /usr/share/doc/lynx-2.8.5/README
%U.x9UL /usr/share/doc/lynx-2.8.5/docs
M\Wg|gpy /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
2#CN:b]+ /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
Sht3\cJ8 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
Qw_>
l}k/ /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
e5lJ)_o /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
Q84XmXm| /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
7|[Dr@.S /usr/share/doc/lynx-2.8.5/docs/CMU.announce
/Tw $}8 /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
qC=ZH# /usr/share/doc/lynx-2.8.5/docs/FM.announce
zxd<Cq>d /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
nJ1<8 p /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
:9q|<[Y^ /usr/share/doc/lynx-2.8.5/docs/README.TRST
|TJu|zv^ /usr/share/doc/lynx-2.8.5/docs/README.chartrans
onS4ZE3B 8{7'w|/;.{ --------------------------------------------------------------------------------
up~p_{x)Q O`PQ4Q*F &t'P>6) 列出包所提供的实际能力:
@ kba^z #k!;=\FV --provides选项的作用是列出这个包所提供的实际能力。
})q8{Qj! B <HD 示例:
AvuGAlP -
s{&_]A~ [root@localhost ~]# rpm -q --provides lynx
>=1UhHFNI config(lynx) = 2.8.5-18
6$csFW3R webclient
wLg@BSC. lynx = 2.8.5-18
'k<~HQr --------------------------------------------------------------------------------
K8QEHc: 4s <ZKU [W dxMU 列出这个包所倚赖的任何包:
6}\J-A/ .g=D70 -R,--requires选项的作用是列出这个包所依赖的任何包。
/ >7G <){J|O 示例:
<#T#+uO FuFICF7+C [root@localhost ~]# rpm -qR lynx
u1Wixjd| /bin/sh
.[6T7fdi config(lynx) = 2.8.5-18
gA2]kZg indexhtml
_w%{yF6 libc.so.6
|~Vq"6` libc.so.6(GLIBC_2.0)
),-MrL8c% libc.so.6(GLIBC_2.1)
WtMDHfwqu\ libc.so.6(GLIBC_2.2)
XNl!?*l5?l libc.so.6(GLIBC_2.3)
quq !Jswn libcrypto.so.4
g zyi'K< libncursesw.so.5
}. V!|R, libssl.so.4
bHzH0v]: libz.so.1
Cg^1(dBd[9 rpmlib(CompressedFileNames) <= 3.0.4-1
#/hXcF rpmlib(PayloadFilesHavePrefix) <= 4.0-1
9tCF m.m --------------------------------------------------------------------------------
&Z7 NF| o&?:pE M,DwBEF? 列出包中的配置文件
V%FWZn^ ;W@ -c,--configfiles选项的作用是列出包中的配置文件
w?R#ly h$ $i@IO0 示例:
"^VPe[lA ,T+.xB;Q@ [root@localhost ~]# rpm -qc lynx
4ZT0~37( /etc/lynx-site.cfg
NHaqT@: /etc/lynx.cfg
U%tpNWB /etc/lynx.cfg.cs
)zo:Bo
.< /etc/lynx.cfg.ja
9aY}+hgb# /etc/lynx.cfg.sk
nh/%0=S --------------------------------------------------------------------------------
oJ0ZZu?{D QG;V\2T2[ zj#8@gbh+ 显示有关于包的改变信息的日志:
Yj*!t1qm " VSma --changllog选项的作用是显示有关于包的改变信息的日志。
;:w0%>X^ XchVsA 示例:
'2S?4Z C\1x3 此为部分显示结果
E~c>LF_]Q [root@localhost ~]# rpm -q --changelog lynx
:v 8~'cZ * 五 7月 09 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-18
w(!COu - Removed perl dependencies (bug #127423).
Uk0
0lPG.U * 三 6月 16 2004 Elliot Lee <
sopwith@redhat.com>
sN@=Ri?\ - rebuilt
VNxhv!w * 三 5月 26 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-16
'/<f'R^ - No longer need lynx-284-ipv6-salen.patch.
N=TDywRI - No longer need lynx2-8-2-telnet.patch.
42.y.LtZ * 六 2月 14 2004 Elliot Lee <
sopwith@redhat.com> 2.8.5-15
x^6b$>1 - rebuilt
b("M8}o * 二 12月 02 2003 Tim Waugh <
twaugh@redhat.com> 2.8.5-14
k '-5&Q - Updated to dev16, fixing bug #110196.
^7V{nT@H3 - No longer need crlf patch.
rLI);!^- - Use shipped ja translations.
{3|h^h_R - Use %find_lang.
&>3AL, - Default config file now sets UTF-8 (bug #110986).
JnXVI!+JDL --------------------------------------------------------------------------------
yMK VF`D* \@GKVssw g I@I.=y 包选择选项
p JM&R<i: !)LVZfQ0 package_name
DkeFDzQ5 查询已安装包的package_name。
W$Op/ K]C@seF` -a,--all
;hJz'&UWQ 查询所有已安装拨。
^;.&=3N,+ )|E617g -f file,--file file
"4/J4'- 找出什么包拥有文件file。
!ZzDSQ; Ks\\2$Cm7 -g group,--group group
C0
o 找出什么包拥有组group。
9<-7AN}Z a0
8Wt -p package_file
C=<PYkt,L 查询未安装包package_file
oS#PBql4 XywsjeI4 --querybynumber num
2HF_kYZ 查询第num个数据库条目。主要用于调试。
3\0,>L9ET@ hmr 2(f%U -qf,--queryformat num
,]_<8@R 指定显示查询结果时所采用的格式,使用标记来表示不同的数据类型(NAME,FILENAME,DISTRIBUTION)。格式说明是标准printf格式化的一个变体。
bDT@E,cSi HCZVvsG --specfile specfile
#Mrc!pT]xy 查询specfile,就好象它是个包
u/(~ewI U\x$@J --triggeredby pkg
O7# 8g$ZIv 列出触发安装pkg包的包。
*8I &|)x JNxrs~} --whatrequires capability
ytyB:# J 列出要求特定能力来行使职责的包。
#-8%g{ =a!_H=+4 --whatprovides capability
{Xv0=P 列出提供特定能力的包。
.r\|9 *j< --------------------------------------------------------------------------------
kKz>]t"A ;U]Ym48 k8E{pc6; 信息选择选项:
^!*nhs% jkV9$W0 -c,--configfiles
-xL^UcG0 列出包中的配置文件。
fHiS'R ~UQXt r --changelog
<KBS ;t="1 显示有关于包的改变信息的日志。
}}u16x}*n xzz0uk5
-d,--docfiles
0t2n7Y?N 列出包中的文档文件。
L*(`ccU jhH&}d9 --dump
{wvBs87 转储包中每个文件的信息。这个选项必须至少与-l,-c或-d之一共同使用。
UM:]QbaIn 以下列顺序输出信息:
n<e1=L path size mtime md5sum mode owner group isconfig isdoc rdev symlink
?ZP@H
_w6} "X \Yp_g --filebypkg
t_w2J =2 列出每个包中的所有文件。
#MUY! N^f_hL|:9 -i
IZ<Et/3H 显示包的信息,包括名字,版本和描述。
] ]XXcQ,A YT}ZLx -l,--list
/z`.- D( 列出包中所有文件
BKKW3PT ;L[N.ZY! --last
d'@i8N["{ 根据安装时间列出包,最新的包排第一位。
}h1y^fuGi Hq#q4Y --provides
QB;jZpF 列出这个包所提供的实际能力。
$
D.*r*c6 \hI|I!sDWy -R,--requires
#@L5yy2 列出这个包所依赖的任何包。
ujS C {$Z
S
27 -s,--state
fLZ mQO 列出包中的每个文件及其状态。可能的状态为normal,not installed或replaced。
.S[M:<<* +<bvh<]Od --scripts
HT7I~]W 列出任何在安装和卸载过程中所使用的包特定的shell脚本。
Zmm6&OZ% eh}|Wd7J --------------------------------------------------------------------------------
Mh]4K"cs F0tcVdv ;:/C.%d
卸载
'm0_pM1:D |_ OoD9,M uninstall命令的语法为:
cCs@[D#O1 UJ><B" rpm -e package_name
j{YIVX
rpm --erase package_name
S
9|^VU ce:wF#Qs 示例:
l ;S_ J^S mYbu1542'n [root@localhost ~]# rpm -e lynx
ssAGWP [root@localhost ~]# rpm -q lynx
)JY#8,{w package lynx is not installed
}=A+W2D --------------------------------------------------------------------------------
39A|6>-? q);oO\< =^z*p9ZB 卸载选项为:
^_cR >q:0w{.TU --allmatches
dh~+0FZ{A 删除包的所有版本。应该只指定一个包,否则会导致错误。
jtMN )TM <oE(I)r4, --nodeps
Gj.u/l 在卸载包之前不检查依赖性。
aK%i=6j! GTw3rD^wg --noscripts
drJ<&1O 不执行任何预卸载和后卸载脚本。
U-P\F- )_bR"!Z --notriggers
r&G=}ZMO 不执行任何由这个包的删除而出发的脚本。
G|Du/XYh *
7ki$f! --test
#8!xIy 不真正卸载任何包,仅仅查看活动过程。