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 :移除某個軟體群組