軟件包和RPM
RPM軟件包管理器最初是由紅帽開發(fā)的吁讨,該程序提供了一種標(biāo)準(zhǔn)的方式來(lái)打包軟件進(jìn)行分發(fā)届巩。與使用存檔提取到文件系統(tǒng)的軟件相比,采用RPM軟件包形式管理軟件要簡(jiǎn)單的多偏瓤。管理員可以通過(guò)它跟蹤軟件包所安裝的文件杀怠,需要?jiǎng)h除哪些軟件(如果卸載)并檢查確保顯示支持軟件包(如果安裝)。有關(guān)已安裝軟件包的信息存儲(chǔ)在各個(gè)系統(tǒng)的本地RPM數(shù)據(jù)庫(kù)中厅克。紅帽為紅帽企業(yè)Linux提供的所有軟件都以RPM軟件包的形式提供赔退。
- 常用的RPM包地址Rpmfind mirror
- RPM軟件包文件名由四個(gè)元素組成
(1)coreutils-(2)8.32-(3)31.el9.(4)x86_64(5).rpm
#(1):描述軟件包內(nèi)容的名字
#(2):原始軟件的版本號(hào)
#(3):基于該版本的軟件包的發(fā)行版號(hào),由軟件打包商設(shè)置,后者不一定是原始軟件開發(fā)商
#(4):軟件包運(yùn)行的處理器架構(gòu)硕旗,noarch表示此軟件包的內(nèi)容不限定架構(gòu)窗骑。
檢查RPM軟件包
- 查看安裝的軟件包
rpm -qa | grep 軟件名/服務(wù)名
- 查看文件的來(lái)源
rpm -qf 文件名
- 查看包版本
rpm -q 軟件包名稱
- 查看包信息
rpm -qi 軟件包名
- 查看包安裝的文件
rpm -ql 軟件包名
- 查看包配置文件
rpm -qc 軟件包名
- 查看包安裝的文檔文件
rpm -qd 軟件包名
- 如果在網(wǎng)上下載一個(gè)rpm包需要驗(yàn)證包
rpm -qp rpm包全名
[root@serverb ~]# rpm -qp xrdp-0.9.21-1.el9.x86_64.rpm
warning: xrdp-0.9.21-1.el9.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3228467c: NOKEY #沒(méi)有數(shù)字簽名
xrdp-0.9.21-1.el9.x86_64
- 檢查安裝包中是否有腳本
[root@serverb ~]# rpm -qp --scripts xrdp-0.9.21-1.el9.x86_64.rpm
warning: xrdp-0.9.21-1.el9.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3228467c: NOKEY
postinstall scriptlet (using /bin/sh):
if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
# Initial installation
/usr/lib/systemd/systemd-update-helper install-system-units xrdp.service || :
fi
preuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
# Package removal, not upgrade
/usr/lib/systemd/systemd-update-helper remove-system-units xrdp.service || :
fi
if [ $1 -eq 0 ]; then
# Stop services on package removal (see bug 1349083)
systemctl stop xrdp.service > /dev/null 2>&1 || :
fi
posttrans scriptlet (using /bin/sh):
if [ ! -s /etc/xrdp/rsakeys.ini ]; then
(umask 377; touch /etc/xrdp/rsakeys.ini; /usr/bin/xrdp-keygen xrdp /etc/xrdp/rsakeys.ini &>/dev/null)
fi
if [ ! -s /etc/xrdp/cert.pem ]; then
(umask 377; openssl req -x509 -newkey rsa:2048 -sha256 -nodes -days 3652 \
-keyout /etc/xrdp/key.pem \
-out /etc/xrdp/cert.pem \
-config /etc/xrdp/openssl.conf >/dev/null 2>&1)
fi
- 列出軟件包的更改信息
rpm -q --changelog 軟件包名
[root@serverb ~]# rpm -q --changelog xrdp-0.9.21-1.el9.x86_64.rpm
package xrdp-0.9.21-1.el9.x86_64.rpm is not installed
[root@serverb ~]# rpm -qp --changelog xrdp-0.9.21-1.el9.x86_64.rpm
warning: xrdp-0.9.21-1.el9.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3228467c: NOKEY
* Sun Dec 11 2022 Bojan Smojver <bojan@rexurive.com> - 1:0.9.21-1
- Bump up to 0.9.21
* Thu Sep 15 2022 Bojan Smojver <bojan@rexurive.com> - 1:0.9.20-1
- Bump up to 0.9.20
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.9.19-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Mar 17 2022 Bojan Smojver <bojan@rexurive.com> - 1:0.9.19-1
- Bump up to 0.9.19
- 安裝rpm包
rpm -ivh 軟件包名
[root@serverb ~]# rpm -ivh xrdp-0.9.21-1.el9.x86_64.rpm
- 展開rpm包
[root@serverb ~]# rpm2cpio xrdp-0.9.21-1.el9.x86_64.rpm | cpio -id "*txt"
使用dnf安裝和更新軟件包
- 低級(jí)別的rpm命令可用于安裝軟件包,但是不會(huì)自動(dòng)解決軟件的依賴關(guān)系
- dnf允許管理安裝漆枚、更新创译、刪除和獲取有關(guān)軟件包及其依賴的關(guān)系
- rhel5就開始使用自動(dòng)解決依賴關(guān)系的工具——yum,rhel8使用全新的yum工具并更名為dnf墙基。rhel9中還是可以使用yum命令
- 使用dnf工具查找軟件
-- dnf help打印幫助
-- dnf list 顯示已安裝和可用的軟件
-- dnf search KEYWORD 根據(jù)關(guān)鍵詞搜索軟件包
-- dnf info 包名软族,查詢軟件包詳細(xì)信息
-- dnf provides PATHNAME 查詢指定路徑匹配的軟件名
- dnf安裝和刪除軟件包
dnf install PACKAGENAME #安裝
dnf remove PACKAGENAME #卸載
dnf update PACKAGENAME #更新
- 查看事務(wù)記錄
dnf history #顯示安裝和刪除事務(wù)的摘要
安裝和刪除軟件包的歷史記錄在/var/log/dnf.rpm.log中
dnf history undo 事務(wù)編號(hào) #可以撤銷已運(yùn)行的事務(wù)
啟動(dòng)dnf軟件倉(cāng)庫(kù)
- 使用
dnf config-manager --add-repo "repo_url"
來(lái)創(chuàng)建倉(cāng)庫(kù)
- 也可以自定義配置文件來(lái)創(chuàng)建倉(cāng)庫(kù)
-- vim /etc/yum.repo.d/xxx.repo
[myrepo] #倉(cāng)庫(kù)配置文件為myrepo
name=My Custom Repo #倉(cāng)庫(kù)名稱
baseurl=https://mirror.example.com/repo/ #指定倉(cāng)庫(kù)的url
enabled=1 #表示啟用/禁用倉(cāng)庫(kù),1為啟用残制,0為禁用
gpgcheck=1 #是否執(zhí)行GPG檢查
gpgkey=https://mirror.example.com/RPM-GPG-KEY-MyRepo #驗(yàn)證文件簽名的url立砸,gpgkey=0表示視為無(wú)效值
dnf makecache命令用于生成并更新dnf存儲(chǔ)庫(kù)的元數(shù)據(jù)緩存。元數(shù)據(jù)緩存包括存儲(chǔ)庫(kù)中可用軟件包的信息初茶、依賴關(guān)系和版本信息等仰禽。在執(zhí)行dnf命令時(shí)需要使用緩存內(nèi)容,這可以提高執(zhí)行速度并減少網(wǎng)絡(luò)流量纺蛆。因此吐葵,dnf makecache命令是安裝、移除桥氏、更新軟件包時(shí)必要的步驟温峭。