Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
Q:_pW<^ (nBJ,v) 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
Ta/G ( Y/
DMQ 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
,iSs2&$m 'kW`62AX 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
7
hnTHL --------------------------------------------------------------------------------
F;q I^{m2 C6'[ Tn #"i}wS 以下简要介绍RPM包的安装,删除和查询
dUjdQ Zpu>T2Tp RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
VJ_E]}H 9Eg'=YJ rpm命令的格式为:
rX;(48Y i>)Whr'e8 rpm [options] [packages]
D\*raQ`n
& k1Ez 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
)-
2^Jvc Yl-09)7s 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
5^*
d4[&+ --------------------------------------------------------------------------------
X/gh>MJJ< ",Q \A I p' /$)klt RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
>2VB.f hCr7%` 以下为rpm --showrc命令显示的节选:
}s{zy:1O >-)i_C2 示例:
z)|56
F7' r T*:1 此为部分显示结果
T w"^I*B [root@localhost ~]# rpm --showrc
DeXnE$XH ARCHITECTURE AND OS:
a |z{Bb build arch : i386
$:
Qi9N compatible build archs: athlon i686 i586 i486 i386 noarch
KsUsj3J build os : Linux
% j^= compatible build os's : linux
1L l@
ocE install arch : athlon
9^
mrsj install os : Linux
f0wQn09 compatible archs : athlon i686 i586 i486 i386 noarch
v`Sllv5bV compatible os's : linux
rxa8X wo8 RPMRC VALUES:
_HGDqjL 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
MHxv@1)K|Y optflags : %{__global_cflags} -m32 -march=athlon
)QI]b4[ Features supported by rpmlib:
W&bh&KzCW rpmlib(VersionedDependencies) = 3.0.3-1
&lGp
/m: PreReq:, Provides:, and Obsoletes: dependencies support versions.
Q`19YX rpmlib(CompressedFileNames) = 3.0.4-1
eKStt|M' file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
NaVZ) rpmlib(PayloadIsBzip2) = 3.0.5-1
L}:u9$w package payload can be compressed using bzip2.
Yj0Ss{Ep --------------------------------------------------------------------------------
H3a}`3}U U4LOe}Ny aNXu"US+Sp rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
%X[|7D- (V e[FhA 示例:
=BX<;vU QKOo
#7 [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
7J>n;8{%? Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
vkBngsS Preparing... ########################################### [100%]
bcj7.rh]'h 1:lynx ########################################### [100%]
9 .%{M#j --------------------------------------------------------------------------------
W"wP% X0U{9zP cm7aL%D$c 以下列出一些通用选项(可以用于所有模式):
EzG7RjW #~p1\['|M --dbpath path
{SROg;vA 用path作为RPM数据库的路径。
vn,L),"= +Do7rl --ftpport prot
ze#LX4b I 用port作为FTP端口。
VK?,8Y Uyi_B.:` --ftpproxy host
=cRJtn 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
M:C*?;K: KZDB \T --help
TR:D 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
"&C'K x%x[5.CT --justdb
c]xpp;% ] 只更新数据库;不改变任何文件。
KgKV(q= o'D6lkf0 --pipe command
0V`/oaW; 用管道把rpm输出到commond。
"t\rjFw 6dg[ --quiet
9"<)DS 仅显示错误信息。
<'B`b C{Npipd}v --rcfile filename
tk,
HvE 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
=<33( vEfX'gyk --root dir
RHB>svT^K> 在dir目录内执行所有操作。
L2K4nTA 0n3O;=[aV --version
yil{RfBEr_ 输出rpm版本号。
Rmd;ug9 GbNVcP.ocP -vv
{d7KJmN 输出调试信息。
0HG*KW q+LjWZ+O --------------------------------------------------------------------------------
P7@qvg +F67g00T| OjZ+gl} 安装升级和刷新
qe\j$Cjy Wxp^*._q3I 安装或升级一个RPM包,install命令的语法为:
^. Pn)J ]HCt%5 rpm -i [install-options] package_file
k,q` ^E8k rpm --install [install-options] package_file
O
gycP4z[ WddU|-W 示例:
?f &*mp KE(kR>OB] [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
7dU X(D,? package lynx-2.8.5-18 is already installed
B`KpaE] [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
8qBw;A) --------------------------------------------------------------------------------
"pHQ rtUdL,Hx t$UFR7XE 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
QR^pu.k@ y8,es$ rpm -U [install-options] package_file
St&XG>nWS rpm --upgrade [install-options] package_file
][0HJG{{g j[Et+V? 示例:
)ns;S 8K1+ttjm 先安装旧版
ZY][LU~l8 [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
fxiq,o0 w|$;$a7) 再安装新版
JXvHsCd? [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
&=s{ +0 r%xNfTa 显示出新版本信息
-98bX]8 [root@localhost ~]# rpm -q lynx
;N4mR6 lynx-2.8.5-18
wV(_=LF n}._Nb
5 说明:
9Uk9TG 5 -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
V#sANi?mpo Q2k\8i 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
7GPBn}{W --------------------------------------------------------------------------------
,sJ{2,]~ 5F0sfX guf+AVPno 刷新的语法是:
@o>2:D1G 5a_K|(~3I rpm -F [install-options] package_file
_39b8s{ A}oR,$D- rpm --freshen [install-options] package_file
cvc.-7IO B|!YGfL 示例:
E7j]"\~ i |pJ.73 从未安装过lynx包,使用-F选项,将无法升级。
|NM.-@1 }*+ca>K [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
z{AfR2L [root@localhost ~]# rpm -q lynx
6:h!gY package lynx is not installed
[%bshaY: --------------------------------------------------------------------------------
gE8>5_R| u/hD9g~H7K 67f#Z&r2k 安装和更新选项为:
J)o~FC]b* uRUysLIw --allfiles
6i&WF<%D 安装或更新所有文件。
w+ _'BU1# rKR<R(=!= --badreloc
a0.)zgWr 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
Lx(Y= <hS >L1ZSr --excludedocs
9BHl2<&V 不安装任何文档文件。
~omX(kPzK ^yBx.GrQc --excludepath path
D4
e)v% 不安装文件名以path开始的任何文件。
LeO5BmwHR Q@l3XNH|c --force
^>]p4Q3 6 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
bD49$N?> u6|7P<HUfb -h,--hash
!f"@pR6 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
o<%Sr* R#Ss_y --ignorearch
)%UO@4 即使二进制包用于不同的体系结果也进行安装。
9#pl BtQ** !QC-> --ignoreos
~sk 4v:- 即使操作系统不匹配也安装二进制包。
aIJ[K 03{e[#6 --ignoresize
<tFq6| 安装前不检查磁盘的可用空间。
*y.KD4@{ q
\0>SG --includedocs
KS%xo6k. 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
Is%-r.i -LQ%)'J ZN --nodeps
'fZHtnmc0 不检查这个包是否依赖于其他包的存在。
L+d_+:w Y$%Ze]~ --noorder
9g "?`_ 安装之前,不为了满足依赖关系而对包进行重新排序。
a}%>i~v< x/5%a{~j2 --noscripts
G?YKm1:w 不执行任何预安装或后安装脚本。
h5B'w ~0ZP%1.B3 --notriggers
6i>xCb 不执行任何由包安装触发的脚本。
8<IOX {wCQ#V --oldpackage
T4w`I;&v 允许升级以用旧包替换新包。
LD#]"k {fk'g(E8([ --percent
l"O=x t`m{ 当文件被解压时输出完成百分比的信息。
MheP@ [w|@ 8]+hfB/ --prefix path
Z
wIsEJz 把可重定位包的安装前缀设置为path。
'rU5VrK h.G/HHz
--replacefiles
oXb}6YC 即使包替换了来自其他安装包的文件,也安装这些包。
[% YCupr# !a4pKN`qLY --replacepkgs
d94Lc-kq^ 即使某些包已经被安装,也安装他们。
_[IN9ZC 2G 6?(*:}Q --test
qfG`H#cA< 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
MJDFm, }6ec2I%`o --------------------------------------------------------------------------------
<C]s\"o-` :8\z 0 ~?S/0]?c 查询
i!sKL%z} h<.&,6R query命令的语法为:
M%yT?R+ :C>slxY rpm -q[information-options] [package-options]
E+F!u5u rpm --query[information-options] [package-options]
1^Ci$ra 6|["!AUI 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
Z*x Q"+\ --------------------------------------------------------------------------------
i>>_S&!9p p\F*Y,4 BWz*!( 以下简单示演示一下包查询:
-bcm"(<T' Bo)w#X 简单查询:
O`Nzn~),x JKXs/r;: 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
\JN?3}_J l}K{=%U>7 示例:
'tp+g3V _q+H>1.&9 [root@localhost ~]# rpm -q lynx
<5?.S{Z9 lynx-2.8.5-18
m03;'Nj'7# --------------------------------------------------------------------------------
~B1)!5Z D+#QQH sDw&U?gUv 信息查询:
1kvBQ1+ O-5H7Kd- rpm -qi packagename命令可以得到安装包的汇总信息。
~S#Le d#Ql>PrY 示例:
l>H#\MR [root@localhost ~]# rpm -qi lynx
Z[Uz~W6M] Name : lynx Relocations: (not relocatable)
0ir] Version : 2.8.5 Vendor: Red Hat, Inc.
^ JJ*pT: Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
Ftu4 V*lD Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
T"XZ[q Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
ST] h NM Size : 4837340 License: GPL
D$!(Iae Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
\:%e 6M Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> " :@5|4qK URL :
http://lynx.isc.org/ $yLsuqB} Summary : 一个基于文本的网页浏览器。
|^8l8u Description :
#4DEb<D Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
}e& 图像,但是它支持框架、表格、以及多数其它 HTML
d
0$)Y|d> 标签。Lynx 优于图形化浏览器的地方是它的速度――
#-Ehg4W Links 能够快速启动、退出、及显示网页。
+t,JCY6 标识拥有者
%9uLxC; --------------------------------------------------------------------------------
ENr\+{{% -Wb/3X fu"#C}{ 找出什么包拥有文件file:
<TC\Nb$~ IBo)fE\O 示例:
~\6Kq`Y o{37}if [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
Myg
&H(~ lynx-2.8.5-18
hL+)XJu^J --------------------------------------------------------------------------------
bb}|"m. :l'61$= ,n-M!y 列表包中的文件:
v#8{pr N/4`afiV. 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
)t0Y-),vA H?m9HBDpn 示例:
~$Xz~#~ XcAx@CY9c 此为部分显示结果
*G7/ [root@localhost ~]# rpm -ql lynx
DwMq /etc/lynx-site.cfg
{D={>0 /etc/lynx.cfg
JS1$l+1 /etc/lynx.cfg.cs
q5p!Ty" /etc/lynx.cfg.ja
,73J# /etc/lynx.cfg.sk
pIXbr($ /usr/bin/lynx
")q /usr/share/doc/lynx-2.8.5
dmgoVF_qR /usr/share/doc/lynx-2.8.5/INSTALLATION
G\@uj>Z /usr/share/doc/lynx-2.8.5/README
<]2X~+v /usr/share/doc/lynx-2.8.5/docs
< HlS0J9 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
lc?9B /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
7y""#-}V[r /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
)! Jo7SR /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
yM`J+tq /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
Y(h86>z*w /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
ds}: t.3}6 /usr/share/doc/lynx-2.8.5/docs/CMU.announce
]+u`E /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
g\[?U9qN /usr/share/doc/lynx-2.8.5/docs/FM.announce
|:7O /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
p2cwW/^V /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
_lcx?IV /usr/share/doc/lynx-2.8.5/docs/README.TRST
^`XQ>-wWue /usr/share/doc/lynx-2.8.5/docs/README.chartrans
3x@t7B e`27 ? --------------------------------------------------------------------------------
qb'4x){ h mC.5mY Ka%u#}; 列出包所提供的实际能力:
KzZ|{!C G6]W'Kk --provides选项的作用是列出这个包所提供的实际能力。
pN|BtrN{ =4+Wx8ZeW 示例:
:08b&myx #;4<dDVy [root@localhost ~]# rpm -q --provides lynx
D"UCe7 config(lynx) = 2.8.5-18
l6]:Zcd0 webclient
l.[S.@\ =. lynx = 2.8.5-18
SM;UNIRVE --------------------------------------------------------------------------------
W@Et 0eP7efy E}LYO: 列出这个包所倚赖的任何包:
4HG;v|Cp XRARgWj -R,--requires选项的作用是列出这个包所依赖的任何包。
#X1iig+ 9f1,E98w_ 示例:
olda't ,/*L|M/&5 [root@localhost ~]# rpm -qR lynx
=]i[gs)B /bin/sh
%P@V7n config(lynx) = 2.8.5-18
*|n-Hr indexhtml
`>'%!E9G libc.so.6
:E`/z@I libc.so.6(GLIBC_2.0)
U?]}K S;6 libc.so.6(GLIBC_2.1)
_-mSK/Z libc.so.6(GLIBC_2.2)
<~s{&cL!%# libc.so.6(GLIBC_2.3)
1fajTT? libcrypto.so.4
%{"v^4 libncursesw.so.5
[[
{L# libssl.so.4
O\0]o! libz.so.1
CNU,\>J@$ rpmlib(CompressedFileNames) <= 3.0.4-1
mcO/V-\5' rpmlib(PayloadFilesHavePrefix) <= 4.0-1
UaA1HZ1 --------------------------------------------------------------------------------
K X0{dizZ X$mCn#8m QAN : 列出包中的配置文件
`_"F7Czn . l1uqCuB -c,--configfiles选项的作用是列出包中的配置文件
re}_+svU AIN Fv; 示例:
EGJ d:>k f0!i<9< [root@localhost ~]# rpm -qc lynx
b&]_5 GGc /etc/lynx-site.cfg
r2!\Ts 5v /etc/lynx.cfg
H 5\k`7R /etc/lynx.cfg.cs
hJ|zX /etc/lynx.cfg.ja
uUmkk /etc/lynx.cfg.sk
-]hk2Q0 --------------------------------------------------------------------------------
my1FW,3 iG+hj:5 k9Pwf"m|]( 显示有关于包的改变信息的日志:
gs/ i%O Vd%%lv{v --changllog选项的作用是显示有关于包的改变信息的日志。
e 97Ll=> ZhvZe/ 示例:
bEvlk\iql R"Ff(1m 此为部分显示结果
T- ~l2u|s [root@localhost ~]# rpm -q --changelog lynx
Pk{eGG<F$ * 五 7月 09 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-18
2&b?NqEeZ - Removed perl dependencies (bug #127423).
%mF:nU4 * 三 6月 16 2004 Elliot Lee <
sopwith@redhat.com>
*.F^`]yz - rebuilt
41^ =z[k * 三 5月 26 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-16
XWd;-%`< - No longer need lynx-284-ipv6-salen.patch.
STln_'DF' - No longer need lynx2-8-2-telnet.patch.
n VNz5B * 六 2月 14 2004 Elliot Lee <
sopwith@redhat.com> 2.8.5-15
."X}A
t - rebuilt
xOY
%14%Y * 二 12月 02 2003 Tim Waugh <
twaugh@redhat.com> 2.8.5-14
d1]1bN4`"0 - Updated to dev16, fixing bug #110196.
r%=} e++^% - No longer need crlf patch.
Fi!BXngbd - Use shipped ja translations.
ue8"_N - Use %find_lang.
-w'_Q"o2 - Default config file now sets UTF-8 (bug #110986).
2oBT
_o%/J --------------------------------------------------------------------------------
F x4s)( (i 2R1HCa ]wxjd
l 包选择选项
_ZMAlC*$G >(.GIR package_name
AX{X:L8Ut2 查询已安装包的package_name。
GBg~NkC7. f$y`tT %o -a,--all
70Z#Ej 查询所有已安装拨。
/BN_K8nb` ! )x2
-f file,--file file
W[VbFsI&b 找出什么包拥有文件file。
}w_r(g?\ dilom#2l -g group,--group group
<@448,9& 找出什么包拥有组group。
_/c1b>kcso ovXU +8 -p package_file
*r90IS}A$2 查询未安装包package_file
-ZVCb@% B=d
:r --querybynumber num
mxPzB#t4 查询第num个数据库条目。主要用于调试。
>))f;$D= /XVjcD66c -qf,--queryformat num
R`HC
EX) 指定显示查询结果时所采用的格式,使用标记来表示不同的数据类型(NAME,FILENAME,DISTRIBUTION)。格式说明是标准printf格式化的一个变体。
;n\$'"K&; ;07>ZH% --specfile specfile
cfZ$V^xM 查询specfile,就好象它是个包
m8ApiGG 1fOH$33 --triggeredby pkg
-s6k't 列出触发安装pkg包的包。
{9
.sW/ 3xX^pjk --whatrequires capability
:5W8S6[o 列出要求特定能力来行使职责的包。
V zTHW5B /$=<"Y7&g --whatprovides capability
Tb!Fv W 列出提供特定能力的包。
T1*%]6&V| --------------------------------------------------------------------------------
<
M o G^%FP!'D? 0d|DIT#>? 信息选择选项:
Kj{(jT B?gFFU61 -c,--configfiles
1=@csO_yn 列出包中的配置文件。
jY1^I26E I6e[K(7NY --changelog
b2r]>*Vc 显示有关于包的改变信息的日志。
|L<p90 Da3Z>/S -d,--docfiles
VFI\2n` 列出包中的文档文件。
h1
npaD! nRHxbE}:: --dump
VV+gPC 转储包中每个文件的信息。这个选项必须至少与-l,-c或-d之一共同使用。
x O_u 以下列顺序输出信息:
uvMcB9 path size mtime md5sum mode owner group isconfig isdoc rdev symlink
{9Ug9e{
~ AW<"3 !@ --filebypkg
ZBuh(be 列出每个包中的所有文件。
:9~LYJ
? E'
_6v -i
2
r';)8: 显示包的信息,包括名字,版本和描述。
=nff;Xu ss0`9:z -l,--list
E (.~[-K4 列出包中所有文件
KD* xFap UFzC8 --last
80GBkFjV 根据安装时间列出包,最新的包排第一位。
M*
0zvNg
HT%'dZ1 --provides
OpD%lRl 列出这个包所提供的实际能力。
*Roqie UC@Jsj~f -R,--requires
Z{}+7P 列出这个包所依赖的任何包。
evvv&$& s+<`iH9Hm -s,--state
xOt
{Vsv 列出包中的每个文件及其状态。可能的状态为normal,not installed或replaced。
%'w?fqk @L ,4JPk --scripts
ty\F~]Oo 列出任何在安装和卸载过程中所使用的包特定的shell脚本。
.%G>z"Xx SpC6dkxD\ --------------------------------------------------------------------------------
[/Sk+ID I} .9 s H(io 卸载
]|_UpP8EP =/e$Rp uninstall命令的语法为:
+~n4</ 3lsfT-|Wt& rpm -e package_name
)]tf|Mbu rpm --erase package_name
Qf($F,)K gwyX%9 示例:
@j<Q2z^ {\vcwMUzZ [root@localhost ~]# rpm -e lynx
L_sDbAT~< [root@localhost ~]# rpm -q lynx
7e:eL5f>~ package lynx is not installed
E_D0Nm%n --------------------------------------------------------------------------------
hw({>cH\ uk9!rE" 7 -S?U~s 卸载选项为:
+z|@K=d#| qM18Ji* --allmatches
#b9V&/ln 删除包的所有版本。应该只指定一个包,否则会导致错误。
Mc~L%5 yu}yON --nodeps
=p2: qSV 在卸载包之前不检查依赖性。
cV4]Y(9 3gv@JGt7` --noscripts
Yb\d(k$h 不执行任何预卸载和后卸载脚本。
:/R>0 n, t{-*@8Ke --notriggers
: G'a"%x 不执行任何由这个包的删除而出发的脚本。
l:+$K s <Rfx`mn --test
k&9[}a* 不真正卸载任何包,仅仅查看活动过程。