Red Hat包管理器(即RPM:Red Hat Package Manager)是一种打包系统,用于软件的发布和安装。其他Linux发布商,如SuSE等也使用RPM。
PR0]:t)E ]h6<o* 安装与升级是管理RPM包的根本。安装RPM包时,就是在系统中增加新软件。升级RPM包时,就是在相关软件中更新最新的特性。
>b0}X)Z+U RWYA` 一个包就是一个文件,其中包含了安装一个应用所需的多个文件。尽管包中包含了安装时所需的文件,但是应用程序为了能运行可能还需要其他文件的存在或其他未包含包的存在,如特定的库。这样的需求就是包的依赖性(dependency)。如,内核源代码RPM包要有GNU C语言编译器。由于内核源代码具有依赖性,因此要先安装GNU C语言编译器,再安装内核源代码。
="4 )! KMa?2cJH# 任何用户都可以列出或查询包。但是,安装,升级或删除包通常需要超级用户的特权。这是因为包通常安装在系统级目录下,该目录只对root(超级用户)是可写的。有时,也可以指定一个目录。把把安装在你的主目录或者你拥有写权限的目录下。
va\cE*,@ns --------------------------------------------------------------------------------
LJ?7W,? h.NA$E?7 Sj\8$QIXC 以下简要介绍RPM包的安装,删除和查询
'4EJ_Vhztc $1YnQgpT RPM包的建立,安装和查询是用rpm命令进行的。RPM包的名字通常以.rpm扩展名结束。rpm有一组模式,每种模式都有自己的选项。
nM#\4Q[}Jh QMP:} rpm命令的格式为:
%?ad.F+7 hI$an%Y( rpm [options] [packages]
E@p9vf-> oID,PB*9 第一个选项指定rpm模式(安装,查询,更新),其他选项影响模式。
&LE/hA wbTw\b= 对包的选项描述中,有时把包指定为package-name,而有时指定为package-file。包的名字是程序名或应用名,如lynx。包文件是RPM文件的名字,如lynx-2.8.5-18.i386.rpm。
<#sK~G --------------------------------------------------------------------------------
x\WKsc ``{xm1GK "Z
<1Msz RPM为指定常用的选项提供了配置文件。系统配置文件通常是/etc/rpmrc,而用户可以建立他们自己的$HOME/.rpmrc文件。你可以用--showrc选项为在rpmrc文件中设置的所有选项显示RPM会使用的值。
V0>,Kxk >
ewcD{bt 以下为rpm --showrc命令显示的节选:
? T9-FGW p)`JVq,H/B 示例:
@xo9'M<l 7y!{lr=n 此为部分显示结果
WukD|BCC [root@localhost ~]# rpm --showrc
gU:jx ARCHITECTURE AND OS:
YRFM1?* build arch : i386
Dcq^C LPY compatible build archs: athlon i686 i586 i486 i386 noarch
9#+X?|p+0 build os : Linux
pnWDsC~) compatible build os's : linux
~O!v?2it8q install arch : athlon
0[^f9NZ>- install os : Linux
YC{od5a compatible archs : athlon i686 i586 i486 i386 noarch
] '..G- compatible os's : linux
umY4tNe]$ RPMRC VALUES:
o}BaZ|iZ2 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
OvkY zI` optflags : %{__global_cflags} -m32 -march=athlon
yfj<P/aA+ Features supported by rpmlib:
u7K0m!
jW rpmlib(VersionedDependencies) = 3.0.3-1
1:?WvDN= PreReq:, Provides:, and Obsoletes: dependencies support versions.
\7RP6o rpmlib(CompressedFileNames) = 3.0.4-1
'Q# KjY file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
]. eGsh2 rpmlib(PayloadIsBzip2) = 3.0.5-1
V<b"jCXI package payload can be compressed using bzip2.
>5\rU[H> --------------------------------------------------------------------------------
j:g/[_0s "Mth<%i 'j|;M rpm命令包括FTP和HTTP客户端,因此可以指定ftp://或
http://URL来通过Internet安装或查询一个包。只要这里给出的命令中指定了package-file,你就可以使用FTP或HTTP URL。
MOXDR 2!A/]:[F 示例:
d:3G4g WK-WA$7\ [root@localhost ~]# rpm -ivh
ftp://fr.rpmfind.net/linux/fedor ... s/Fedora/RPMS/lynx-*
6H@=O1W Retrieving
ftp://fr.rpmfind.net/linux/fedor ... x-2.8.5-18.i386.rpm
]O^!P,l)" Preparing... ########################################### [100%]
rxO|k0x^C 1:lynx ########################################### [100%]
BQsy)H`4E --------------------------------------------------------------------------------
_15r!RZ:1 :2La, I_Q '+d 以下列出一些通用选项(可以用于所有模式):
>Py=H+d!j UPH:$Fk& --dbpath path
n<MH\.!tM 用path作为RPM数据库的路径。
Xr-eDUEi HA| YLj?|g --ftpport prot
y 2bZo'Z 用port作为FTP端口。
YDP< D+tn<\LF --ftpproxy host
6:Ra3!V"v 用host作为所有传输的代理服务器。如果你通过使用代理的防火墙系统连到FTP,就要指定该选项。
VK8 5A e tY9Pq --help
WSL_Dc 输出一个长的使用信息(如果运行rpm时没有选项,则给出短的使用信息)。
tR1
kn&w N]gdS]pP2{ --justdb
.pZwhb 只更新数据库;不改变任何文件。
?_IRO| 1Nv_;p.{ --pipe command
K*>lq|iu 用管道把rpm输出到commond。
6tVB}UKs uGOvZO^v --quiet
ZhW>H 仅显示错误信息。
Y<l{DmrsA |iJ37QIM --rcfile filename
S7@.s`_{w 用filename作为配置文件,而不用系统配置文件/etc/rpmrc或$HOME/.rpmrc。
v*kTTaU& VHJOj --root dir
F]xo * 在dir目录内执行所有操作。
'6WaG
hvO .7"
f~%&oP --version
in$Pk$ c 输出rpm版本号。
X2~>Z^,
U *:wu{3g}M` -vv
0Db#W6*^ 输出调试信息。
*G^QS"% s/8>(-H# --------------------------------------------------------------------------------
d x?4)lb \)pk/ 4Y[tx]< 安装升级和刷新
:beBiO mJl|dk_c 安装或升级一个RPM包,install命令的语法为:
xDm^f^}> p \1-. rpm -i [install-options] package_file
<rNCb; rpm --install [install-options] package_file
4 QD.'+L !>TH#sU$ 示例:
s+l)Q d
H]'&&M [root@localhost ~]# rpm -i lynx-2.8.5-18.i386.rpm
m
z) O package lynx-2.8.5-18 is already installed
d?S7E
q9` [root@localhost ~]# rpm --install lynx-2.8.5-18.i386.rpm
SnRk` 5t --------------------------------------------------------------------------------
%[b~4,c1 I8rtta "aHA6zTB 为了安装一个包的新版本,同时删除现有版本,使用upgrade命令:
CNQ>J`4 yc?+L;fN rpm -U [install-options] package_file
C[z5&
x2 rpm --upgrade [install-options] package_file
P
>HEV
a va[@XGaC3 示例:
`L /\F, NLf6} 先安装旧版
l*rli[No [root@localhost ~]# rpm -i lynx-2.8.5-11.i386.rpm
D=i)AZqMPp y
~7]9?T 再安装新版
hKj"Lb9] [root@localhost ~]# rpm -U lynx-2.8.5-18.i386.rpm
Tapj7/0` %3!DRz 显示出新版本信息
fo@2@ [root@localhost ~]# rpm -q lynx
0
fX lynx-2.8.5-18
e4ym6q<6! kO>F, M 说明:
.IXkdy -U的一个特点是如果包在系统上不存在,其作用就与-i选项一样,即安装包。
,onOwPz fL>>hBCqC 与-U的特点不一样,刷新(freshen)一个包,是指在已经安装了旧有版本时rpm才升级包。
fO|oV0Rw --------------------------------------------------------------------------------
)5Mf, [9Q}e;T e@|/, W 刷新的语法是:
Wz',>&a DEM;)-D rpm -F [install-options] package_file
)*Xd *z&m=G\ rpm --freshen [install-options] package_file
gTa6%GM> Y%m^V?k 示例:
F l@%? {@ ygq-TZ 从未安装过lynx包,使用-F选项,将无法升级。
b\&|030+ _Z'[-rcXWh [root@localhost ~]# rpm -F lynx-2.8.5-18.i386.rpm
wa7) [root@localhost ~]# rpm -q lynx
] ;"blB package lynx is not installed
8K$q6V%# --------------------------------------------------------------------------------
lC):$W Q4i@y6z ;w--fqxVl 安装和更新选项为:
Pv,Q*gh` x=s=~cu4, --allfiles
5F&xU$$a- 安装或更新所有文件。
Kw_> X&GcJ $ReoIU^< --badreloc
FtHR.S=u 与--relocate一起使用,强制重新定位,即使包不是可重定位的。
IY jt*p5 b5NPG N --excludedocs
XqX6UEVR4 不安装任何文档文件。
%\<SSp^n a$-:F$z --excludepath path
|:Q`9; 不安装文件名以path开始的任何文件。
+a7J;-| tgz --force
<Wqk5mR 强制安装。等价于使用--replacepkgs,--replacefiles和--oldpackage。
bLSXQStB Cp {
j+Ia -h,--hash
Ky(=O1Ufu 当包档案被解包时打印50个散列标记。使用--version选项以进行更好的显示。
fg}&=r C
0@tMB7 --ignorearch
9OI&De5?=V 即使二进制包用于不同的体系结果也进行安装。
b8o}bm{s /1OzX'5f --ignoreos
JzI/kH~ 即使操作系统不匹配也安装二进制包。
l.gt+e
iY_E"$}P --ignoresize
zPWJ=T@N 安装前不检查磁盘的可用空间。
%VZQX_ A 9\]y%! --includedocs
&"G4yM 安装文档文件。只有在rpmrc文件中指定了excludedocs:1时,才需要这个选项。
|1M+FBT$w z;fi --nodeps
/8](M5X]f 不检查这个包是否依赖于其他包的存在。
5BWO7F0v" vuP.V# --noorder
m 3k}iIU7 安装之前,不为了满足依赖关系而对包进行重新排序。
k(As^'> 1"7Rs}l7 --noscripts
e&*< "WN 不执行任何预安装或后安装脚本。
YhpNeP{A gpt98:w: --notriggers
s{q)P1x 不执行任何由包安装触发的脚本。
X%1j-;Wr@ Y5rR --oldpackage
H#zsk*=QD 允许升级以用旧包替换新包。
Dl/Jlsd@ 7=Vs1TVc --percent
ciQG.] 当文件被解压时输出完成百分比的信息。
"j(?fVx r0 mXRZC --prefix path
<]9%Pm#X 把可重定位包的安装前缀设置为path。
=~7%R.U([e [ vWcQ6m --replacefiles
gt~hUwL 即使包替换了来自其他安装包的文件,也安装这些包。
q>JW$8 AL(YQ)-Cg --replacepkgs
%(72+B70R 即使某些包已经被安装,也安装他们。
<0?h$hf4c 7J:zIC$u> --test
@#wBK3Ut^ 检查安装过程,看整个过程都做了些什么,但并不真正安装包。
Tno[LP, kaK0'l2% --------------------------------------------------------------------------------
G?`x$U U ]gxt+'iAFS Xn<~ln 查询
#:C?:RMS {OK+d#= query命令的语法为:
^&nC)T<w :
5=E>! rpm -q[information-options] [package-options]
X}!r4<;( rpm --query[information-options] [package-options]
!sbKJ+V7 4d\"gk 查询选项有两个子集:包选择选项决定查询什么包,信息选择选项决定提供什么信息。
>=<qAkk --------------------------------------------------------------------------------
X^pxu6nm- ,VtrQb)Yf ~Z ,bd$ 以下简单示演示一下包查询:
jSY&P/[xb ~}B6E) 简单查询:
aahAUhF H\BhAf 最简单的形式是rpm -q packagename查询。可以用这个命令寻找以安装包的版本。
@I`X{oAA +@
'(N 示例:
_'g'M=E g\Gx
oR [root@localhost ~]# rpm -q lynx
w>RBth^p lynx-2.8.5-18
hX?rIx --------------------------------------------------------------------------------
(
Lp~:p -85]x)JE ~hJ/&,vH! 信息查询:
;THb6Jz/+ J|ni'Hb rpm -qi packagename命令可以得到安装包的汇总信息。
ubq4Zv7' hN~]$"@2 示例:
8(GH.)I+0 [root@localhost ~]# rpm -qi lynx
Mo4#UV Name : lynx Relocations: (not relocatable)
<ZF,3~v? Version : 2.8.5 Vendor: Red Hat, Inc.
F0cde Release : 18 Build Date: 2004年07月08日 星期四 18时52分16秒
%TO=]>q Install Date: 2006年05月30日 星期二 13时27分21秒 Build Host: tweety.build.redhat.com
%D::$,;<< Group : 应用程序/互联网 Source RPM: lynx-2.8.5-18.src.rpm
^iWcuh_n Size : 4837340 License: GPL
}8+rrzMUB Signature : DSA/SHA1, 2004年10月21日 星期四 01时14分03秒, Key ID b44269d04f2a6fd2
kPh;SCr{ Packager : Red Hat, Inc. <
http://bugzilla.redhat.com/bugzilla> R`7v3{ URL :
http://lynx.isc.org/ CA0SH{PdW& Summary : 一个基于文本的网页浏览器。
J2c.J/o Description :
/U|> Lynx 是一个基于文本的 万维网 浏览器。Lynx不显示任何
a{?`yO/ 2 图像,但是它支持框架、表格、以及多数其它 HTML
mY}_9rTn| 标签。Lynx 优于图形化浏览器的地方是它的速度――
+Xb )bfN Links 能够快速启动、退出、及显示网页。
dMcCSwYh 标识拥有者
AixQR[Ul*c --------------------------------------------------------------------------------
95`Q=I|i 3 #fOrNU2 zw13Tu 找出什么包拥有文件file:
jGM+ \,U#^Vr 示例:
f?-=&||f78 {i:5XL [root@localhost ~]# rpm -qf /etc/lynx-site.cfg
&}TfJ=gj lynx-2.8.5-18
k>W5ts2+ --------------------------------------------------------------------------------
KJ7[DN'( me-:A:si /3MTutM|<X 列表包中的文件:
t}Z*2=DO HwE1cOT 如果对一个包不够了解,则可以用rpm -ql packagename命令列出包中的文件。这个表中确认某个配置文件或命令是否在这个包中。如果要升级,这个信息有助于了解升级有什么风险。
r*-e~ ER z@o_ 示例:
w"-' q\PHA 此为部分显示结果
Qv3g
4iJ [root@localhost ~]# rpm -ql lynx
R.(cGZS /etc/lynx-site.cfg
*b{C`[
=V /etc/lynx.cfg
q>$[<TsE&} /etc/lynx.cfg.cs
I'23$IzPA /etc/lynx.cfg.ja
n@3(bl5{ /etc/lynx.cfg.sk
XIv{jzgF /usr/bin/lynx
GCw<jHw /usr/share/doc/lynx-2.8.5
1
\#n{a3 /usr/share/doc/lynx-2.8.5/INSTALLATION
UfE41el: /usr/share/doc/lynx-2.8.5/README
f
zu#! /usr/share/doc/lynx-2.8.5/docs
q&eUw<(F /usr/share/doc/lynx-2.8.5/docs/CHANGES2.3
M<f=xY2$v /usr/share/doc/lynx-2.8.5/docs/CHANGES2.4
"8pfLI /usr/share/doc/lynx-2.8.5/docs/CHANGES2.5
D.e4S6\& /usr/share/doc/lynx-2.8.5/docs/CHANGES2.6
UV ?.KVD~ /usr/share/doc/lynx-2.8.5/docs/CHANGES2.7
FTB@70 /usr/share/doc/lynx-2.8.5/docs/CHANGES2.8
w(lxq:>" /usr/share/doc/lynx-2.8.5/docs/CMU.announce
gq$]jWtCD /usr/share/doc/lynx-2.8.5/docs/CRAWL.announce
9J"Y /usr/share/doc/lynx-2.8.5/docs/FM.announce
Yl65|=ne /usr/share/doc/lynx-2.8.5/docs/IBMPC-charsets.announce
?*I
_'2 /usr/share/doc/lynx-2.8.5/docs/OS-390.announce
R~z@voM*< /usr/share/doc/lynx-2.8.5/docs/README.TRST
1wx&/#a /usr/share/doc/lynx-2.8.5/docs/README.chartrans
MX3ss,F h6!o,qw" --------------------------------------------------------------------------------
/eM_:H5 p1dqDgF* i(eLE"G+ 列出包所提供的实际能力:
9Y9pKTU E8-8E2i, --provides选项的作用是列出这个包所提供的实际能力。
/ae]v+ D,aJ`PK~ 示例:
RETq S C:$12{I?* [root@localhost ~]# rpm -q --provides lynx
QK+s}ny config(lynx) = 2.8.5-18
MoKGnb webclient
G4!$48 lynx = 2.8.5-18
(#w8/@JxF --------------------------------------------------------------------------------
J- %YmUc) UOWOOdWSB *{5L*\AZ 列出这个包所倚赖的任何包:
X%+FM] $,vZX u|Qw -R,--requires选项的作用是列出这个包所依赖的任何包。
{H$F!}a $Cr? }'a 示例:
)~hsd+ 0t !Ua74C [root@localhost ~]# rpm -qR lynx
3I)!.N[m /bin/sh
x6,kG config(lynx) = 2.8.5-18
|"[[.Adw9" indexhtml
|51z&dG libc.so.6
)^&,[Q=i libc.so.6(GLIBC_2.0)
Zi+>#kDV libc.so.6(GLIBC_2.1)
b;!oPT libc.so.6(GLIBC_2.2)
_8Si8+j libc.so.6(GLIBC_2.3)
dXKv"*7l libcrypto.so.4
8aCa(Xu(H libncursesw.so.5
y{Wtm7fnA libssl.so.4
#S[:Q.0 ; libz.so.1
G0sg\] rpmlib(CompressedFileNames) <= 3.0.4-1
F,CQAgx rpmlib(PayloadFilesHavePrefix) <= 4.0-1
h[()!\vBy --------------------------------------------------------------------------------
`jR = X URW#nm? &hmyfH&S 列出包中的配置文件
c;,jb C9-90,
-c,--configfiles选项的作用是列出包中的配置文件
{5+t\~q$ z3IQPl^ 示例:
MSPzOJQPy jW6~^>S [root@localhost ~]# rpm -qc lynx
&[BDqi /etc/lynx-site.cfg
)J/,-p /etc/lynx.cfg
nq#k}Qx: /etc/lynx.cfg.cs
r4}:t$ /etc/lynx.cfg.ja
;{]%ceetcu /etc/lynx.cfg.sk
P;>8S:8
--------------------------------------------------------------------------------
V Iof4?i Im{I23.2 _oxc~v\< 显示有关于包的改变信息的日志:
<Bc J;X/ mw<LNnT{8 --changllog选项的作用是显示有关于包的改变信息的日志。
u</21fz' I;`)1
示例:
YQ>M&lnQ< [guJd"; 此为部分显示结果
d+KLtvB%M [root@localhost ~]# rpm -q --changelog lynx
9C5w!_b@ * 五 7月 09 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-18
v&}mbt- - Removed perl dependencies (bug #127423).
9N>Dp N * 三 6月 16 2004 Elliot Lee <
sopwith@redhat.com>
Y_&D W4 - rebuilt
zJWh * 三 5月 26 2004 Tim Waugh <
twaugh@redhat.com> 2.8.5-16
I:s#,!> - No longer need lynx-284-ipv6-salen.patch.
4#mRLs' - No longer need lynx2-8-2-telnet.patch.
MD ~03 * 六 2月 14 2004 Elliot Lee <
sopwith@redhat.com> 2.8.5-15
gIS<"smOo - rebuilt
}q-_|(b; * 二 12月 02 2003 Tim Waugh <
twaugh@redhat.com> 2.8.5-14
WpX)[au - Updated to dev16, fixing bug #110196.
P@'<OI - No longer need crlf patch.
RE]u2R6Y - Use shipped ja translations.
,.u7([SGm - Use %find_lang.
s OD>mc#%Y - Default config file now sets UTF-8 (bug #110986).
_yTGv- --------------------------------------------------------------------------------
\p"`!n b_*Y5"(* e:IUO1# 包选择选项
R;6(2bTN6 6\(wU?m'/ package_name
%s~MfK.k 查询已安装包的package_name。
[3++Q-rR= ZbJzf]y:6 -a,--all
yG'5u p 查询所有已安装拨。
Ip]-OVg 8>G3KZ3 -f file,--file file
bH+p5Fd; 找出什么包拥有文件file。
AW@I, W?8 |h -g group,--group group
0_Tr>hz 找出什么包拥有组group。
f.0~HnNg1 ^w4FqdGM -p package_file
Hep]jxp+ 查询未安装包package_file
n{j14b' FbQ"ZTN\;Y --querybynumber num
<#w0=W? 查询第num个数据库条目。主要用于调试。
O3#4B!J$E [ajF -qf,--queryformat num
I&|%Fn 指定显示查询结果时所采用的格式,使用标记来表示不同的数据类型(NAME,FILENAME,DISTRIBUTION)。格式说明是标准printf格式化的一个变体。
K2<Q9 ,vt aG QC --specfile specfile
:0ZFbIy 查询specfile,就好象它是个包
uArs[e|f zYfn;s%A --triggeredby pkg
[gFpFz|b< 列出触发安装pkg包的包。
w\KO1 Ob PgAC3%M6 --whatrequires capability
YC4S,fY` 列出要求特定能力来行使职责的包。
tUl#sqN_{ F*rU=cu --whatprovides capability
LBT{I)-K 列出提供特定能力的包。
R[5*]$(b --------------------------------------------------------------------------------
A:F*Y%ZW \?&P|7N +N2?fgA 信息选择选项:
dK,j| 0EfM~u -c,--configfiles
,g%2-#L% 列出包中的配置文件。
{E!ie{~ r6&f I"Yg --changelog
s%"3F<\ 显示有关于包的改变信息的日志。
=mYY8c Yl )s1W)J?8 -d,--docfiles
tsR\cO~/ 列出包中的文档文件。
F>E'/r* y/rmxQtP --dump
1pogk0h.: 转储包中每个文件的信息。这个选项必须至少与-l,-c或-d之一共同使用。
N~g@ 以下列顺序输出信息:
t8 g^W K path size mtime md5sum mode owner group isconfig isdoc rdev symlink
hv te) m/ 3b7c@r --filebypkg
B<(v\=xZ 列出每个包中的所有文件。
`s(T(l ZWaHG_
U) -i
D
Cx3_ 显示包的信息,包括名字,版本和描述。
B25@6 vtG_A{l -l,--list
)]L:OE 列出包中所有文件
IZBU<1M p't>'?UH| --last
|,L_d2lb 根据安装时间列出包,最新的包排第一位。
!VU[=~ +CtsD9PA --provides
K5No6dsD 列出这个包所提供的实际能力。
"P`V|g F)g.CDQ!c -R,--requires
4-z3+e 列出这个包所依赖的任何包。
fgYdKv8 '}4LHB;: -s,--state
@V:4tG.<sw 列出包中的每个文件及其状态。可能的状态为normal,not installed或replaced。
EaGh`*"w(7 5hak'#2 --scripts
-S\74hA 列出任何在安装和卸载过程中所使用的包特定的shell脚本。
Z?|\0GR+`5 rr>*_67-: --------------------------------------------------------------------------------
1a4
[w
2[: *0 DV# / 2>\Z ( 卸载
znv2: XNkw9*IT uninstall命令的语法为:
W*iPseXq x0B|CO rpm -e package_name
;o }pRC rpm --erase package_name
@SeE,< j4Ppn 示例:
We%-?l:" )B.NV<m [root@localhost ~]# rpm -e lynx
lR_ 4iyqb [root@localhost ~]# rpm -q lynx
=qiX0JT package lynx is not installed
l/0TNOA --------------------------------------------------------------------------------
9{_D"h}} X>l @1ZLr 卸载选项为:
?kvkkycI #R v&b@K --allmatches
\xJTsdd 删除包的所有版本。应该只指定一个包,否则会导致错误。
/Ps}IW ujsJ;\c --nodeps
'|Dm\cy 在卸载包之前不检查依赖性。
VXlTA>a } bSsX)wHm --noscripts
m,',luQ 不执行任何预卸载和后卸载脚本。
j/_@~MJBt iHhoNv`MR --notriggers
[4B.;MS( 不执行任何由这个包的删除而出发的脚本。
u6h"=l{ +O>1Ed --test
\hv1"WaJ 不真正卸载任何包,仅仅查看活动过程。