Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
6|>\&Y!Q <AAZ8#^ 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
h[ZN >T 6n6VEwYj 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
/mBBeg^a
6:@t=C 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
e(; `9T --------------------------------------------------------------------------------
'UvS3]bSYW
2HK kGuk
-P 以下简要介绍RPM包的安装,删除和查询
$sL|'ZMbS Wt)SdF=U/ RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
ZH$sMh<xg ZOrTbik rpm命令的格式为:
)lDIzLp L^ #< HQ rpm [options] [packages]
kulQR>u Y:"v=EhB 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
]D) 'I` _z(5e 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
Ad`[Rt']kI --------------------------------------------------------------------------------
B`?N0t%X .xLF}{u C=dx4U~
RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
'=Kof1 C/CfjRzd 以下为rpm --showrc命令显示的节选:
gR-Qj [#>$k
6F* 示例:
ZP63Alt o,Tr^e$ 此为部分显示结果
_+Jf.n20 [root@localhost ~]# rpm --showrc
EB29vHAt~ ARCHITECTURE AND OS:
Z?~d']XD build arch : i386
e:GgA compatible build archs: athlon i686 i586 i486 i386 noarch
^`jZKh8)h build os : Linux
;&W; compatible build os's : linux
fr'huvc install arch : athlon
Hr<C2p^a install os : Linux
eb.cq"C compatible archs : athlon i686 i586 i486 i386 noarch
@( n^S?( compatible os's : linux
16[-3cJ T RPMRC VALUES:
:B*vkwT 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
^QXw[th!d
optflags : %{__global_cflags} -m32 -march=athlon
zOiY0`= Features supported by rpmlib:
JwI`"$>w rpmlib(VersionedDependencies) = 3.0.3-1
;la#Vf:] PreReq:, Provides:, and Obsoletes: dependencies support versions.
N,/BudFo rpmlib(CompressedFileNames) = 3.0.4-1
L'\/)!cEd file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
b,rH&+2H rpmlib(PayloadIsBzip2) = 3.0.5-1
2i7i\?<. package payload can be compressed using bzip2.
$['7vcB^ --------------------------------------------------------------------------------
Tn@UX(^, g* \P6 Yt/SnF rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
,\S pjE da00p-U 示例:
hSkc9jBF sk7rU+< [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
uK;K{ Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
|YE,) kiF Preparing... ########################################### [100%]
,XeyE;|| 1:lynx ########################################### [100%]
Q_QKm0! --------------------------------------------------------------------------------
iBKb/Oi6 f
E.L s,$Z("B 以下列出一些通用选项(可以用于所有模式):
sw41wj tIyuzc~U --dbpath path
Y3P.| 用path作为RPM数据库的路径。
];pf ]<8B-D?Z --ftpport prot
8NaL{j1` 用port作为FTP端口。
@ kJ0K w*<Y$hnBzF --ftpproxy host
[:nx);\ 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
BLL]^qN;Y ^zaKO'KcV --help
_}I(U?Q-C 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
+
%MO7vL (Pk"NEP --justdb
pwFU2}I 只更新数据库;不改变任何文件。
FpdDIa ]3O
4\o --pipe command
kfqpI
用管道把rpm输出到commond。
e~+(7_2 =mHkXHE~: --quiet
E7X!cm/2< 仅显示错误信息。
m/YH^N0 IU Y> ih --rcfile filename
:H!(?(Pie 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
@,x_i8 WCuzV7tw --root dir
E\]OySC%C$ 在dir目录内执行所有操作。
J+)'-OFt0 xH_A@hf; --version
Lh8bQH 输出rpm版本号。
Z0[)u_< )%iRZ\`f -vv
J Q)4}t 输出调试信息。
JkSdLj Si?$\H*: --------------------------------------------------------------------------------
>aEL;V=}P x],8yR)R [!1)mR 安装升级和刷新
Fw_
(q! )p$\gwr=2 安装或升级一个RPM包,install命令的语法为:
M11"<3]D X5uS>V%/ rpm -i [install-options] package_file
] vC=.&] rpm --install [install-options] package_file
`y\*m]: ds*m6#1b 示例:
O^.%C`* a'@-"qk [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
$uEJn&n7} package lynx-2.8.5-18 is already installed
I86e&"40 [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
'oz hz2s --------------------------------------------------------------------------------
DE*MdfP0 *0%4l_i )n\*ht7 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
SU?wFCGT% gw_|C|!P rpm -U [install-options] package_file
h [nH<m rpm --upgrade [install-options] package_file
n?'d|h n,t6v5>88 示例:
<,jAk4 kWB, ;7 先安装旧版
Ya}T2VX [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
cCM
j\H@ UdT&cG 再安装新版
/ Zo~1q [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
P3'2IzNw +"]oc{W! 显示出新版本信息
BJ~ivT< [root@localhost ~]# rpm -q lynx
{5T0RL{\N lynx-2.8.5-18
+$>N]1 G1}~.%J 说明:
?VFM]hO -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
w[
Axs8N' n!GWqle 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
8@E8!w&~ --------------------------------------------------------------------------------
TE3*ktB{N pG/
NuImA yh S#&)O 刷新的语法是:
H76E+AY }<vvxi rpm -F [install-options] package_file
:/+>e
IE 2
9q?$V( rpm --freshen [install-options] package_file
>&bv\R/ Rr%tbt.sE 示例:
82lr4 $Axng
J c 从未安装过lynx包,使用-F选项,将无法升级。
<5dH *K x+4vss [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
\CcmePTN#x [root@localhost ~]# rpm -q lynx
(nGkZ}p package lynx is not installed
i-`,/e~XT --------------------------------------------------------------------------------
)))2fskZ +H7y/#e+3 *5e<\{! 安装和更新选项为:
}04Dg' ^w>&?A'! --allfiles
f2NA=%\ 安装或更新所有文件。
'<TD6jBs 9o EpPL5 --badreloc
]bIt@GB 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
brntE: ~%`EeJwT --excludedocs
gW kjUz) 不安装任何文档文件。
|V lMmaz SaCx)8ul0 --excludepath path
bZiyapM 不安装文件名以path开始的任何文件。
+4Q[N;[+* qYx!jA]O --force
B$ui:R/ t 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
;TtaH zt?h^zf} -h,--hash
D -6 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
d>&\V)E -TgUyv. --ignorearch
^\MhT)x 即使二进制包用于不同的体系结果也进行安装。
B22b&0 [ a@B
=E --ignoreos
H"_v+N5= 即使操作系统不匹配也安装二进制包。
a2o.a2
Jz0K}^Dj[ --ignoresize
"=qv#mZ#9 安装前不检查磁盘的可用空间。
TFO74^ `|Ey)@w --includedocs
0 sZwdO 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
gV|Y54}T D i+4Eb
--nodeps
L;3aZt,#O 不检查这个包是否依赖于其他包的存在。
[<yz)<< PB+\jj --noorder
WHP;Neb6 安装之前,不为了满足依赖关系而对包进行重新排序。
RK-x?ZYH' !3h{lEB --noscripts
Je^Y&a~ 不执行任何预安装或后安装脚本。
*<r%aeG$em `_GO=QQ --notriggers
YZ<
NP 不执行任何由包安装触发的脚本。
>Fyu@u zrrz<dW --oldpackage
'*4iqPR; 允许升级以用旧包替换新包。
,ijW(95{k )A"jVQjI%w --percent
JA<~xo[Q9 当文件被解压时输出完成百分比的信息。
)6=gooe] GMdI0jaG# --prefix path
7H%_sw5S. 把可重定位包的安装前缀设置为path。
uJY.5w \n_3Bwd~ --replacefiles
#&V5H{ 即使包替换了来自其他安装包的文件,也安装这些包。
80}4/8 ;,rnk- --replacepkgs
N!L'W\H, 即使某些包已经被安装,也安装他们。
F$h'p4$T ds]?;l" --test
-D#5o,]3 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
@bT3'K-4 dQ<(lzS~ --------------------------------------------------------------------------------
!lhFKb;
D"cKlp-I6| Z(HZB 查询
D-pX<0-y p.C1 nh query命令的语法为:
#EG?9T E_3r[1l rpm -q[information-options] [package-options]
$@2"{9Z rpm --query[information-options] [package-options]
WNa3^K/W{ r1G8]a gO 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
4\ FP --------------------------------------------------------------------------------
|'<vrn xl8#=qmCD 5mavcle{4r 以下简单示演示一下包查询:
sLi*SR 4)^vMG& 简单查询:
VhvTBo<cw (B:uc_+ 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
{2:d`fqD (;UP%H> 示例:
/lJjQ]c;> 59i] [root@localhost ~]# rpm -q lynx
zh%qS~8Yv lynx-2.8.5-18
TV=c,*TV --------------------------------------------------------------------------------
K2HvI7$- s@~/x5jwCs 43L|QFo 信息查询:
EeB3 } t#5:\U5r. rpm -qi packagename命令可以得到安装包的汇总信息。
TEWAZVE* y9!:^kDI 示例:
;Iq5|rzDn [root@localhost ~]# rpm -qi lynx
6m+W#]^ Name : lynx Relocations: (not relocatable)
[))JX"a Version : 2.8.5 Vendor: Red Hat, Inc.
lR@& Z6lw Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
%ek"!A Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
TsD;Kl1 Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
v459},!P Size : 4837340 License: GPL
Q]#Z9 H Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
+
|C=ZU Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> .S_QQM}Q URL :
http://lynx.isc.org/ U5<@<j(@ Summary : 一个基于文本的网页浏览器。
ao$):,2* Description :
G9Qe121m Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
yW("G-Nm 图像,但是它支持框架、表格、以及多数其它 HTML
Pm^lr! 3p 标签。Lynx 优于图形化浏览器的地方是它的速度――
`W"G!X- Links 能够快速启动、退出、及显示网页。
%S`ik!K"I 标识拥有者
PN
&|8_ --------------------------------------------------------------------------------
,|pp67 v`B4(P1Z J=*K"8Qr 找出什么包拥有文件file:
]"sRS`0+
v[&'k\ 示例:
Wc|z7P~',% ^|?1_r [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
m*oc)x7' lynx-2.8.5-18
rzu
s --------------------------------------------------------------------------------
G),db%,X2 eYEc^nC,c) Hk u=pr3Gn 列表包中的文件:
ZEGd4_ux /{X_
.fv<v 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
]:et~pfW cZi[(K 示例:
w>vH8f KlUqoJ;" 此为部分显示结果
D|Si)_
Iz [root@localhost ~]# rpm -ql lynx
"2;N2=~7 /etc/lynx-site.cfg
x=,8[W#XT /etc/lynx.cfg
GN%(9N'W /etc/lynx.cfg.cs
T~J?AKx /etc/lynx.cfg.ja
]l[2hy=
cV /etc/lynx.cfg.sk
l>7r2; /usr/bin/lynx
}bMWTT /usr/share/doc/lynx-2.8.5
2xTT)9Tq* /usr/share/doc/lynx-2.8.5/INSTALLATION
IN^_BKQt /usr/share/doc/lynx-2.8.5/README
V@Wcb$mgk /usr/share/doc/lynx-2.8.5/docs
uV~e|X
"9s /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
|C D}<r(N
/usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
_M5Xk? e= /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
;|TT(P:d /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
K@r*;T /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
O<GF> /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
O
>FO> /usr/share/doc/lynx-2.8.5/docs/CMU.announce
2-v\3voN /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
RH1uVdJ1 /usr/share/doc/lynx-2.8.5/docs/FM.announce
7Fl-(Nv` /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
kon=il<@ /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
Ei~f`{i /usr/share/doc/lynx-2.8.5/docs/README.TRST
QlD6i-a /usr/share/doc/lynx-2.8.5/docs/README.chartrans
o.^y1mH' 2U9&l1P= --------------------------------------------------------------------------------
` X}85 / Z!i;@Wf |+NuYz? 列出包所提供的实际能力:
K"l0w**Og# r7I
B{}>- --provides选项的作用是列出这个包所提供的实际能力。
m:{tgcE 9+Nw/eszO 示例:
(F8AL6 {oWsh)[x2 [root@localhost ~]# rpm -q --provides lynx
6[?}6gQ config(lynx) = 2.8.5-18
sX:lE^)-z webclient
XnXb&@Y lynx = 2.8.5-18
1V%'.l9 --------------------------------------------------------------------------------
Wsm`YLYkt! wFL3&* 84M3c 列出这个包所倚赖的任何包:
70Ka! 3ATjsOL -R,--requires选项的作用是列出这个包所依赖的任何包。
"s]y!BLk >&Fa(o;* 示例:
HFS+QwHW jvs[ / [root@localhost ~]# rpm -qR lynx
rAXX}"l6s /bin/sh
|Td5l? config(lynx) = 2.8.5-18
FC}oL"kk indexhtml
g-@h>$<
1 libc.so.6
Nl*i5 io libc.so.6(GLIBC_2.0)
r(`nt-o@ libc.so.6(GLIBC_2.1)
1r571B*O libc.so.6(GLIBC_2.2)
cwynd=^nC libc.so.6(GLIBC_2.3)
Q%5F ]`VN libcrypto.so.4
k^%_V|&W/( libncursesw.so.5
&1Fply7(Ay libssl.so.4
l4ouZR libz.so.1
/cY^]VLe rpmlib(CompressedFileNames) <= 3.0.4-1
($WE=biZ& rpmlib(PayloadFilesHavePrefix) <= 4.0-1
k'+}92
o --------------------------------------------------------------------------------
,
Oli ]rW8y%yD &KqVN]1+^ 列出包中的配置文件
+R[4\ hC0Y 6^YJ] w -c,--configfiles选项的作用是列出包中的配置文件
&
_K*kI: ;NsO 示例:
P*G+eqX r4eUZ .8R [root@localhost ~]# rpm -qc lynx
RP`
`mI /etc/lynx-site.cfg
?_ RYqolz /etc/lynx.cfg
`6Hf&u< /etc/lynx.cfg.cs
\*"`L3 /etc/lynx.cfg.ja
km\%BD~ /etc/lynx.cfg.sk
nNn56&N] --------------------------------------------------------------------------------
fk3kbdI 8/Rm!.8+~ c8DZJSO 显示有关于包的改变信息的日志:
`ROEV~ Dip*}8$o(w --changllog选项的作用是显示有关于包的改变信息的日志。
$a.u05 _CdROo6I 示例:
{}\CL#~y =!<G!^ 此为部分显示结果
mG(N:n%*K [root@localhost ~]# rpm -q --changelog lynx
kRot7-7I| * 五 7月 09 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-18
+d39f-[ - Removed perl dependencies (bug #127423).
E
$6ejGw- * 三 6月 16 2004 Elliot Lee <
sopwith@redhat.com>
1d v=xe. - rebuilt
')o0O9/; * 三 5月 26 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-16
3Gd0E;3sk~ - No longer need lynx-284-ipv6-salen.patch.
I@./${o - No longer need lynx2-8-2-telnet.patch.
>XE`h9 * 六 2月 14 2004 Elliot Lee <
sopwith@redhat.com> 2.8.5-15
,w`~K:b. - rebuilt
CC8k&u, * 二 12月 02 2003 Tim Waugh <
twaugh@redhat.com> 2.8.5-14
aRwnRii - Updated to dev16, fixing bug #110196.
D ,M@8h, - No longer need crlf patch.
M|%c(K#E,3 - Use shipped ja translations.
|.w;r
- Use %find_lang.
arj$dAW - Default config file now sets UTF-8 (bug #110986).
uO'/|[`8 --------------------------------------------------------------------------------
,sDr9h/'C3 ?q Xs- l3J$md|f 包选择选项
;~/4d- a[C&e,)} package_name
H/jm
f5 查询已安装包的package_name。
l{%a&/ Y';>O ` -a,--all
:p-Y7CSSu 查询所有已安装拨。
iJP{|-h Z"tQpJg -f file,--file file
qrDcL>Hrn 找出什么包拥有文件file。
/`+7_=- *K)0UKBr -g group,--group group
4e9E'
"8% 找出什么包拥有组group。
bUvK tWk{1IL -p package_file
zM59UQU; 查询未安装包package_file
abWl ut =kFuJ
x)f --querybynumber num
_T]>/}}p 查询第num个数据库条目。主要用于调试。
Q]\j>> ~`Sle
xK|} -qf,--queryformat num
[ud|dwP" 指定显示查询结果时所采用的格式,使用标记来表示不同的数据类型(NAME,FILENAME,DISTRIBUTION)。格式说明是标准printf格式化的一个变体。
.,mPdVof (hf zM+2 --specfile specfile
']?=[`#NL 查询specfile,就好象它是个包
Y6VQ:glDT- J
Jy{@[m --triggeredby pkg
p\S8oHWe 列出触发安装pkg包的包。
`C'}e afm_ Rrg[ --whatrequires capability
'h}7YP, w 列出要求特定能力来行使职责的包。
KXe
ka E5{n?e --whatprovides capability
t _\MAK 列出提供特定能力的包。
{A3m+_8 --------------------------------------------------------------------------------
M 9"-WIG@h 2Xgx*'t\ NG9vml 信息选择选项:
d@g2k> > #F4X} -c,--configfiles
|s|/]aD}o 列出包中的配置文件。
Gvn : c/m; =|0/Ynfe --changelog
l0`'5> 显示有关于包的改变信息的日志。
Mi74Xl i QymD-A"P -d,--docfiles
O71BM@2< 列出包中的文档文件。
s.y}U5Ty?P
g1qi\axm --dump
FpzP#; 转储包中每个文件的信息。这个选项必须至少与-l,-c或-d之一共同使用。
`Bu9Nq 以下列顺序输出信息:
D5`(} path size mtime md5sum mode owner group isconfig isdoc rdev symlink
A&l7d0Z^j5 P<L&c_u --filebypkg
k7Oy5$## 列出每个包中的所有文件。
Jpx'W f)^t') -i
B] i:) 显示包的信息,包括名字,版本和描述。
M(5D'4. /{we;Ut=g -l,--list
/*P7<5n0 列出包中所有文件
-f.R#J$2 .Cr1,Po --last
&<h?''nCy 根据安装时间列出包,最新的包排第一位。
R3G@G iQ{z6Qa --provides
C BlXC7_Mi 列出这个包所提供的实际能力。
U Um|@ XU-*[\K -R,--requires
{!t=n 列出这个包所依赖的任何包。
8IJ-]wHIb q?iCc c -s,--state
!4B_$6US 列出包中的每个文件及其状态。可能的状态为normal,not installed或replaced。
o2}N=|& sR!+d:LJ4 --scripts
Tc_do"uU 列出任何在安装和卸载过程中所使用的包特定的shell脚本。
[q$e6JwAt pqq?*\W&[v --------------------------------------------------------------------------------
g)cY\`&W8 }
J(1V!EA ]ym C3LV] 卸载
(UcFNeo tgW kX uninstall命令的语法为:
/e<5Np\X 6
[ _fD rpm -e package_name
4:3_ER ]J rpm --erase package_name
GZ"/k<~0 CWvlr nv 示例:
n?Z f/T Y)OBTX [root@localhost ~]# rpm -e lynx
gvo?([j-m [root@localhost ~]# rpm -q lynx
_n_sfT6)B package lynx is not installed
|."G ?* --------------------------------------------------------------------------------
8m7;x/0ld LE|<O f9F2U
) 卸载选项为:
m&cvU>lC GLcd9|H --allmatches
~me\ 删除包的所有版本。应该只指定一个包,否则会导致错误。
e>!E=J)j MCHOK=G --nodeps
4cB&Hk 在卸载包之前不检查依赖性。
B _tQeM `sxN!Jj? --noscripts
pz @km 不执行任何预卸载和后卸载脚本。
1M/$<
kQ-N [' t8C --notriggers
6KB^w0oA 不执行任何由这个包的删除而出发的脚本。
[Q:f-<nH to51hjV --test
hiIyaWU 不真正卸载任何包,仅仅查看活动过程。