天天看點

rpm 包管理功能、yum 程式包管理

RPM, Redhat Package Manager

程式包管理器功能: 編譯好的應用程式的個組成檔案,打包成一個或幾個程式封包件,進而更友善快捷地實作程式包的安裝、更新、解除安裝的管理操作。

rpm 包命名格式:

name-VERSION-release.arch.rpm
     VERSION: major.minor.release
						  release.arch: rpm 包的發行号
									   archetecture:i386,x64,ppc,noarch
									   
例如:redis-3.0.2.1-centos7.x64.rpm
           

自動解決依賴關系:

  • yum:rhel 系列系統上 rpm 包管理器的前端工具
  • apt-get(apt-cache):deb 包管理器的前端工具
  • zypper:suse 的 rmp 包管理器的前端工具

rpm [OPTIONS] [PACKAGE_FILE]

安裝:-I,--install
更新:-U,--update,-F,--freshen
解除安裝:-e,--erase
查詢:-q,--query
校驗:-V,---verify
資料庫維護:--builddb,--initdb

general options:
	-v:verbose,詳細資訊
	-vv:更詳細的資訊
           

安裝 install

rpm {-i|–install} [install-options] PACKAGE_FILE … (man 文檔 29% 左右位置)

~]# rpm -ivh PACKAGE_FILE...

[install-options]:
	-h:hash marks 輸出進度條,每個#表示 2% 的進度
	--test:測試安裝,檢查并報告依賴關系及沖突消息
	--nodeps:忽略依賴關系,不建議使用
	--replacepkgs:重新安裝
           

更新/更新 update/freshen

rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

-U 意為更新或安裝

rpm {-F|–freshen} [install-options] PACKAGE_FILE …

-F 隻更新不安裝

--oldpackage:降級
--force:強制更新
           

解除安裝 erase

rpm {-e|–erase} [–allmatches] [–justdb] [–nodeps] [–test] PACKAGE_NAME …

--allmatches:解除安裝所有比對到指定名稱的程式包各版本
--nodeps:忽略依賴關系
--test:測試解除安裝,dry run 模式
           

查詢 query

rpm 在查詢時是在 /var/lib/rpm/ 目錄下的資料庫檔案中。

rpm {-q|–query} [select-options] [query-options]

[select-options]

PACKAGE_NAME:查詢指定的程式包是否已經安裝
-a,-all:查詢所有已經安裝的包;可配合 grep 使用
-f FILE:查詢指定的檔案由哪個程式包安裝生成
-p,--package PACKAGE_FILE:用于實作對未安裝的程式包執行查詢操作,檢視 rpm 檔案内容
--whatprovides CAPABLITY:查詢指定的 CAPABILITY 由哪個程式包提供
--whatrequires CAPABILITY:查詢指定的 CAPABILITY 被哪個包所依賴

[query-options]

--changelog:查詢 rpm 包的 changelog
-l,--list:程式包安裝生成的所有檔案的清單
-i,--info:程式包相關的資訊
-c,--configfiles:查詢指定的程式包的配置檔案
-d,--docfiles:查詢指定的程式包提供的幫助文檔
--provides:列出指定的程式包提供的所有 capability
--scripts:檢視程式包自帶的腳本片斷
           

練習:查找系統中以 a 開頭的軟體

~]# rpm -qa | grep “^a” | wc -l

校驗 verify

通過對比 /var/lib/rpm 目錄下的資料庫檔案,找出目前環境下安裝的軟體。

rpm {-V|–verify} [select-options] [verify-options]

-V PACKAGE_NAME:若該軟體被改動過,則會列出來
-Va:查詢系統上所有被改動過的檔案
-Vf:某個檔案是否被改動過
           

例如:首先我們修改/etc/crontab 檔案,新增一行 # new line. 儲存并退出,而後執行指令

rpm -Vf /etc/crontab

# 輸出如下
S.5....T.  c /etc/crontab
           

解釋說明:中間的 c 代表 configuration,以為配置檔案。前面字元意為:

S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
           

擷取并導入信任的制作者的秘鑰:對于 CentOS 發行版來說:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

yum,Yellowdog Update Modifier

yum [options] [command] [package …]

先介紹 yum 的指令行選項:

-y:自動回答都為 yes
-q:靜默模式
           

查詢

search:搜尋某個軟體名稱或者是符合描述的字元串
  list :列出目前 yum 所管理的所有的軟體名稱與版本,類似 rpm -qa
  info :同上,不過有點類似 rpm -qai 的執行結果
  provides:從檔案去搜尋軟體,類似 rpm -qf 的功能,即檢視指定的特性是由哪個程式包提供
           

安裝更新、移除

yum install package1 [package2] […]

yum update package1 [package2] […]

yum remove | erase package1 [package2] […]

yum 的軟體群組功能

yum [群組功能] [軟體群組]

選項與參數:

grouplist   :列出所有可使用的“軟體群組組”,例如 Development Tools 
groupinfo   :後面接 group_name,則可了解該 group 内含的所有軟體名
groupinstall:安裝一整組的軟體群組
groupremove :移除某個軟體群組
           

繼續閱讀