欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux rpm卸載參數(shù)

本站整理   發(fā)布時間:2009-03-10 15:38:48   作者:jb51.net   我要評論
rpm卸載參數(shù)--test : 卸載測試 --nodeps : 不檢查依賴 --noscripts : 不執(zhí)行腳本程序 --notriggers : 不執(zhí)行觸發(fā)程序 --justdb : 僅修改數(shù)據(jù)庫 --force 強(qiáng)制 RPM卸載軟件包,并不是簡單地將原來安裝的文件逐個刪除,那樣做的話,可能會出現(xiàn)這樣或那樣的問題。如,A

rpm卸載參數(shù)--test : 卸載測試  --nodeps : 不檢查依賴 --noscripts : 不執(zhí)行腳本程序 --notriggers : 不執(zhí)行觸發(fā)程序 --justdb : 僅修改數(shù)據(jù)庫 --force 強(qiáng)制 
RPM卸載軟件包,并不是簡單地將原來安裝的文件逐個刪除,那樣做的話,可能會出現(xiàn)這樣或那樣的問題。如,A軟件包依靠B軟件包做某些工作,若B軟件包卸載了,則A軟件包就不能正常運行了。RPM為用戶安全考慮,會做某些檢查,盡可能排除出錯的情況。   
RPM在卸載軟件包時,分步驟進(jìn)行如下操作:   
1. 檢查依賴(Denpendency)   
檢查依賴的目的,在于確保當(dāng)前沒有任何軟件包依賴于當(dāng)前要卸載的軟件包。   
2. 執(zhí)行卸載前觸發(fā)腳本程序(Triggerun)   
3. 執(zhí)行卸載前腳本程序(Preuninstall)   
本程序為軟件包制作者設(shè)定,完成卸載前的一些工作,具體如,要卸載的軟件包中某個   
程序當(dāng)前正在運行時,腳本程序必須殺掉它,否則不能正確卸載。   
4. 檢查配置文件(Configfiles)   
RPM卸載軟件包前會檢查包中的配置文件是否修改了,如果修改了,RPM要換個名字保存   
該文件,文件名一般是“原文件名+.rpmsave”。(這是RPM軟件包管理的特色之一)   
5. 真正卸載   
即按照軟件包中的文件列表,將文件逐個刪除。要注意的是,如果其中有文件屬于別的   
軟件包(即兩個軟件包擁有一個名字相同的文件),則RPM并不刪除。   
6. 執(zhí)行卸載后腳本程序(Postuninstall)   
本程序主要是完成卸載的善后工作,如將系統(tǒng)配置文件inetd.conf修改一下,去掉安裝   
時添加的東西等等。   
7. 更新RPM數(shù)據(jù)庫   
卸載后,RPM刪除該軟件包在數(shù)據(jù)庫中的所有信息。   
8. 執(zhí)行卸載后觸發(fā)腳本程序(Triggerpostun)   
命令格式   
rpm -e [卸載選項1 卸載選項2...] [軟件包標(biāo)識1 軟件包標(biāo)識2...]  
注: 也可使用--erase代替-e,效果相同。   
軟件包標(biāo)識  
對于已安裝的軟件包,RPM使用如下格式來唯一標(biāo)識它:   
Name[-Subname]-Version-Release  
其中: Name: 指軟件名;  
Subname : 本項可選,指軟件包子包的名字;  
Version : 指軟件版本號。注意:其中不能含減號(-)字符;  
Release : 指軟件釋出號。  
例如: 包裹文件file-3.26-6.i386.rpm安裝后,其軟件包標(biāo)識為file-3.26-6??梢杂么藰?biāo)識卸載,查詢,校驗該軟件包。在命令行上輸入軟件包標(biāo)識時,可以寫全,也可以采用簡寫的方式。如file-3.26-6,可僅輸入file,或file-3.26,或輸全。又如: 帶有子包的軟件包標(biāo)識XFree86-devel-3.3.6-6,可僅輸入XFree86-devel,或XFree86-devel-3.3.6,還可完全輸入。   
注意: 軟件包標(biāo)識是大小寫敏感的,即大寫字母與小寫字母表示不同的涵義。如bash-2.03-10標(biāo)識不能輸作Bash-2.03-10,也不能輸作bAsh-2.03-10等等。   
下面對指定用選項做些解釋:   
1. --test : 卸載測試   
RPM的卸載測試做些什么?主要是檢查依賴關(guān)系,確保系統(tǒng)中沒有軟件包依賴于要卸載的軟件包。如果還有軟件包依賴要卸載的軟件包,則RPM會提示依賴關(guān)系將中斷的錯誤,例如:   
# rpm -e --test mktemp  
error: removing these packages would break dependencies:  
mktemp is needed by autoconf-2.13-5  
mktemp is needed by dev-2.7.7-4BP  
mktemp is needed by groff-1.11a-10BP  
mktemp is needed by gzip-1.2.4-15BP  
mktemp is needed by initscripts-4.16-3BP  
mktemp is needed by metamail-2.7-21BP  
mktemp is needed by rpm-3.0.3-4BP  
mktemp is needed by autofs-3.1.3-2  
/bin/mktemp is needed by apache-1.3.12-5BP  
/bin/mktemp is needed by linuxconf-1.16r1.3-4BP  
#  
當(dāng)然,我們通過瀏覽卸載測試時輸出的調(diào)試信息就知道得更清楚了。   
# rpm -e --test -vv file | nl  
1 D: opening database mode 0x0 in //var/lib/rpm/  
2 D: getting list of mounted filesystems  
3 + echo triggeruninstall  
4 triggeruninstall  
5 D: will remove files test = 1  
6 D:file: /usr/share/magic action: remove  
7 D:file: /usr/man/man4/magic.4 action: remove  
8 D:file: /usr/man/man1/file.1 action: remove  
9 D:file: /usr/bin/file action: remove  
10 + echo triggerpostuninstall  
11 triggerpostuninstall  
12 D: removing database entry  
注: 本例進(jìn)行file包的卸載測試,輸出信息送管道交nl列出行號,現(xiàn)逐行解釋。(行號后以D:開始的行輸出的為調(diào)試信息)   
第1行: 打開/var/lib/rpm目錄下的RPM數(shù)據(jù)庫;   
第2行: 取已安裝文件系統(tǒng)列表;   
第3行: 執(zhí)行卸載前觸發(fā)腳本程序;   
第4行: 這一行是卸載前觸發(fā)腳本程序的執(zhí)行結(jié)果;   
第5行: RPM提示將要刪除文件,其中test=1表明為卸載測試,并非真正刪除;   
第6-9行: 顯示各文件的執(zhí)行操作--刪除;   
第10行: 執(zhí)行卸載后觸發(fā)腳本程序;   
第11行: 本行是卸載后觸發(fā)腳本程序的執(zhí)行結(jié)果;    #p#分頁標(biāo)題#e#
第12行: 刪除軟件包在數(shù)據(jù)庫中的信息。   
2. --nodeps : 不檢查依賴   
RPM管理軟件包,不僅管理包中的所有文件,還同時管理著軟件包之間的依賴關(guān)系。如A依賴于B運行,若B不存在了,則A也就運行不了了。RPM維護(hù)著這種關(guān)系,盡量避免破壞,以保證軟件的正常運行。上例進(jìn)行mktemp包的卸載測試時,RPM提示了中斷依賴關(guān)系的錯誤。如果使用本選項,不檢查依賴,則卸載測試會順利完成。   
# rpm -e --test --nodeps mktemp  
#  
需要說明的是,除非用戶對軟件包有足夠了解,否則不要使用本選項,最好讓RPM自動維護(hù)軟件間的依賴關(guān)系,確保其能正常運行。   
3. --noscripts : 不執(zhí)行腳本程序   
一個RPM軟件包中可包含五種腳本程序,即:安裝前腳本程序,安裝后腳本程序,卸載前腳本程序,卸載后腳本程序和校驗?zāi)_本程序。卸載時使用--noscripts選項,可禁止卸載前與卸載后腳本程序的執(zhí)行。   
注意: 一般用戶不要使用此選項。此選項主要提供給軟件包制作者使用的。通過禁止執(zhí)行腳本程序,可以防止因安裝帶有BUG的軟件包而宕掉整個系統(tǒng)。當(dāng)軟件包去掉了BUG后,此選項就不必使用了。   
4. --notriggers : 不執(zhí)行觸發(fā)程序   
為了軟件包間的交互控制,RPM設(shè)計了三種觸發(fā)程序:安裝時觸發(fā)程序,卸載前觸發(fā)程序和卸載后觸發(fā)程序。為了防止因某一軟件包的卸載而引發(fā)卸載前與卸載后觸發(fā)程序的執(zhí)行,可以使用--notriggers選項。通過比較下一例子與第1個選項介紹中的例子的輸出,就可看到:選擇--notriggers選項后,卸載前與卸載后觸發(fā)程序都沒有被觸發(fā)執(zhí)行。   
# rpm -e --test -vv --notriggers file | nl  
1 D: opening database mode 0x0 in //var/lib/rpm/  
2 D: getting list of mounted filesystems  
3 D: will remove files test = 1  
4 D:file: /usr/share/magic action: remove  
5 D:file: /usr/man/man4/magic.4 action: remove  
6 D:file: /usr/man/man1/file.1 action: remove  
7 D:file: /usr/bin/file action: remove  
8 D: removing database entry  
5. --allmatches : 卸載所有匹配的包  
RPM可將同一軟件的不同版本安裝到系統(tǒng)中,這樣如果想全部卸載掉,這時僅簡單輸軟件名是不行的,將出現(xiàn)錯誤,如:   
# rpm -q foo  
foo-6.0-1  
foo-7.0-1  
# rpm -e foo  
error: "foo" specifies multiple packages  
#  
注: 本例中先查詢foo包,發(fā)現(xiàn)有6.0和7.0版兩個版本,接著卸載foo包,出現(xiàn)錯誤: 有多個軟件包的名字均為foo。   
怎樣才能全部卸載呢?   
答案之一是一個一個卸載,卸載時輸入軟件包標(biāo)識,因為軟件名相同,所以最少再輸個版本號,這種情況適用于軟件版本少的時候。   
# rpm -e --allmatches foo  
# rpm -q foo  
package foo is not installed  
#  
卸載過程沒有出現(xiàn)錯誤,之后再查詢foo包,RPM則提示軟件包未安裝。   
6. --justdb : 僅修改數(shù)據(jù)庫   
使用本選項后,RPM將只更新其數(shù)據(jù)庫,文件系統(tǒng)不更新,意即如果軟件包安裝有文件的話,卸載后這些文件照樣存 # rpm -ql file  
/usr/bin/file  
/usr/man/man1/file.1  
/usr/man/man4/magic.4  
/usr/share/magic  
# ls -l /usr/bin/file  
-rwxr-xr-x 1 root root23948 Mar 23 1999 /usr/bin/file  
# rpm -e --justdb file  
# ls -l /usr/bin/file  
-rwxr-xr-x 1 root root23948 Mar 23 1999 /usr/bin/file  
#  
注: 本例先用rpm -ql查詢得到file包的文件列表,再用ls命令列包中的一個文件/usr/bin/file,能列出信息,故文件存在。然后用rpm -e --justdb卸載file包但只更新數(shù)據(jù)庫,而后再用ls命令列/usr/bin/file,可以看到該文件依然存在。   

相關(guān)文章

最新評論