国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
rpm詳解

rpm詳解(收藏)- -

                                      

用法: rpm [選項...]

查詢選項 (參數(shù) -q 或 --query):
  -c, --configfiles                列出所有配置文件
  -d, --docfiles                   列出所有文檔文件
  --dump                           導(dǎo)出基本文件信息
  -l, --list                       列出包內(nèi)的所有文件
  --queryformat=QUERYFORMAT        使用緊跟的查詢格式
  -s, --state                      顯示文件列表的狀態(tài)
  -v, --verbose                    顯示詳細(xì)的文件列表
  -a, --all                        查詢/校驗所有包
  -f, --file                       查詢/校驗包的包含文件
  -g, --group                      查詢/校驗組內(nèi)的包
  -p, --package                    查詢/校驗一個包文件(例如一個二進(jìn)制的 *.rpm 文件)
  --querytags                      顯示已知的查詢標(biāo)簽
  --specfile                       查詢規(guī)格文件
  --whatrequires                   查詢/校驗指定包的依賴關(guān)系
  --whatprovides                   查詢/校驗指定包的被依賴關(guān)系

校驗選項 (參數(shù) -V 或 --verify):
  --nomd5[|=0x1]                   不使用MD5分類校驗文件
  --nofiles[|=0x10000]             不校驗包中的文件
  --nodeps[|=0x20000]              不校驗包的依賴關(guān)系
  --noscript[|=0x40000]            不執(zhí)行校驗?zāi)_本(任何腳本)
  -a, --all                        查詢/校驗所有包
  -f, --file                       查詢/校驗包所含的文件
  -g, --group                      查詢/校驗組內(nèi)的包
  -p, --package                    查詢/校驗一個包文件(例如一個二進(jìn)制的 *.rpm 文件)
  --querytags                      顯示已知的查詢標(biāo)簽
  --specfile                       查詢規(guī)格文件
  --whatrequires                   查詢/校驗指定包的依賴關(guān)系
  --whatprovides                   查詢/校驗指定包的被依賴關(guān)系

簽名選項:
  --addsign                        往包內(nèi)增加一個簽名
  --resign                         簽名一個包(去除當(dāng)前簽名)
  -K, --checksig                   校驗包的簽名
  --nogpg[&=~0x4]                  忽略任何GPG的簽名
  --nomd5[&=~0x2]                  不校驗文件的MD5的校驗數(shù)

數(shù)據(jù)庫選項:
  --initdb                         初始化數(shù)據(jù)庫
  --rebuilddb                      從已安裝包的頭信息中重建數(shù)據(jù)庫的反轉(zhuǎn)列表

安裝/升級/卸載選項:
  --allfiles[|=0x40]               安裝所有文件, 忽略找不到的配置項里面的部分
  --allmatches[|=0x2]              卸載所有和項匹配的包。(如果中指定多個包則會產(chǎn)生一個錯誤信息)
  --badreloc[|=0x8]                在非重定位包中重定位文件
  -e, --erase=+           卸載包
  --excludedocs[|=0x20]            不安裝文檔
  --excludepath=             帶引導(dǎo)組件的忽略文件
  --force[|=0x74]                  --replacepkgs --replacefiles的快捷方式
  -F, --freshen=+     在已安裝的情況下升級包
  -h, --hash[|=0x2]                為安裝包打上哈希標(biāo)記(最好帶-v選項)
  --ignorearch[|=0x2]              不校驗包的體系
  --ignoreos[|=0x1]                不校驗包的操作系統(tǒng)
  --ignoresize[|=0x180]            安裝之前不檢查磁盤空間
  --includedocs                    安裝文檔
  --install=+         安裝包
  --justdb[|=0x8]                  升級數(shù)據(jù)庫,但是不修改文件系統(tǒng)
  --nodeps                         不校驗包的依賴關(guān)系
  --noorder[|=0x8]                 不重新記錄包的安裝信息到依賴性中
  --noscripts[|=0xff0000]          不執(zhí)行包的腳本
  --notriggers[|=0x990000]         不執(zhí)行被該安裝包觸發(fā)的任何腳本
  --oldpackage[|=0x40]             升級到該包的一個舊版本
                                   (--force 升級的時候,該操作自動執(zhí)行)
  --percent[|=0x1]                 打印包的安裝進(jìn)度
  --prefix=                        如果允許重定位,則重定位包到

  --relocate==           從路徑重定位文件
  --repackage[|=0x400]             重新打包保存下來的卸載包的文件
  --replacefiles[|=0x30]           安裝時用包文件替換已安裝文件
  --replacepkgs[|=0x4]             如果包已經(jīng)存在,那么重新安裝
  --test[|=0x1]                    不安裝包,但是要檢測能否正常運行
  -U, --upgrade=+     升級包

所有rpm模式的通用選項:
  --version                        打印所使用的rpm的版本信息
  --quiet                          提供少量詳細(xì)信息輸出
  -v, --verbose                    提供更多的詳細(xì)信息輸出
  --define=‘ ‘         使用值來定義宏
  --eval=+                   打印+的宏擴(kuò)展
  -r, --root=           使用作為頂層目錄(默認(rèn): "/")
  --macros=<...>              讀入<...>來代替默認(rèn)的宏文件
  --rcfile=<...>              讀入<...>來代替默認(rèn)的rpmrc文件
  --showrc                         顯示最終的rpmrc和macro配置

