软件包和RPM
RPM软件包管理器最初是由红帽开发的,该程序提供了一种标准的方式来打包软件进行分发。与使用存档提取到文件系统的软件相比,采用RPM软件包形式管理软件要简单的多。管理员可以通过它跟踪软件包所安装的文件,需要删除哪些软件(如果卸载)并检查确保显示支持软件包(如果安装)。有关已安装软件包的信息存储在各个系统的本地RPM数据库中。红帽为红帽企业Linux提供的所有软件都以RPM软件包的形式提供。
- 常用的RPM包地址Rpmfind mirror
- RPM软件包文件名由四个元素组成
(1)coreutils-(2)8.32-(3)31.el9.(4)x86_64(5).rpm
#(1):描述软件包内容的名字
#(2):原始软件的版本号
#(3):基于该版本的软件包的发行版号,由软件打包商设置,后者不一定是原始软件开发商
#(4):软件包运行的处理器架构,noarch表示此软件包的内容不限定架构。
检查RPM软件包
- 查看安装的软件包
rpm -qa | grep 软件名/服务名
- 查看文件的来源
rpm -qf 文件名
- 查看包版本
rpm -q 软件包名称
- 查看包信息
rpm -qi 软件包名
- 查看包安装的文件
rpm -ql 软件包名
- 查看包配置文件
rpm -qc 软件包名
- 查看包安装的文档文件
rpm -qd 软件包名
- 如果在网上下载一个rpm包需要验证包
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 #没有数字签名
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安装和更新软件包
- 低级别的rpm命令可用于安装软件包,但是不会自动解决软件的依赖关系
- dnf允许管理安装、更新、删除和获取有关软件包及其依赖的关系
- rhel5就开始使用自动解决依赖关系的工具——yum,rhel8使用全新的yum工具并更名为dnf。rhel9中还是可以使用yum命令
- 使用dnf工具查找软件
-- dnf help打印帮助
-- dnf list 显示已安装和可用的软件
-- dnf search KEYWORD 根据关键词搜索软件包
-- dnf info 包名,查询软件包详细信息
-- dnf provides PATHNAME 查询指定路径匹配的软件名
- dnf安装和删除软件包
dnf install PACKAGENAME #安装
dnf remove PACKAGENAME #卸载
dnf update PACKAGENAME #更新
- 查看事务记录
dnf history #显示安装和删除事务的摘要
安装和删除软件包的历史记录在/var/log/dnf.rpm.log中
dnf history undo 事务编号 #可以撤销已运行的事务
启动dnf软件仓库
- 使用
dnf config-manager --add-repo "repo_url"
来创建仓库
- 也可以自定义配置文件来创建仓库
-- vim /etc/yum.repo.d/xxx.repo
[myrepo] #仓库配置文件为myrepo
name=My Custom Repo #仓库名称
baseurl=https://mirror.example.com/repo/ #指定仓库的url
enabled=1 #表示启用/禁用仓库,1为启用,0为禁用
gpgcheck=1 #是否执行GPG检查
gpgkey=https://mirror.example.com/RPM-GPG-KEY-MyRepo #验证文件签名的url,gpgkey=0表示视为无效值
dnf makecache命令用于生成并更新dnf存储库的元数据缓存。元数据缓存包括存储库中可用软件包的信息、依赖关系和版本信息等。在执行dnf命令时需要使用缓存内容,这可以提高执行速度并减少网络流量。因此,dnf makecache命令是安装、移除、更新软件包时必要的步骤。