Linux下的软件管理
1.软件的类型
压缩包(绿色安装包、源码编译)
DEB(类DEBIN)
RPM(类RHEL)
2.RPM命令的用法
1.查询(最常用,无需安装包文件,仅查系统已安装信息)
bash
# 查询单个软件是否安装
rpm -q nginx # 仅返回包名(已安装)或提示 "package nginx is not installed"(未安装)
#查询已安装软件的详细信息(版本、发布日期、依赖、用途等)
rpm -qi nginx # -i = info,显示详细信息
# 查询已安装软件的文件安装位置
rpm -ql nginx # -l = list,列出该包所有安装的文件路径
# 查询系统中所有已安装的 RPM 包
rpm -qa # -a = all,列出全部已安装包
rpm -qa | grep nginx # 过滤查找特定包(如 nginx)
# 查询某个文件属于哪个 RPM 包
rpm -qf /usr/sbin/nginx # -f = file,需指定文件绝对路径
# 查询已安装包的依赖关系
rpm -qR nginx # -R = requires,列出该包依赖的库/文件
2.安装 RPM 包
bash
# 基础安装(需指定 .rpm 包文件路径)
rpm -ivh nginx-1.20.1-1.el7.x86_64.rpm
# 强制安装(忽略版本冲突/已安装,谨慎使用)
rpm -ivh --force nginx-1.20.1-1.el7.x86_64.rpm
# 忽略依赖安装(不推荐,可能导致软件运行异常)
rpm -ivh --nodeps nginx-1.20.1-1.el7.x86_64.rpm
3.更新 RPM 包
bash
# 更新软件包(推荐 -Uvh 组合,显示进度和详情)
rpm -Uvh nginx-1.24.0-1.el7.x86_64.rpm
# 仅更新已安装的包(无旧版本则不操作)
rpm -Fvh nginx-1.24.0-1.el7.x86_64.rpm
4.卸载 RPM 包
bash
# 基础卸载
rpm -e nginx
# 卸载时忽略依赖(谨慎使用,可能导致其他软件异常)
rpm -e --nodeps nginx
5.验证已安装包
bash
# 验证单个包
rpm -V nginx
# 验证所有已安装包(输出较多,一般用于排查问题)
rpm -Va
3.利用镜像搭建本地软件仓库
bash
[root@localhost ~]# mkdir /rhel9 #挂载光驱读取镜像内容
[root@localhost ~]# mount /dev/cdrom /rhel9/ #手动挂载光驱
[root@localhost ~]# vim /etc/rc.d/rc.local #开启自动运行mount动作实现自动挂载
mount /dev/cdrom /rhel9/
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
#设定软件仓库指向
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim rhel.repo
[AppStream]
name = AppStream
baseurl = file:///rhel9/AppStream
gpgcheck = 0
[BaseOS]
name = BaseOS
baseurl = file:///rhel9/BaseOS
gpgcheck = 0
#检测软件仓库是否可用
[root@localhost yum.repos.d]# dnf list httpd
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。
AppStream 82 MB/s | 7.7 MB 00:00
BaseOS 155 MB/s | 2.1 MB 00:00
可安装的软件包
httpd.x86_64 2.4.62-4.el9 AppStream
4.dnf软件管理命令
-
基础配置与源管理
bash# 查看当前启用的软件源 dnf repolist enabled # 查看所有软件源(包括禁用的) dnf repolist all # 清理缓存(解决源缓存过期导致的安装失败) dnf clean all # 生成新缓存(清理后建议执行,加快后续操作) dnf makecache -
查询(最常用,查包 / 源 / 依赖等信息)
bash# 搜索软件包(按名称/描述匹配) dnf search nginx # 搜索包含 "nginx" 的包 # 查看包的详细信息(版本、依赖、仓库、描述等) dnf info nginx # 查单个包信息 dnf info installed nginx # 仅查已安装的 nginx 信息 # 列出已安装的所有包 dnf list installed dnf list installed | grep nginx # 过滤查找已安装的特定包 # 列出可安装的所有包(含源中的包) dnf list available # 查看包的依赖关系 dnf repoquery --requires nginx # 查 nginx 依赖的包 dnf repoquery --whatrequires nginx # 查依赖 nginx 的包 # 查看包安装后包含的文件 dnf repoquery -l nginx -
安装软件包
bash# 安装单个包 dnf install nginx # 安装最新版本的 nginx # 安装指定版本的包(需知道完整版本号) dnf install nginx-1.24.0-1.el8.x86_64 # 安装本地 RPM 包(自动从源补全依赖) dnf install /root/nginx-1.24.0-1.el8.x86_64.rpm # 安装包组(一组相关的包,如 "Development Tools") dnf groupinstall "Development Tools" # 安装开发工具集(gcc、make 等) # 强制重装已安装的包(解决文件损坏问题) dnf reinstall nginx -
更新软件包
bash# 检查可更新的包 dnf check-update # 更新单个包 dnf update nginx # 更新系统中所有可更新的包(系统升级核心命令) dnf update # 等价于 dnf upgrade # 更新包组 dnf groupupdate "Development Tools" # 降级到指定版本(解决新版本兼容问题) dnf downgrade nginx-1.20.1-1.el8.x86_64 -
卸载软件包
bash# 卸载单个包(保留依赖包) dnf remove nginx # 等价于 dnf erase nginx # 卸载包组 dnf groupremove "Development Tools" # 移除无用的依赖包(卸载软件后,清理不再需要的依赖) dnf autoremove
5.网络软件仓库的使用
bash
#比如加载docker容器的网络repo源(阿里云镜像站路径):
https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
redhat.repo rhel.repo
[root@localhost yum.repos.d]# vim docker.repo
[docker]
name = docker
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/
gpgcheck = 0
#测试
[root@localhost yum.repos.d]# dnf search docker
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。
docker 48 kB/s | 42 kB 00:00
===================================== 名称 和 概况 匹配:docker =====================================
docker-buildx-plugin.x86_64 : Docker Buildx plugin for the Docker CLI
docker-ce-rootless-extras.x86_64 : Rootless support for Docker
docker-compose-plugin.x86_64 : Docker Compose plugin for the Docker CLI
docker-model-plugin.x86_64 : Docker Model Runner plugin for the Docker CLI
pcp-pmda-docker.x86_64 : Performance Co-Pilot (PCP) metrics from the Docker daemon
podman-docker.noarch : Emulate Docker CLI using podman
========================================= 名称 匹配:docker =========================================
docker-ce.x86_64 : The open-source application container engine
docker-ce-cli.x86_64 : The open-source application container engine
6.epel源的使用
bash
#epel源的地址:
https://mirrors.aliyun.com/epel-archive/9.6/Everything/x86_64/
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim epel.repo
[epel]
name = epel
baseurl = https://mirrors.aliyun.com/epel-archive/9.6-2025-11-11/Everything/x86_64/
gpgcheck = 0
#测试:
[root@localhost ~]# dnf search ansible
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。
epel 13 MB/s | 20 MB 00:01
上次元数据过期检查:0:00:11 前,执行于 2026年01月14日 星期三 15时46分05秒。
==================================== 名称 和 概况 匹配:ansible =====================================
ansible.noarch : Curated set of Ansible collections included in addition to ansible-core
7.自建软件仓库的方法
bash
#为了把网络软件仓库中的软件下载下来后分享给本地主机,或者直接把网上下载下来的rpm加入到软件仓库中
[root@localhost ~]# dnf install httpd -y #通过http共享自建软件仓库
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# mkdir /var/www/html/software #建立共享目录
[root@localhost ~]# dnf install docker-ce --downloadonly --destdir /mnt/
[root@localhost mnt]# mv /mnt/* /var/www/html/software/ #将下载下来的软件存放到共享目录
[root@localhost software]# dnf install createrepo -y #此软件用来扫描rpm软件包信息并记录生成
#软件包信息库
[root@localhost ~]# ls /var/www/html/software/
containerd.io-2.2.1-1.el9.x86_64.rpm docker-ce-cli-29.1.4-1.el9.x86_64.rpm
docker-buildx-plugin-0.30.1-1.el9.x86_64.rpm docker-ce-rootless-extras-29.1.4-1.el9.x86_64.rpm
docker-ce-29.1.4-1.el9.x86_64.rpm docker-compose-plugin-5.0.1-1.el9.x86_64.rpm
[root@localhost ~]# createrepo -v /var/www/html/software/ #采集软件包信息
#注意在目录中不能有不是rpm类的文件
#测试:
[root@localhost dnf]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
docker.repo epel.repo redhat.repo rhel.repo
[root@localhost yum.repos.d]# vim software.repo
[software]
name = software
baseurl = http://172.25.254.129/software/
gpgcheck = 0
[root@localhost yum.repos.d]# dnf info docker-ce.x86_64
名称 : docker-ce
时期 : 3
版本 : 29.1.4
发布 : 1.el9
架构 : x86_64
大小 : 22 M
源 : docker-ce-29.1.4-1.el9.src.rpm
仓库 : software #软件仓库信息
概况 : The open-source application container engine
URL : https://www.docker.com
协议 : Apache-2.0
描述 : Docker is a product for you to build, ship and run any application as a
: lightweight container.
:
: Docker containers are both hardware-agnostic and platform-agnostic. This means
: they can run anywhere, from your laptop to the largest cloud compute instance
: and everything in between - and they don't require you to use a particular
: language, framework or packaging system. That makes them great building blocks
: for deploying and scaling web apps, databases, and backend services without
: depending on a particular stack or provider.