Linux系統(tǒng)下rpm包的安裝、刪除、效驗、查詢
安裝軟件包
rpm -i 包全名
刪除
rpm -e name(不是包名)
參數(shù)
-ivh 獲得一個詳細的安裝進程
--nodeps 忽略依賴關(guān)系
--force 強制安裝
-U 包名:升級安裝
-F 更新不管是什么直接覆蓋
--replacepkgs這樣 RPM 將忽略該錯誤信息 -vih --replacepkgs
-q name :查詢
-qa查詢所有已安裝的RPM
-qi name 查詢這個軟件詳細信息
-ql 顯示列表
-qf path :查詢一個文件屬于哪個包
-qp 包名 :查文件是什么
-qpl 包名 :針對一個沒裝過的包
rpm -qc 配置文件
效驗 rpm -Va
rpm -Vf /bin/ls
rpm -Vp 包名
5 -- MD5 校驗和
S -- 文件長度
L -- 符號鏈接
T -- 文件修改日期
D -- 設(shè)備
U -- 用戶
G -- 用戶組
M -- 模式 (包含許可和文件類型)
? -- 不可讀文件
詳細課程
使用 RPM
RPM 有五個基本的操作 模式(不包括包的編譯): 安裝,卸載,升級,查詢,校驗。本節(jié)將對它們一一介紹。要了解完整的細節(jié)和選項,可以使用 rpm --help, 或轉(zhuǎn)到 the section called 其它 RPM 資源 得到更多關(guān)于 RPM 的信息。
1 安裝
典型的 RPM 有著類似 foo-1.0-1.i386.rpm這樣的名稱, 其中指明了包名 (foo), 版本號 (1.0), 發(fā)行號 (1), 和硬件平臺 (i386)。安裝一個軟件包只需簡單的鍵入以下命令:
# rpm -ivh foo-1.0-1.i386.rpm
foo ####################################
#
正如您所看到的, RPM 將會打印出軟件包的名字 ( 并不一定要與文件名相同, 可能是 1.rpm), 而后打印出一連串的 # 號以表示安裝進度。
請注意
盡管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 來安裝包, 但也可以用 rpm -Uvh foo-1.0-1.i386.rpm 來替代。 -U 是包升級參數(shù), 也可以用來安裝新包。參看 升級 有關(guān)RPM 中 -U 參數(shù)的詳細使用情況。
軟件包的安裝設(shè)計非常簡單, 但還是有可能發(fā)生以下錯誤:
軟件包已被安裝
如果軟件包已被安裝, 會出現(xiàn)以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
如果仍要安裝該包, 可以在命令行中使用 --replacepkgs 選項, 這樣 RPM 將忽略該錯誤信息:
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
foo ####################################
#
文件沖突
如果要安裝的軟件包中有一個文件已在安裝其它包時被安裝,會顯示以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
#
要想讓RPM 忽略該錯誤信息, 請使用 --replacefiles 命令行選項:
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm
foo ####################################
#
未解決依賴關(guān)系
一個 RPM 包可能會 "依賴" 其它軟件包, 也就是說要求在安裝了特定的軟件包之后才能安裝該軟件包。 如果在安裝這個軟件包時未解決這種存在的依賴關(guān)系, 會看到:
# rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
foo is needed by bar-1.0-1
#
只有先安裝完所依賴的軟件包,才能解決這個問題。 如果想強制安裝 (這不是個好辦法,因為安裝后的軟件包未必能正常運行), 可以使用 --nodeps 命令行選項。
3.2.2 卸載
卸載軟件包就象安裝軟件包時一樣簡單:
# rpm -e foo
#
請注意
注意這里使用軟件包的 名字 "foo" , 而不是原始軟件包的 文件名 "foo-1.0-1.i386.rpm"。卸載軟件包時, 需要用原始包的實際文件名替換 foo 包名。
在卸載某個軟件包時,可能會發(fā)生依賴關(guān)系錯誤,這說明其它包與此包之間有安裝依賴關(guān)系。例如:
# rpm -e foo
removing these packages would break dependencies:
foo is needed by bar-1.0-1
#
要使 RPM 在卸載此包時忽略該錯誤 (這不是個好辦法,因為卸載后,與它有依賴關(guān)系的軟件包未必能正常運行), 使用 --nodeps 命令行選項。
3.2.3 升級
升級軟件包和安裝軟件包十分類似。
# rpm -Uvh foo-2.0-1.i386.rpm
foo ####################################
#
RPM 將自動卸載已安裝的老版本的 foo 軟件包,用戶無法看到有關(guān)信息。事實上用戶可能總是使用 -U 來安裝軟件包, 因為即便以往未安裝過該軟件包,也能正常運行。
因為 RPM 執(zhí)行智能化的軟件包升級,自動處理配置文件,會顯示如下信息:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
這表示用戶對配置文件的修改,不一定能 "向上兼容" 該軟件包中的配置文件。 因此,RPM 會備份原始的文件,再安裝新文件。用戶應(yīng)當盡快解決這兩個配置文件的不同之處,以便系統(tǒng)能持續(xù)正常運行。
因為升級其實就是軟件包的卸載與安裝的綜合,也可能會遇見那些操作中所可能發(fā)生的錯誤。 再有就是: 在使用 舊 版本的 RPM 軟件包來升級新版本的軟件時,會產(chǎn)生以下信息:
# rpm -Uvh foo-1.0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
要使用 RPM 強行 "升級" , 請使用 --oldpackage 命令行參數(shù):
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
foo ####################################
#
3.2.4 更新
包的更新與包升級相似:
# rpm -Fvh foo-1.2-1.i386.rpm
foo ####################################
#
RPM 更新選項,是檢查命令行中指明的包版本與安裝在系統(tǒng)中的包版本是否一致。 當 RPM 更新選項處理完已安裝包的新版本時,該包會升級到新版本。 但是,RPM 更新選項無法安裝系統(tǒng)目前沒有的軟件包。 這與 RPM 升級不同,升級選項 能夠 安裝軟件包,無論舊版本的包是否已安裝。
RPM 更新選項可以很好的更新一個軟件包或一組軟件包。 如果用戶下載了大量的軟件包,但只想升級系統(tǒng)中已有的包時,RPM 更新選項會非常有用。 使用 RPM 更新選項意味著你無需從下載的包中挑挑揀揀,也不用事先刪除不要的包。
這種情況下, 只需簡單的鍵入:
# rpm -Fvh *.rpm
RPM 工具會自動升級那些已經(jīng)安裝好的包。
3.2.5 查詢
使用命令 rpm -q來查詢已安裝軟件包的數(shù)據(jù)庫。簡單的使用命令 rpm -q foo 會打印出foo軟件包的包名、版本號和發(fā)行號:
# rpm -q foo
foo-2.0-1
#
除了指定包名以外,用戶還可以使用以下選項與 -q 連用,來指明要查詢哪些軟件包的信息。這些選項被稱之為 軟件包指定選項 。
-a 查詢所有已安裝的軟件包。
-f <file> 將查詢包含有文件 <file>的軟件包。
-p <packagefile> 查詢軟件包文件名為 <packagefile>的包。
有幾種方式來指定查詢軟件包時所顯示的信息。 以下選項可以出選擇感興趣的信息,加以顯示。這樣的選項被稱作 信息選擇選項 。
-i 顯示軟件包信息,如描述、發(fā)行號、大小、編譯日期、安裝日期、硬件平臺、以及其它一些各類信息。
-l 列出軟件包中包含的文件。
-s 顯示軟件包中所有文件的狀態(tài)。
-d 列出被標注為文檔的文件 (如,man 手冊、 info 信息、README,等等) 。
-c 列出被標注為配置文件的文件。這些文件是需要在安裝完畢后加以定制的,如 (sendmail.cf, passwd, inittab, 等) 。
如果要在執(zhí)行上述選項的同時,顯示文件列表, 可以同時使用 -v 命令行選項,就能得出與 ls -l 格式類似的輸出。
3.2.6 校驗
包校驗是比較自軟件包中安裝的文件信息和軟件包中的原始文件的相同信息。 與其它校驗相同,包校驗將比較文件的長度、MD5校驗和、許可、類型、文件屬主和群組。
使用 rpm -V 命令進行包校驗。用戶可以配合使用各個包選擇選項 ,來列出校驗包的查詢結(jié)果。 簡單地使用 rpm -V foo 可以校驗 foo 包中原始安裝時的所有文件。例如:
校驗包含特定文件的軟件包: rpm -Vf /bin/vi
校驗所有已安裝的軟件包: rpm -Va
用 RPM 包文件校驗已安裝的軟件包: rpm -Vp foo-1.0-1.i386.rpm
如果擔心RPM數(shù)據(jù)庫被破壞,就可以使用這種方式加以校驗。
如果校驗結(jié)果一切正常,將不會產(chǎn)生任何輸出。如果有不一致的地方,會顯示出來。 輸出格式是8位長字符串, "c" 用以指配置文件, 接著是文件名。8位長字符,每個代表一個文件屬性與RPM數(shù)據(jù)庫中記錄的屬性相比較的結(jié)果。"." (點) 表示測試通過。 下面的字符代表某測試的失敗:
5 -- MD5 校驗和
S -- 文件長度
L -- 符號鏈接
T -- 文件修改日期
D -- 設(shè)備
U -- 用戶
G -- 用戶組
M -- 模式 (包含許可和文件類型)
? -- 不可讀文件
如果有信息輸出, 用戶應(yīng)當認真加以考慮,是該刪除、重新安裝、還是修正出現(xiàn)的問題。
3.2 使用 RPM
RPM 有五個基本的操作 模式(不包括包的編譯): 安裝,卸載,升級,查詢,校驗。本節(jié)將對它們一一介紹。要了解完整的細節(jié)和選項,可以使用 rpm --help, 或轉(zhuǎn)到 the section called 其它 RPM 資源 得到更多關(guān)于 RPM 的信息。
3.2.1 安裝
典型的 RPM 有著類似 foo-1.0-1.i386.rpm這樣的名稱, 其中指明了包名 (foo), 版本號 (1.0), 發(fā)行號 (1), 和硬件平臺 (i386)。安裝一個軟件包只需簡單的鍵入以下命令:
# rpm -ivh foo-1.0-1.i386.rpm
foo ####################################
#
正如您所看到的, RPM 將會打印出軟件包的名字 ( 并不一定要與文件名相同, 可能是 1.rpm), 而后打印出一連串的 # 號以表示安裝進度。
請注意
盡管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 來安裝包, 但也可以用 rpm -Uvh foo-1.0-1.i386.rpm 來替代。 -U 是包升級參數(shù), 也可以用來安裝新包。參看 升級一節(jié) 有關(guān)RPM 中 -U 參數(shù)的詳細使用情況。
軟件包的安裝設(shè)計非常簡單, 但還是有可能發(fā)生以下錯誤:
軟件包已被安裝
如果軟件包已被安裝, 會出現(xiàn)以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
如果仍要安裝該包, 可以在命令行中使用 --replacepkgs 選項, 這樣 RPM 將忽略該錯誤信息:
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
foo ####################################
#
文件沖突
如果要安裝的軟件包中有一個文件已在安裝其它包時被安裝,會顯示以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
#
要想讓RPM 忽略該錯誤信息, 請使用 --replacefiles 命令行選項:
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm
foo ####################################
#
未解決依賴關(guān)系
一個 RPM 包可能會 "依賴" 其它軟件包, 也就是說要求在安裝了特定的軟件包之后才能安裝該軟件包。 如果在安裝這個軟件包時未解決這種存在的依賴關(guān)系, 會看到:
# rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
foo is needed by bar-1.0-1
#
只有先安裝完所依賴的軟件包,才能解決這個問題。 如果想強制安裝 (這不是個好辦法,因為安裝后的軟件包未必能正常運行), 可以使用 --nodeps 命令行選項。
3.2.2 卸載
卸載軟件包就象安裝軟件包時一樣簡單:
# rpm -e foo
#
請注意
注意這里使用軟件包的 名字 "foo" , 而不是原始軟件包的 文件名 "foo-1.0-1.i386.rpm"。卸載軟件包時, 需要用原始包的實際文件名替換 foo 包名。
在卸載某個軟件包時,可能會發(fā)生依賴關(guān)系錯誤,這說明其它包與此包之間有安裝依賴關(guān)系。例如:
# rpm -e foo
removing these packages would break dependencies:
foo is needed by bar-1.0-1
#
要使 RPM 在卸載此包時忽略該錯誤 (這不是個好辦法,因為卸載后,與它有依賴關(guān)系的軟件包未必能正常運行), 使用 --nodeps 命令行選項。
3.2.3 升級
升級軟件包和安裝軟件包十分類似。
# rpm -Uvh foo-2.0-1.i386.rpm
foo ####################################
#
RPM 將自動卸載已安裝的老版本的 foo 軟件包,用戶無法看到有關(guān)信息。事實上用戶可能總是使用 -U 來安裝軟件包, 因為即便以往未安裝過該軟件包,也能正常運行。
因為 RPM 執(zhí)行智能化的軟件包升級,自動處理配置文件,會顯示如下信息:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
這表示用戶對配置文件的修改,不一定能 "向上兼容" 該軟件包中的配置文件。 因此,RPM 會備份原始的文件,再安裝新文件。用戶應(yīng)當盡快解決這兩個配置文件的不同之處,以便系統(tǒng)能持續(xù)正常運行。
因為升級其實就是軟件包的卸載與安裝的綜合,也可能會遇見那些操作中所可能發(fā)生的錯誤。 再有就是: 在使用 舊 版本的 RPM 軟件包來升級新版本的軟件時,會產(chǎn)生以下信息:
# rpm -Uvh foo-1.0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
要使用 RPM 強行 "升級" , 請使用 --oldpackage 命令行參數(shù):
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
foo ####################################
#
3.2.4 更新
包的更新與包升級相似:
# rpm -Fvh foo-1.2-1.i386.rpm
foo ####################################
#
RPM 更新選項,是檢查命令行中指明的包版本與安裝在系統(tǒng)中的包版本是否一致。 當 RPM 更新選項處理完已安裝包的新版本時,該包會升級到新版本。 但是,RPM 更新選項無法安裝系統(tǒng)目前沒有的軟件包。 這與 RPM 升級不同,升級選項 能夠 安裝軟件包,無論舊版本的包是否已安裝。
RPM 更新選項可以很好的更新一個軟件包或一組軟件包。 如果用戶下載了大量的軟件包,但只想升級系統(tǒng)中已有的包時,RPM 更新選項會非常有用。 使用 RPM 更新選項意味著你無需從下載的包中挑挑揀揀,也不用事先刪除不要的包。
這種情況下, 只需簡單的鍵入:
# rpm -Fvh *.rpm
RPM 工具會自動升級那些已經(jīng)安裝好的包。
3.2.5 查詢
使用命令 rpm -q來查詢已安裝軟件包的數(shù)據(jù)庫。簡單的使用命令 rpm -q foo 會打印出foo軟件包的包名、版本號和發(fā)行號:
# rpm -q foo
foo-2.0-1
#
除了指定包名以外,用戶還可以使用以下選項與 -q 連用,來指明要查詢哪些軟件包的信息。這些選項被稱之為 軟件包指定選項 。
-a 查詢所有已安裝的軟件包。
-f <file> 將查詢包含有文件 <file>的軟件包。
-p <packagefile> 查詢軟件包文件名為 <packagefile>的包。
有幾種方式來指定查詢軟件包時所顯示的信息。 以下選項可以出選擇感興趣的信息,加以顯示。這樣的選項被稱作 信息選擇選項 。
-i 顯示軟件包信息,如描述、發(fā)行號、大小、編譯日期、安裝日期、硬件平臺、以及其它一些各類信息。
-l 列出軟件包中包含的文件。
-s 顯示軟件包中所有文件的狀態(tài)。
-d 列出被標注為文檔的文件 (如,man 手冊、 info 信息、README,等等) 。
-c 列出被標注為配置文件的文件。這些文件是需要在安裝完畢后加以定制的,如 (sendmail.cf, passwd, inittab, 等) 。
如果要在執(zhí)行上述選項的同時,顯示文件列表, 可以同時使用 -v 命令行選項,就能得出與 ls -l 格式類似的輸出。
3.2.6 校驗
包校驗是比較自軟件包中安裝的文件信息和軟件包中的原始文件的相同信息。 與其它校驗相同,包校驗將比較文件的長度、MD5校驗和、許可、類型、文件屬主和群組。
使用 rpm -V 命令進行包校驗。用戶可以配合使用各個包選擇選項 ,來列出校驗包的查詢結(jié)果。 簡單地使用 rpm -V foo 可以校驗 foo 包中原始安裝時的所有文件。例如:
校驗包含特定文件的軟件包: rpm -Vf /bin/vi
校驗所有已安裝的軟件包: rpm -Va
用 RPM 包文件校驗已安裝的軟件包: rpm -Vp foo-1.0-1.i386.rpm
如果擔心RPM數(shù)據(jù)庫被破壞,就可以使用這種方式加以校驗。
如果校驗結(jié)果一切正常,將不會產(chǎn)生任何輸出。如果有不一致的地方,會顯示出來。 輸出格式是8位長字符串, "c" 用以指配置文件, 接著是文件名。8位長字符,每個代表一個文件屬性與RPM數(shù)據(jù)庫中記錄的屬性相比較的結(jié)果。"." (點) 表示測試通過。 下面的字符代表某測試的失敗:
5 -- MD5 校驗和
S -- 文件長度
L -- 符號鏈接
T -- 文件修改日期
D -- 設(shè)備
U -- 用戶
G -- 用戶組
M -- 模式 (包含許可和文件類型)
? -- 不可讀文件
如果有信息輸出, 用戶應(yīng)當認真加以考慮,是該刪除、重新安裝、還是修正出現(xiàn)的問題。
關(guān)鍵字:Linux、系統(tǒng)、rpm包、安裝、刪除、效驗、查詢
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解