通過popt alias/exec 實現(xiàn)的選項:
  --scripts                        列出包中的所有安裝/卸載腳本
  --setperms                       在包中設(shè)置文件的權(quán)限
  --setugids                       在包中設(shè)置文件的用戶/組關(guān)系
  --conflicts                      列出此包的兼容性
  --obsoletes                      列出安裝此包需要卸載的別的包
  --provides                       列出此包提供的兼容性
  --requires                       列出此包所需要的兼容性
  --info                           列出包中的敘述信息
  --changelog                      列出該包的變更日志
  --triggers                       列出包中的觸發(fā)腳本
  --last                           根據(jù)安裝時間列出包,最近時間的優(yōu)先
  --filesbypkg                     列出每個包的所有文件
  --redhatprovides                 根據(jù)所包含的提供的兼容性查找包名(需要安裝包rpmdb-redhat)
  --redhatrequires                 根據(jù)所依賴的包的兼容性查找包名(需要安裝包rpmdb-redhat)
  --buildpolicy=           設(shè)置包的根目錄(例如,壓縮man手冊)
  --with=

幫助選項:
  -?, --help                       顯示該幫助信息
  --usage                          顯示用法摘要

******************************************************
1.如何不安裝但是獲取rpm包中的文件
使用工具rpm2cpio和cpio
rpm2cpio xxx.rpm | cpio -vi
rpm2cpio xxx.rpm | cpio -idmv
rpm2cpio xxx.rpm | cpio --extract --make-directories
參數(shù)i和extract相同,表示提取文件。v表示指示執(zhí)行進(jìn)程
d和make-directory相同,表示根據(jù)包中文件原來的路徑建立目錄
m表示保持文件的更新時間。


2.如何查看與rpm包相關(guān)的文件和其他信息
下面所有的例子都假設(shè)使用軟件包mysql-3.23.54a-11
1.我的系統(tǒng)中安裝了那些rpm軟件包
rpm -qa 講列出所有安裝過的包
如果要查找所有安裝過的包含某個字符串sql的軟件包
rpm -qa |grep sql

3.如何獲得某個軟件包的文件全名
rpm -q mysql 可以獲得系統(tǒng)中安裝的mysql軟件包全名,從中可以獲得
當(dāng)前軟件包的版本等信息。這個例子中可以得到信息mysql-3.23.54a-11

4.一個rpm包中的文件安裝到那里去了?
rpm -ql 包名
注意這里的是不包括.rpm后綴的軟件包的名稱
也就是說只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。
如果只是想知道可執(zhí)行程序放到那里去了,也可以用which,比如
which mysql

5.一個rpm包中包含那些文件
一個沒有安裝過的軟件包,使用rpm -qlp ****.rpm
一個已經(jīng)安裝過的軟件包,還可以使用rpm -ql ****.rpm

6.如何獲取關(guān)于一個軟件包的版本,用途等相關(guān)信息?
一個沒有安裝過的軟件包,使用rpm -qip ****.rpm
一個已經(jīng)安裝過的軟件包,還可以使用rpm -qi ****.rpm


