Linux下的软件管理

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软件管理命令
  1. 基础配置与源管理

    bash 复制代码
    # 查看当前启用的软件源
    dnf repolist enabled
    
    # 查看所有软件源(包括禁用的)
    dnf repolist all
    
    # 清理缓存(解决源缓存过期导致的安装失败)
    dnf clean all
    
    # 生成新缓存(清理后建议执行,加快后续操作)
    dnf makecache
  2. 查询(最常用,查包 / 源 / 依赖等信息)

    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
  3. 安装软件包

    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
  4. 更新软件包

    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
  5. 卸载软件包

    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.
相关推荐
Zoey的笔记本2 小时前
支持API接入的看板工具测评:如何实现自动化协作
运维·自动化
物理与数学2 小时前
Linux内核 mm_struct
linux·linux内核
哲霖软件2 小时前
机械设备ERP选型指南:5款产品技术特性与落地要点
运维·数据库
leiming62 小时前
手写Linux C UDP通信
linux·c语言·udp
明天就是Friday2 小时前
(五)Linux 调度器 - CFS调度器
linux·linux内核·linux 调度器
阿拉伯柠檬2 小时前
网络层与网络层协议IP(一)
linux·网络·网络协议·tcp/ip·面试
lcreek2 小时前
Linux 信号机制详解:从硬件异常到安全编程实践
linux·系统编程
南 阳2 小时前
Python从入门到精通day10
linux·windows·python
xdpcxq10292 小时前
Apache 详解 在 Ubuntu 24 中安装和配置 Apache
linux·ubuntu·apache