6.某個程序是哪個軟件包安裝的,或者哪個軟件包包含這個程序
rpm -qf `which 程序名` 返回軟件包的全名
rpm -qif `which 程序名` 返回軟件包的有關(guān)信息
rpm -qlf `which 程序名` 返回軟件包的文件列表
注意,這里不是引號,而是`,就是鍵盤左上角的那個鍵。
也可以使用rpm -qilf,同時輸出軟件包信息和文件列表


7.某個文件是哪個軟件包安裝的,或者哪個軟件包包含這個文件
注意,前一個問題中的方法,只適用與可執(zhí)行的程序,而下面的方法,不僅可以
用于可執(zhí)行程序,也可以用于普通的任何文件。前提是知道這個文件名。
首先獲得這個程序的完整路徑,可以用whereis或者which,然后使用rpm -qf例如:
# whereis ftptop
ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz
# rpm -qf /usr/bin/ftptop
proftpd-1.2.8-1
# rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt
proftpd-1.2.8-1

總結(jié):
獲得軟件包相關(guān)的信息用rpm -q,q表示查詢query,后面可以跟其他選項,比如
i 表示info,獲得軟件包的信息;
l 表示list,獲得文件列表;
a 表示all,在所有包中執(zhí)行查詢;
f 表示file,根據(jù)文件進(jìn)行相關(guān)的查詢;
p 表示package,根據(jù)軟件包進(jìn)行查詢
需要的查詢條件可以使用grep產(chǎn)生,或者從"` `"中的命令行產(chǎn)生


7.關(guān)于rpm軟件包的一些相關(guān)知識
1.什么是rpm
rpm 即RedHat Package Management,是RedHat的發(fā)明之一

8.為什么需要rpm
在一個操作系統(tǒng)下,需要安裝實現(xiàn)各種功能的軟件包。這些軟件包一般都有各自的
程序,但是同時也有錯綜復(fù)雜的依賴關(guān)系。同時還需要解決軟件包的版本,以及安裝,
配置,卸載的自動化問題。為了解決這些問題,RedHat針對自己的系統(tǒng)提出了一個
較好的辦法來管理成千上百的軟件。這就是RPM管理系統(tǒng)。在系統(tǒng)中安裝了rpm管理系統(tǒng)
以后,只要是符合rpm文件標(biāo)準(zhǔn)的打包的程序都可以方便的安裝,升級,卸載

9.是不是所有的linux都使用rpm
任何系統(tǒng)都需要包管理系統(tǒng),因此很多l(xiāng)inux都使用rpm系統(tǒng)。但rpm系統(tǒng)是為RH專門
但是TL,Mandrake等系統(tǒng)也都使用rpm。由于rpm的源程序可以在別的系統(tǒng)上進(jìn)行編譯,
所以有可能在別的系統(tǒng)上也使用rpm
除了rpm,其他一些系統(tǒng)也有自己的軟件包管理程序,例如debian的deb包,
slakware也都有自己的包管理系統(tǒng)

10.rpm包的文件名為什么那么長
rpm包的文件名中包含了這個軟件包的版本信息,操作系統(tǒng)信息,硬件要求等等。
比如mypackage-1.1-2TL.i386.rpm,其中mypackage是在系統(tǒng)中登記的軟件包的名字
1.1是軟件的版本號,2是發(fā)行號,TL表示用于TL操作系統(tǒng),還可能是RH等。i386表示
用于intel x86平臺,還可能是sparc等。

11.軟件包文件名中的i386,i686是什么意思
rpm軟件包的文件名中,不僅包含了軟件名稱,版本信息,還包括了適用的硬件架構(gòu)
的信息。
i386指這個軟件包適用于intel 80386以上的x86架構(gòu)的計算機(jī)(AI32)
i686指這個軟件包適用于intel 80686以上(奔騰pro以上)的x86架構(gòu)的計算機(jī)(IA32)
noarch指這個軟件包于硬件架構(gòu)無關(guān),可以通用。
i686軟件包的程序通常針對CPU進(jìn)行了優(yōu)化,所以,向后兼容比較用以,i386的包在
x86機(jī)器上都可以用。向前一般不兼容。不過現(xiàn)在的計算機(jī),奔騰pro以下的CPU已經(jīng)很少
用,通常配置的機(jī)器都可以使用i686軟件包


12.不同操作系統(tǒng)發(fā)行的rpm包可否混用?
對于已經(jīng)編譯成二進(jìn)制的rpm包,由于操作系統(tǒng)環(huán)境不同,一般不能混用。
對于以src.rpm發(fā)行的軟件包,由于需要安裝時進(jìn)行本地編譯,所以通??梢栽诓煌?
系統(tǒng)下安裝。


13.使用rpm時遇到的一些特殊問題
Q 我用rpm -e **.rpm無法刪除rpm包
A 包名不要包括rpm,
rpm -e 包名,可以包含版本號等信息,但是不可以有后綴.rpm

Q 在MS的系統(tǒng)下有沒有讀RPM文件的工具?
A wincmd with rpm plugins.....

Q 是否可以通過ftp安裝安裝升級rpm包?
A 可以。rpm -ivh ftp://xxxxxxxx/PATH2SomeRPM


Q rpm安裝時已有的包版本過高怎么辦?
A 有時由于安裝的軟件包太老,而系統(tǒng)中相關(guān)的軟件包版本比較新,所以可能需要
安裝的包依賴的一些文件會找不到。這時有兩種解決辦法,
第一是在系統(tǒng)文件中找到和需要的文件功能相同或相似的文件,做一個符號鏈接到
需要的目錄下。
第二是下載安裝新版本的軟件包。

******************************************************

從一般意義上說,軟件包的安裝其實是文件的拷貝,RPM安裝軟件包,也無外乎此。但RPM要更進(jìn)一步、更聰明一些就需要多做些工作了。

聰明的安裝
從一般意義上說,軟件包的安裝其實是文件的拷貝,即把軟件所用的各個文件拷貝到特定目錄。RPM安裝軟件包,無外乎此。但RPM要更進(jìn)一步,更聰明一些。在安裝前,它通常要執(zhí)行以下操作:

1.檢查軟件包的依賴(Dependency)

RPM格式的軟件包中可包含有依賴關(guān)系的描述,如軟件執(zhí)行時需要什么動態(tài)鏈接庫,需要什么程序存在及版本號要求等。當(dāng)RPM檢查時發(fā)現(xiàn)所依賴的鏈接庫或程序等不存在或不符合要求時,默認(rèn)的做法是中止軟件包安裝。

2.檢查軟件包的沖突(Conflicts)

有的軟件與某些軟件不能共存,軟件包制作者會將這種沖突記錄到RPM軟件包中。安裝時,若RPM發(fā)現(xiàn)有沖突存在,將會中止安裝。

3.執(zhí)行安裝前腳本程序(Preinstall)

此類程序由軟件包制作者設(shè)定,需要在安裝前執(zhí)行。通常是檢測操作環(huán)境,建立有關(guān)目錄,清理多余文件等等,為順利安裝作準(zhǔn)備。

4.處理配置文件(Configfiles)

RPM對配置文件(Configfiles)有著特別的處理。因為用戶常常需要根據(jù)實際情況,對軟件的配置文件做相應(yīng)的修改。如果安裝時簡單地覆蓋了此類文件,則用戶又得重新手工設(shè)置,很麻煩。這種情況下,RPM做得比較明智:它將原配置文件換個名字保存了起來(原文件名后綴加上.rpmorig),用戶可根據(jù)需要再恢復(fù),避免重新設(shè)置的尷尬。

5.解壓軟件包并存放到相應(yīng)位置

這是最重要的部分,也是軟件包安裝的關(guān)鍵所在。在這一步,RPM將軟件包解壓縮,將其中的文件一個個存放到正確的位置,同時,文件的操作權(quán)限等屬性相應(yīng)設(shè)置正確。

6.執(zhí)行安裝后腳本程序(Postinstall)

此類程序為軟件的正確執(zhí)行設(shè)定相關(guān)資源,如修改inetd.conf、運行l(wèi)dconfig程序以利新的動態(tài)鏈接庫生效等等。

7.更新RPM數(shù)據(jù)庫

安裝后,RPM將所安裝的軟件及相關(guān)信息記錄到其數(shù)據(jù)庫中,便于以后升級、查詢、校驗和卸載。

8.執(zhí)行安裝時觸發(fā)腳本程序(Triggerin)

觸發(fā)腳本程序是指軟件包滿足某種條件(如已安裝軟件包sendmail,或file版本大于3.0)時才觸發(fā)執(zhí)行的腳本程序,它用于軟件包之間的交互控制。觸發(fā)腳本程序有三類:一是軟件包安裝時才觸發(fā)的,稱為安裝時觸發(fā)腳本程序(triggerin);二是軟件包卸載前觸發(fā)的,叫作卸載前觸發(fā)腳本程序(triggerun);三是軟件包卸載后才觸發(fā)執(zhí)行的,稱作卸載后觸發(fā)腳本程序(triggerpostun)。這些觸發(fā)腳本程序,大大擴(kuò)展了RPM軟件包管理的功能。

命令格式
安裝RPM格式的軟件包,可使用如下命令格式:

rpm -i [安裝選項1 安裝選項2…] 包裹文件1 包裹文件2…

注:可用–install代替-i,效果相同。

選項列表


包裹文件
對于要安裝的RPM格式的包裹文件,RPM對其名字不作強(qiáng)制要求。用戶可以使用以下三種方式的命名樣式:

1.典型的命名樣式(常用):

格式為:軟件名-版本號-釋出號.體系號.rpm

注:體系號指的是執(zhí)行程序適用的處理器體系,如i386體系,sparc體系等。體系號為src時表明為源代碼包,否則為執(zhí)行程序包。

如abc-3.2-1.i386.rpm為執(zhí)行程序包,軟件名為abc,版本號為3.2,釋出號為1,適用體系為i386,而abc-3.2-1.src.rpm則為源代碼包。

2.URL形式的命名樣式(較常用):

* FTP方式的命名格式:ftp://[用戶名[:密碼]@]主機(jī)[:端口]/包裹文件

注:[]括住的內(nèi)容表示可選。主機(jī)可以是主機(jī)名,也可是IP地址。包裹文件可含目錄信息。如未指定用戶名,則RPM采用匿名方式傳輸數(shù)據(jù)(用戶名為anonymous)。如未指定密碼,則RPM會根據(jù)實際情況提示用戶輸入密碼。如未指定端口,則RPM使用默認(rèn)端口(一般為21)。

如ftp://ftp.xxx.com/yyy.rpm(使用匿名傳輸,主機(jī)ftp.xxx.com,包裹文件yyy.rpm);
如ftp://24.109.164.55:1024/pub/yyy.rpm(匿名FTP傳輸,主機(jī)IP:24.109.164.55,使用1024端口,包裹文件在/pub目錄下);
如ftp://zhsoft@ftp.xxx.com/yyy.rpm(主機(jī)ftp.xxx.com,F(xiàn)TP用戶名zhsoft,如有密碼,RPM將會自動提示輸入);
如ftp://zhsoft:password@ftp.xxx.com/yyy.rpm(主機(jī)ftp.xxx.com,F(xiàn)TP用戶名zhsoft,密碼password)。

* HTTP方式的命名:http://主機(jī)[:端口]/包裹文件

注:[]括住的內(nèi)容可選。主機(jī)可以是主機(jī)名,也可是IP地址。包裹文件可含目錄信息。如未指定端口,則RPM默認(rèn)使用80端口。

如http://www.xxx.com/yyy.rpm(用HTTP獲取www.xxx.com主機(jī)上的yyy.rpm文件);
又如http://www.xxx.com:8080/pub/yyy.rpm(用HTTP獲取www.xxx.com主機(jī)上/pub目錄下的yyy.rpm文件,使用端口8080)。

3.其它形式(很少使用):

命名格式:任意

如將abc-3.2-1.i386.rpm改名為abc.txt,用RPM安裝也會安裝成功,其根本原因是RPM判定一個文件是否RPM格式,不是看名字,而是看內(nèi)容,看其是否符合特定的格式。

選項詳解
一、安裝指定用選項
1.hash(或-h):以#顯示安裝進(jìn)度

如果一個軟件包很大、安裝費時時,用戶若想及時了解安裝進(jìn)度,必須用此選項。該選項以顯示#號表示進(jìn)度,每個#號表示2%的進(jìn)度,總共要顯示50個#號。下面安裝MySQL軟件包,如下所示:

# rpm -i –hash MySQL-3.22.32-1.i386.rpm
##################################################
#

從上看出,軟件包安裝順利完成。

2.percent:以%(百分比)顯示安裝進(jìn)度

percent的含義是百分比,而此選項的作用就是以百分比(%)來顯示安裝進(jìn)度的。同樣是安裝MySQL軟件包,下面的輸出就不一樣:

# rpm -i –percent MySQL-3.22.32-1.i386.rpm
%% 0.000000
%% 0.002600
%% 0.020586
……
%% 100.000000
#

上例中省略了很多輸出(……表示)。因為如果軟件包很大,則用–percent時輸出的內(nèi)容會很多,所以用戶最好用–hash選項,以#號來表示安裝進(jìn)度,這樣簡潔明了。

3.test:安裝測試

所謂安裝測試,意即并非真正的安裝,它不拷貝和建立任何文件。使用本選項的目的在于:檢測軟件包的依賴關(guān)系是否滿足,是否存在潛在的沖突等等。

# rpm -i –test autofs-3.1.3-2.i386.rpm
error: failed dependencies:
mktemp is needed by autofs-3.1.3-2
#

本例進(jìn)行安裝測試時發(fā)現(xiàn)了依賴方面的錯誤,autofs所需要的mktemp包不存在,安裝中斷。

下面先安裝mktemp軟件包,再進(jìn)行autofs安裝測試,看情況怎么樣:

# rpm -i mktemp-1.5-2.i386.rpm
# rpm -i –test autofs-3.1.3-2.i386.rpm
#

由上看出,這次測試沒有出現(xiàn)什么錯誤。

4.replacepkgs:替換軟件包

為什么要替換軟件包?原因可能是系統(tǒng)中的軟件包已經(jīng)破壞了,其中一個或多個文件丟失或損毀。如果用戶想修復(fù)這個軟件包,用直接安裝的方法,RPM將報錯退出:

# rpm -V file
missing/usr/man/man1/file.1
# rpm -i file-3.26-6.i386.rpm
package file-3.26-6 is already installed
#

注:本例先用RPM校驗命令校驗一下file軟件包,發(fā)現(xiàn)/usr/man/man1/file.1文件丟失。之后用安裝命令安裝,RPM提示軟件包file-3.26-6已經(jīng)安裝了。(有關(guān)RPM校驗命令,<<精通RPM之六--校驗篇>>中將會有詳細(xì)的介紹)

如果采用–replacepkgs選項,結(jié)果又怎樣呢?

# rpm -i –replacepkgs file-3.26-6.i386.rpm
# rpm -V file
#

看來,RPM成功地替換了原軟件包,校驗一下該包,發(fā)現(xiàn)沒有錯誤輸出,所以現(xiàn)在的軟件包是完整的。

5.replacefiles:替換文件

RPM是聰明的軟件包管理器,它維護(hù)著每個已安裝軟件包的文件信息。如果在安裝一個新的軟件包時,RPM發(fā)現(xiàn)其中某個文件和已安裝的某個軟件包中的文件名字相同但內(nèi)容不同,那么RPM就會認(rèn)為這是一個文件沖突,會報錯退出:

# rpm -i ff-4.0-2.i386.rpm
file /root/my.a from install of ff-4.0-2 conflicts with file from package zoo-6.0-1
#

注:本例中RPM發(fā)現(xiàn)要安裝的軟件包ff-4.0-2與已安裝的軟件包zoo-6.0-1中,含有相同的一個文件/root/my.a,但其內(nèi)容并不相同,所以提示了文件沖突的錯誤。

如果用戶想忽略這個錯誤,可使用–replacefiles選項,指示RPM發(fā)現(xiàn)文件沖突時,直接替換掉原文件即可。注意:除非用戶對所沖突的文件有很深的了解,不要輕易替換文件,以免破壞已安裝軟件包的完整性,確保其能正常運行。

# rpm -i –replacefiles ff-4.0-2.i386.rpm
#

采用該選項后,軟件包能順利安裝了。

另外,說到替換文件,若要安裝的軟件包中的文件已存在,但此文件并不屬于任何軟件包,RPM的做法是將文件換名保存(文件名后綴加.rpmorig),并且以警告信息提醒用戶。如下所示:

# rpm -i foo-6.0-1.i386.rpm
warning: /etc/foo.conf saved as /etc/foo.conf.rpmorig
#

6.allfiles:安裝所有文件

讀者看到此選項,也許要問:難道RPM安裝軟件包不是安裝其中所有的文件嗎?

我的回答是:如果是初次安裝的話,RPM確是將包中所有文件全部安裝。但是,如果是修復(fù)軟件包(用–replacepkgs選項),那結(jié)果就不一定了。個中原因是:RPM包中有些配置文件可標(biāo)識為missingok屬性(missingok指的是即使丟失,照樣OK),這樣的包安裝后,若這種類型的配置文件被刪除,則修復(fù)時RPM默認(rèn)的做法是不再安裝這種類型的文件,除非采用–allfiles選項。下面看個實際的例子:

# rpm -i foo-6.0-1.i386.rpm
# ls -l /etc/foo.conf
-rw-r–r– 1 root root9 Oct 11 09:50 /etc/foo.conf
# rm -f /etc/foo.conf
# rpm -i –replacepkgs foo-6.0-1.i386.rpm
# ls -l /etc/foo.conf
ls: /etc/foo.conf: 文件或目錄不存在
# rpm -i –replacepkgs –allfiles foo-6.0-1.i386.rpm
# ls -l /etc/foo.conf
-rw-r–r– 1 root root9 Oct 11 09:50 /etc/foo.conf

注:本例中已預(yù)先知道foo包中的配置文件/etc/foo.conf帶有missingok屬性。

(1)用rpm -i命令安裝foo包;

(2)用ls命令列一下屬于該包的配置文件/etc/foo.conf(能列出來,表明文件存在);

(3)用rm命令刪除了這個文件;

(4)用rpm -i –replacepkgs命令修復(fù)foo軟件包;

(5)因為修復(fù)時未用–allfiles選項,所以用ls命令列文件/etc/foo.conf時出錯了:文件不存在,沒有安裝上;

(6)用rpm -i –replacepkgs –allfiles命令安裝修復(fù)foo軟件包;

(7)再度用ls命令列文件,列了出來,表明這次安裝上了。

由本例看出,若用戶確實想安全恢復(fù)(修復(fù))某個軟件包,最好使用–allfiles選項。一般情況下則不必這么做,因為帶有missingok屬性的配置文件本來就是可以丟失的嘛,不必太在意了。

7.force:強(qiáng)制執(zhí)行

force的含義是強(qiáng)制。–force選項的作用就是強(qiáng)制安裝軟件包,不考慮軟件包是否已安裝,也不考慮有沒有文件沖突。其效果相當(dāng)于同時選用–replacepkgs與–replacefiles選項進(jìn)行安裝。

8.excludedocs:不安裝說明文檔

RPM有多個好功能,其中之一就是:它將文件分為配置文件,說明文檔和其它文件三種,這樣便于區(qū)別對待,靈活處理。

基于RPM安裝的LINUX發(fā)行版中包括5000多個說明文檔,有50M字節(jié),占用的空間不小。如果想節(jié)省空間,可使用–excludedocs選項以排除安裝說明文檔。

如軟件包file中包含/usr/man/man1/file.1和/usr/man/man4/magic.4兩個說明文檔。安裝時若使用–excludedocs選項,這兩個文檔就不會被安裝。

# rpm -i –excludedocs file-3.26-6.i386.rpm
# ls -l /usr/man/man1/file.1
ls: /usr/man/man1/file.1: 文件或目錄不存在
# ls -l /usr/man/man4/magic.4
ls: /usr/man/man4/magic.4: 文件或目錄不存在
#

如果用戶想讓RPM默認(rèn)不安裝說明文檔,則可以這么做:編輯~/.rpmmacros文件(用戶主目錄HOME下的RPM宏文件),加入下面一行:

%_excludedocs 1

其作用是定義RPM內(nèi)部的_excludedocs宏為1,確認(rèn)不安裝說明文檔。

這樣的話,就不用在命令行使用–excludedocs選項了。

# rpm -i file-3.26-6.i386.rpm
# ls -l /usr/man/man1/file.1
ls: /usr/man/man1/file.1: 文件或目錄不存在
# ls -l /usr/man/man4/magic.4
ls: /usr/man/man4/magic.4: 文件或目錄不存在
#

9.includedocs:安裝說明文檔

RPM一般情況下是安裝說明文檔的,但是如果用戶自行修改了設(shè)定(象上面的例子),則RPM就不再安裝說明文檔了,除非特別指定,這就用到–includedocs選項。這種情況下,只有用此選項才能確保安裝說明文檔。

# rpm -i –includedocs file-3.26-6.i386.rpm
# ls -l /usr/man/man1/file.1
-rwxr-xr-x 1 root root12023 Mar 23 1999 /usr/man/man1/file.1
# ls -l /usr/man/man4/magic.4
-rwxr-xr-x 1 root root 6625 Mar 23 1999 /usr/man/man4/magic.4
#

10.noscripts:不執(zhí)行腳本程序

一個RPM軟件包中可包含五種腳本程序,即:安裝前腳本程序,安裝后腳本程序,卸載前腳本程序,卸載后腳本程序和校驗?zāi)_本程序。安裝時使用–noscripts選項,可禁止安裝前與安裝后腳本程序的執(zhí)行。

# rpm -i foo-6.0-1.i386.rpm
preinstall is running … done
postinstall is running … done
#

上面不禁止腳本程序的執(zhí)行,下面不執(zhí)行腳本程序,請看輸出結(jié)果:

# rpm -i –noscripts foo-6.0-1.i386.rpm
#

看,因為沒有安裝前與安裝后腳本程序的執(zhí)行,所以沒有什么輸出了。

注意:一般用戶不要使用此選項。此選項主要提供給軟件包制作者使用的。通過禁止執(zhí)行腳本程序,可以防止因安裝帶有BUG的軟件包而宕掉整個系統(tǒng)。當(dāng)軟件包去掉了BUG后,此選項就不必使用了。

11.nodeps:不檢查依賴

RPM管理軟件包,不僅管理包中的所有文件,還同時管理著軟件包之間的依賴關(guān)系。如A依賴于B運行,若B不存在了,則A也就運行不了了。RPM維護(hù)著這種關(guān)系,盡量避免破壞,以保證軟件的正常運行。

# rpm -i autofs-3.1.3-2.i386.rpm
error: failed dependencies:
mktemp is needed by autofs-3.1.3-2
#

本例安裝中出現(xiàn)了依賴方面的錯誤(autofs依賴mktemp,但mktemp不存在),安裝過程中斷了。如果要RPM不管依賴關(guān)系是否正常都安裝,就要用–nodeps選項,指示RPM不檢查依賴,這樣就能正常安裝了。

# rpm -i –nodeps autofs-3.1.3-2.i386.rpm
#

注:除非用戶對軟件包有足夠了解,或只想看看軟件,否則不要使用本選項,以維護(hù)軟件間正常的依賴關(guān)系。

12.notriggers:不執(zhí)行觸發(fā)程序

為了軟件包間的交互控制,RPM設(shè)計了三種觸發(fā)程序:安裝時觸發(fā)程序,卸載前觸發(fā)程序和卸載后觸發(fā)程序。為了防止因某一軟件包的安裝而引發(fā)安裝時觸發(fā)程序的執(zhí)行,可以使用–notriggers選項。

13.ignorearch:忽略體系與ignoreos :忽略操作系統(tǒng)

何謂體系?體系就是CPU的類別,有Intel的x86(如i386,i486系列)體系,有Sun的sparc體系等等。當(dāng)一個軟件包建立時,RPM就為其指定了所適用的CPU體系,也為其指定了所適用的操作系統(tǒng)。這樣做的好處就是,RPM容易知道為一臺計算機(jī)所建立的軟件包是否適用于兼容于另一臺計算機(jī)。RPM的資源配置文件(默認(rèn)為/usr/lib/rpm/rpmrc)中,就定義了體系的兼容關(guān)系(arch_compat表達(dá))和操作系統(tǒng)的兼容關(guān)系(os_compat表達(dá))。RPM安裝一個包裹文件時,要做這樣一個兼容方面的檢查。如果用戶想忽略體系,不管其是否兼容,請用–ignorearch選項安裝。如果也不管操作系統(tǒng)是否兼容,可用–ignoreos選項。需要指出的是,若非知道自己這樣的目的,否則不要試圖這樣做。

14.ignoresize:不檢查空間大小

RPM安裝軟件包前,首先要檢查當(dāng)前系統(tǒng)是否有足夠的剩余空間,如果空間不足的話,安裝將無法完成。使用本選項的目的,在于指示RPM不做空間大小方面的檢查,意即不管系統(tǒng)是否有容納要安裝的軟件包的空間,照直安裝就行了。

15.relocate:重定位

RPM軟件包在制作過程中,可以定義一個或多個重定位前綴,以此方便軟件的重定位(即把軟件包中的文件放到自定義的目錄下面),從而增加軟件包安裝的靈活性。

本選項用于更換指定的重定位目錄,如果一個包有多個重定位前綴,可以使用本選項多次。

# rpm -qpl file-3.26-6.i386.rpm
/usr/bin/file
/usr/man/man1/file.1
/usr/man/man4/magic.4
/usr/share/magic
# rpm -i –relocate /usr=/tmp file-3.26-6.i386.rpm
# rpm -ql file
/tmp/bin/file
/tmp/man/man1/file.1
/tmp/man/man4/magic.4
/tmp/share/magic
#

注:本例中先用rpm -qpl列出包裹文件file-3.26-6.i386.rpm當(dāng)中的文件,可以看到其中的文件均是以/usr開頭的。之后進(jìn)行重定位安裝,將/usr換作/tmp。最后從列出已安裝的file包的文件列表可以看出,原來的/usr目錄前綴換作指定的前綴/tmp了,這樣實現(xiàn)了軟件的重定位。(關(guān)于RPM查詢命令,詳見<<精通RPM之五--查詢篇>>)

16.badreloc:強(qiáng)制重定位

RPM軟件包的重定位,依賴于制作時重定位前綴的定義。如果沒有定義重定位前綴,或者用戶安裝時所指定的重定位前綴不存在,則RPM會報錯退出,中斷安裝。此時,若用本選項,則RPM會不管這些錯誤,進(jìn)行強(qiáng)制的重定位安裝。注:本選項和–relocate選項同時使用時才有意義。

如上例,采用并不存在的重定位前綴/usr/man進(jìn)行安裝:

# rpm -i –relocate /usr/man=/tmp file-3.26-6.i386.rpm
path /usr/man is not relocateable for package file-3.26-6
#

RPM提示了錯誤:/usr/man目錄在file-3.26-6包中是不可重定位的。

如加上–badreloc選項,結(jié)果怎么樣:

# rpm -i –relocate /usr/man=/tmp –badreloc file-3.26-6.i386.rpm
# rpm -ql file
/usr/bin/file
/tmp/man1/file.1
/tmp/man4/magic.4
/usr/share/magic
#

由上可以看到,這樣的強(qiáng)制重定位獲得通過,之后再用查詢命令rpm -ql列一下file包的文件,就會發(fā)現(xiàn)原來的/usr/man/man1/file.1定位成了/tmp/man1/file.1,而/usr/man/man4/magic.4則成了/tmp/man4/magic.4。怎么樣?神奇吧!

17.excludepath:不安裝指定目錄下的文件

利用此選項,可以禁止RPM安裝某些指定目錄下的文件。如不想安裝file軟件包中的說明文檔,除了可使用–excludedocs選項外,還可使用本選項。因為file的說明文檔均在目錄/usr/man下面。

# rpm -i –excludepath /usr/man file-3.26-6.i386.rpm
# rpm -qls file
normal/usr/bin/file
not installed /usr/man/man1/file.1
not installed /usr/man/man4/magic.4
normal/usr/share/magic
#

注:例子中先安裝file軟件包,并用–excludepath禁止安裝/usr/man下的文件,再用RPM查詢命令rpm -qls列出file包的文件及狀態(tài),可以看到:/usr/man下的兩個文件均未安裝(not installed)。

18.justdb:僅更新數(shù)據(jù)庫

安裝軟件包使用此選項后,RPM將只更新其數(shù)據(jù)庫數(shù)據(jù),文件系統(tǒng)不更新,意即并不拷貝和建立包中的文件。

# rpm -i –justdb file-3.26-6.i386.rpm
# rpm -qls file
normal/usr/bin/file
normal/usr/man/man1/file.1
normal/usr/man/man4/magic.4
normal/usr/share/magic
# ls -l /usr/bin/file
ls: /usr/bin/file: 文件或目錄不存在
#

注:例子中安裝file包但指明只更新數(shù)據(jù)庫,結(jié)果是:雖然用查詢命令查到該軟件包中所有文件狀態(tài)均正常(normal),但用ls命令列包中所含文件/usr/bin/file,該文件卻不存在。這表明包中文件并未建立。

19.prefix:指定重定位前綴

如前所述,可重定位的軟件包可含一個或多個重定位前綴,可用–relocate選項來改變某個重定位前綴之值。–prefix選項僅能用來改變默認(rèn)的重定位前綴(默認(rèn)是第一個重定位前綴),它不需要說明原重定位前綴。下面的例子同樣將file包安裝到/tmp目錄:

# rpm -qpl file-3.26-6.i386.rpm
/usr/bin/file
/usr/man/man1/file.1
/usr/man/man4/magic.4
/usr/share/magic
# rpm -i –prefix /tmp file-3.26-6.i386.rpm
# rpm -ql file
/tmp/bin/file
/tmp/man/man1/file.1
/tmp/man/man4/magic.4
/tmp/share/magic
#

20.ftpproxy:指定FTP代理主機(jī)

本選項指定FTP代理主機(jī),主機(jī)可以是主機(jī)名,也可以是IP地址。

21.ftpport:指定FTP端口

本選項指定FTP協(xié)議使用的TCP端口,系統(tǒng)默認(rèn)是21。

請看下面的例子:

# rpm -iv –ftpport 8888 ftp://root@xwboc/tmp/file-3.26-6.i386.rpm
Password for root@xwboc:
Password for root@xwboc:
Retrieving ftp://root@xwboc/tmp/file-3.26-6.i386.rpm
file-3.26-6
#

本例中用FTP方式安裝file軟件包,數(shù)據(jù)傳輸使用8888端口。執(zhí)行中,RPM先提示輸入root用戶的密碼兩次,之后下載(retrieve)軟件,最后成功安裝。

22.httpproxy:指定HTTP代理主機(jī)

本選項指定HTTP代理主機(jī),主機(jī)可以是主機(jī)名,也可以是IP地址。

23.httpport:指定HTTP端口

本選項指定HTTP協(xié)議使用的TCP端口,系統(tǒng)默認(rèn)是80。

下面的例子就指定了80端口來安裝autofs軟件,當(dāng)然不指定也行,因為系統(tǒng)默認(rèn)的就是這個端口。

# rpm -iv –httpport 80 http://24.109.164.55/rpms/autofs-3.1.3-2.i386.rpm
Retrieving http://24.109.164.55/rpms/autofs-3.1.3-2.i386.rpm
autofs-3.1.3-2
#

注:同F(xiàn)TP方式一樣,RPM都是下載再安裝。

二、通用選項
所謂通用選項,就是不管是安裝,升級,卸載還是其它軟件包操作,統(tǒng)統(tǒng)適用的選項。

這樣的選項主要以下幾個:

1.-v:顯示附加信息

一般情況下,RPM和不少LINUX命令(如cp,rm,mv等)一樣,都本著盡可能少輸出信息的原則(除非必要,否則不要輸出),這樣做是為了避免浪費CPU資源。所以,當(dāng)用戶使用某個命令后沒有什么輸出,這就意味著命令執(zhí)行成功了。如果有什么錯誤,程序會提示的。RPM也是這個樣子。為了使RPM輸出多一點的信息,可以使用-v選項。

如不帶此選項安裝file包,沒有輸出:

# rpm -i file-3.26-6.i386.rpm
#

而采用-v選項后安裝時輸出了包名:

# rpm -i -v file-3.26-6.i386.rpm
file-3.26-6
#

2.-vv:顯示調(diào)試信息

選用-vv選項,可以使RPM輸出更多的信息。這些信息,主要供RPM軟件開發(fā)者研究使用的,一般用戶也可以看看,從中可以知道RPM究竟干些什么。

下面采用此選項安裝file包,同時使用管道線(|)將輸出數(shù)據(jù)送nl命令,以帶行號輸出每行數(shù)據(jù)。

從執(zhí)行結(jié)果看,輸出的信息很多,其中以D:開頭的行均是調(diào)試信息?,F(xiàn)在逐行解釋:

第1行:統(tǒng)計要安裝的軟件包個數(shù);

第2行:RPM找到1個包;

第3行:查看哪些包需要下載(這些要下載的包,都是以FTP或HTTP形式書寫的包名);

第4行:下載了0個包;

第5-10行:取包裹文件的文件頭信息,算出軟件包占用的空間68019(字節(jié)),以利檢查

系統(tǒng)是否有足夠空間。

第11行:打開RPM數(shù)據(jù)庫;

第12行:找到0個源代碼包,1個執(zhí)行代碼包;

第13-18行:檢查軟件包的依賴關(guān)系。其依賴(requires)的東西均得到滿足(satisfied)。

第19行:準(zhǔn)備安裝執(zhí)行代碼包;

第20行:取得已安裝文件系統(tǒng)的列表;

第21-26行:再度取包裹文件頭信息,算出軟件包占用空間;

第27-31行:列出包中文件及要執(zhí)行的操作,第27行的test=0表示不是進(jìn)行安裝測試,

file包中的文件均要執(zhí)行創(chuàng)建操作(create)。

第32行:如果有安裝前執(zhí)行腳本程序的話,執(zhí)行它;

第33行:安裝軟件包file-3.26-6;

第34行:如果有安裝后執(zhí)行腳本程序的話,執(zhí)行它。

3.root:指定根目錄

指定根目錄ROOT,其作用在于將系統(tǒng)所有操作限定在指定的目錄下面,這樣RPM操作的數(shù)據(jù)庫位置變了,軟件包的安裝位置也變了。它是通過chroot系統(tǒng)調(diào)用實現(xiàn)的。RPM默認(rèn)的數(shù)據(jù)庫目錄是/var/lib/rpm,如果指定根目錄為/usr,則RPM的數(shù)據(jù)庫目錄將變?yōu)?usr/var/lib/rpm。同樣,如果包中有個文件為/etc/zhsoft.txt,則安裝后為/usr/etc/zhsoft.txt。

看下面的例子:

# rpm -i –root /usr file-3.26-6.i386.rpm
failed to open /usr/var/lib/rpm/packages.rpm

error: 不能打開 /usr/var/lib/rpm/packages.rpm
#

注:指定RPM根目錄為/usr安裝file出現(xiàn)錯誤,RPM打不開/usr/var/lib/rpm/packages.rpm文件,這是因為實際上在/usr/var/lib/rpm目錄下沒有任何RPM數(shù)據(jù)庫。如果想成功安裝,可用初始化RPM數(shù)據(jù)庫命令來建立RPM數(shù)據(jù)庫,命令是rpm –initdb –root /usr(這些功能將在以后講到)。

4.rcfile:指定RPM資源配置文件

RPM的資源配置文件里,存放著RPM的默認(rèn)設(shè)置,有編譯選項optflags,體系定義arch_canon,兼容定義arch_compat,宏文件定義macrofiles等。RPM默認(rèn)的資源配置文件(按讀取順序)為:/usr/lib/rpm/rpmrc,/etc/rpmrc,~/.rpmrc。(后兩個文件現(xiàn)在意義不大了,如今一般換作RPM宏文件了。較之資源配置文件,宏文件有更大的靈活性。)

如果想讓RPM使用用戶指定的資源配置文件,就用–rcfile來設(shè)定,可同時設(shè)定多個文件,文件間以冒號(:)分隔,如/usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc這種形式。

5.dbpath:指定RPM數(shù)據(jù)庫目錄

本選項不同于–root選項,它僅僅是指定RPM數(shù)據(jù)庫的目錄,并不改變安裝文件的位置。

- 作者: Daemon 訪問統(tǒng)計: 201 2005年11月8日, 星期二 14:42 加入博采 打印

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
精通RPM之查詢篇
Linux入門系列軟件包管理
RPM及其rpm命令詳解
rpm 中文手冊【譯者:金步國】
軟件安裝之--RPM命令大全!
細(xì)說Linux下軟件包的安裝與管理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服