15.Linux 软件管理

15.1 Linux软件介绍

#1.linux 软件包类型:

windows 软件 xx.exe xx.msi | windows系统软件⽆法在linux中执行

rpm软件包 : 已经编译好的⼆进制软件包,可以在系统中直接进行安装
      安装速度快 不灵活,针对某个平台进行编译,
      通常只支持特定平台 ( centos ),极大的软件依赖(前一个软件未安装,下一个无法安装)
      无法修改源代码

源代码包: 没有经过⼆进制编译的软件,⽆法在系统直接进⾏安装使⽤,需要进⾏编译之后可以进⾏安装使⽤
      安装过程极其复杂,容易出错,不好排错
      灵活,修改源代码

#2.linux 软件包获取:

(1)官方网站下载 (大部分都是源码包)
(2)安装光盘packages路径 (包含大量rpm包)
(3)软件仓库中(包含大量rpm包)

#3.获取安装光盘packages路径中的软件包

(1)确保主机连接到ISO光盘
(2)光盘挂载
[root@localhost ~]# mount /dev/sr0 /mnt/ 
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@localhost mnt]# cd Packages/
[root@localhost Packages]# ls | wc -l
4071

15.2 RPM包概述

RPM
http://rpm.org/
Redhat Package Manager  #早期叫法
RPM Package Manager    #现在就叫RPM包管理
GNU. : GNU is Not Unix

httpd-2.4.6-97.el7.centos.5.x86_64.rpm

httpd :软件包名称
2.4.6 :软件包版本
97 :软件包发⾏次数
el7 :适⽤于 RHEL 7 系统系列
centos :精确适⽤于centos平台 (centos7)
x86 : 软件包适⽤于x86平台
64 : 64位软件版本
noarch :该软件包适⽤于任何平台,不受到平台的限制
httpd-2.4.6-67.el7.centos.x86_64.rpm :软件包全名

15.3 RPM软件包安装

#1.rpm工具介绍

http://rpm.org/
1.软件包类型
2.软件包安装工具
         采⽤rpm软件工具安装rpm类型的软件包
         rpm软件工具通常在系统出⼚⾃带
[root@localhost Packages]# rpm --version
RPM 版本 4.11.3


如果系统中出厂没有⾃带rpm安装工具 ,需要下载rpm安装工具,rpm安装工具需要采用源码包安装

#2.rpm 工具使用

rpm 相关常用重要参数
-i : 安装
-v :显示安装详细信息
-e : 卸载
-h : 显示安装进度
-q : 查看软件包是否安装
-qa: 查看系统中安装的所有RPM软件包
-qi :查看安装的软件信息
-ql :查看软件的安装位置
-qf:查看软件包的安装来源
--force :强制安装

[root@localhost Packages]# rpm -qa | wc -l  #查看当前系统中安装的软包的数量
1411
[root@localhost Packages]# rpm -qa | grep -i vsftpd#查询vsftpd是否在系统已安装,无结果未安装
[root@localhost Packages]# rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm    #安装软件 - 跟包全名
警告:vsftpd-3.0.2-29.el7_9.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:vsftpd-3.0.2-29.el7_9            ################################# [100%]
[root@localhost Packages]# rpm -qa | grep -i vsftpd         #再次查询           
vsftpd-3.0.2-29.el7_9.x86_64

[root@localhost Packages]# rpm -q vsftpd  
vsftpd-3.0.2-29.el7_9.x86_64
[root@localhost Packages]# rpm -evh vsftpd #卸载软件 - 跟包名
准备中...                          ################################# [100%]
正在清理/删除...
   1:vsftpd-3.0.2-29.el7_9            ################################# [100%]
[root@localhost Packages]# rpm -q vsftpd    #软件安装查询
未安装软件包 vsftpd 

15.4 RPM软件包依赖

#1.软件包依赖

在安装当前软件时,必须提前安装其他软件   依赖类型有多种

#2.树形依赖/模块依赖/环形依赖

[root@localhost Packages]# rpm -q httpd  #查看是否安装
未安装软件包 httpd 
[root@localhost Packages]# rpm -ivh httpd-2.4.6-97.el7.centos.5.x86_64.rpm  #安装
警告:httpd-2.4.6-97.el7.centos.5.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:  #安装失败,需要依赖 /etc/mime.types和  httpd-tools
        /etc/mime.types 被 httpd-2.4.6-97.el7.centos.5.x86_64 需要
        httpd-tools = 2.4.6-97.el7.centos.5 被 httpd-2.4.6-97.el7.centos.5.x86_64 需要
[root@localhost Packages]# rpm -ivh httpd-tools-2.4.6-97.el7.centos.5.x86_64.rpm #安装
警告:httpd-tools-2.4.6-97.el7.centos.5.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:httpd-tools-2.4.6-97.el7.centos.5################################# [100%]
[root@localhost Packages]# rpm -q apr    #安装httpd-tools需要依赖libapr-1.so.0()(64bit)和libaprutil-1.so.0()(64bit)模块,libapr-1.so.0()(64bit)模块在apr-1.4.8-7.el7.x86_64中,
apr-1.4.8-7.el7.x86_64
[root@localhost Packages]# rpm -q apr-util  #libaprutil-1.so.0()(64bit)模块在apr-util-1.5.2-6.el7.x86_64中
apr-util-1.5.2-6.el7.x86_64

[root@localhost Packages]# rpm -ivh httpd-2.4.6-97.el7.centos.5.x86_64.rpm       
警告:httpd-2.4.6-97.el7.centos.5.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
        /etc/mime.types 被 httpd-2.4.6-97.el7.centos.5.x86_64 需要
[root@localhost Packages]# ls | grep -i mailcap  #/etc/mime.types在mailcap包中
mailcap-2.1.41-2.el7.noarch.rpm
[root@localhost Packages]# rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm  #安装
警告:mailcap-2.1.41-2.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mailcap-2.1.41-2.el7             ################################# [100%]
[root@localhost Packages]# rpm -ivh httpd-2.4.6-97.el7.centos.5.x86_64.rpm  # 最后安装httpd
警告:httpd-2.4.6-97.el7.centos.5.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:httpd-2.4.6-97.el7.centos.5      ################################# [100%]

*如果在软件安装依赖中出现 so.0()表示模块依赖,需要查找模块对应的RPM软件包 www.rpmfind.net

15.5 DPKG软件包管理

不同的Linux系统软件包不一样:
fedora / RHEL / centos / Rocky / EulerOS -> 软件包格式rpm / 安装工具rpm
Suse Opensuse          ->       软件包格式rpm /  安装工具rpm
Debian/Ubuntu/kali     ->       软件包格式deb /  安装工具 Debian Package (DPKG)

dpkg -l      # 查看已经安装的deb软件包
dpkg -i xxxx.deb   #安装软件包 (全名) 
dpkg -r xxxx     #卸载软件包 (软件名)

15.6 Linux软件包前端工具

# rpm方式/dpgk方式 安装软包时,需要自己处理依赖关系
# 可以通过Linux软件包前端工具自动处理依赖关系

不同的系统前端工具不一样:
fedora / RHEL / centos / Rocky / EulerOS -> 软件包格式rpm / 安装工具rpm / 前端工具yum|dnf
Suse Opensuse -> 软件包格式rpm / 安装工具rpm / 前端工具zypper
Debian/Ubuntu/kali -> 软件包格式deb / 安装工具 Debian Package (DPKG) / 前端工具apt(apt-get)

windows /  前端工具winget
MACOS /  前端工具brew

[root@localhost Packages]# yum install httpd -y 

15.7 Windows前端工具winget

windows11系统自带winget(部分)
 Windows Package manager
windows10/11系统可以安装 winget 工具
winget工具-远程仓库在国外,从国内访问速度有可能极慢

winget search xxxx    #软件查询-搜索
winget install xxxx     #软件安装 (软件ID)
winget uninstall xxxx #软件卸载(软件ID)
https://github.com/microsoft/winget-cli/releases   #winget软件官⽹链接 (国外)

15.8 Linux前端工具yum概述

yum (Yellow dog Updater, Modified)
作用:解决rpm软件包安装依赖性
基础原理:从yum仓库(远端仓库)中下载软件并且安装

#1.yum仓库
yum远程仓库 - 远程仓库通常由官方搭建
yum本地仓库 - 本地仓库通常由自己搭建

#2.yum仓库配置⽂件
记录yum仓库信息
路径:/etc/yum.repos.d/
⽂件格式 : xxx.repo
*在使⽤yum安装软件之前必须要创建yum仓库配置⽂件

15.9 yum软件仓库概述

#1.Base (默认使⽤)
CentOS-Base.repo #基础yum远程仓库

#2.media
CentOS-Media.repo #基础yum本地仓库

#3.other   
 CentOS-Debuginfo.repo   CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  CentOS-x86_64-kernel.repo
      #提供额外扩展功能 ,特定情况下会被使用

*默认情况下使用Base(大多数情况),例:在使用Debuginfo时,使用Base还要使用.other下的Debuginfo。

[root@localhost yum.repos.d]# more CentOS-Base.repo
[仓库名称]
baseurl=             仓库位置-链接 (下载软件包链接) 官方源
mirrorlist =          镜像列表-链接 (下载软件包链接) 官方镜像源
enabled = 0        该仓库不可用/1该仓库可⽤ (default=1)
gpgcheck= 0/1   0不对软件包进行校验 / 1对软件包进行校验
gpgkey=file:///xxx    软件包校验密钥文件路径

base - 基础软件包仓库
updates - 发布软件更新仓库
extras - 额外附加软件包仓库
centosplus - centos功能扩展附加软件包仓库

baseurl/mirrorlist的区别
mirrorlist官⽅镜像源链接中存储软件包和baseurl官⽅源是相同的
1.通过提供mirrorlist来增加baseurl可⽤性
2.就近下载
默认情况下  mirrorlist
#baseurl  添加了注释 ,默认情况下不使⽤baseur

15.10 设置远程yum仓库

目前centos官方软件源/官方镜像软件源都不在国内,国内大陆服务器访问速度相对较慢
可以通过修改第三方镜像源提供软件仓库

#1.备份原有的默认仓库配置⽂件

[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/
[root@localhost yum.repos.d]# ls
bak

#2.创建/下载新的仓库配置⽂件

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区https://developer.aliyun.com/mirror/

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo --no-check-certificate https://mirrors.aliyun.com/repo/Centos-7.repo
--2025-09-15 00:30:39--  https://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 119.96.247.179, 111.170.130.228, 119.96.247.185, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|119.96.247.179|:443... 已连接。
警告: 无法验证 mirrors.aliyun.com 的由 “/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - SHA256 - G2” 颁发的证书:
  颁发的证书已经过期。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”

100%[===============================================>] 2,523       --.-K/s 用时 0.004s  

2025-09-15 00:30:40 (574 KB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])

[root@localhost yum.repos.d]# ls
bak  CentOS-Base.repo  --no-check-certificate

#3.清除原有的本地yum缓存

[root@localhost yum.repos.d]# yum clean all  或  [root@localhost yum.repos.d]# rm -rf /var/cache/yum
已加载插件:fastestmirror, langpacks
正在清理软件源: base extras updates
Cleaning up list of fastest mirrors

#4.重新建⽴yum缓存

[root@localhost yum.repos.d]# yum makecache

#查看系统中所有yum源

[root@localhost yum.repos.d]# yum repolist all
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
源标识                      源名称                                           状态
base/7/x86_64               CentOS-7 - Base - mirrors.aliyun.com             启用: 10,072
centosplus/7/x86_64         CentOS-7 - Plus - mirrors.aliyun.com             禁用
contrib/7/x86_64            CentOS-7 - Contrib - mirrors.aliyun.com          禁用
extras/7/x86_64             CentOS-7 - Extras - mirrors.aliyun.com           启用:    518
updates/7/x86_64            CentOS-7 - Updates - mirrors.aliyun.com          启用:  5,176
repolist: 15,766

#查看系统中可⽤yum源

[root@localhost yum.repos.d]# yum repolist enable
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repolist: 0

15.11 yum软件包管理

常见参数:

#1.安装卸载

install 安装
remove 卸载
-y (查询时 , ⾃动填写yes) #在安装和卸载过程中会询问,使用命令时可以-y

[root@localhost yum.repos.d]# yum install -y httpd 或 yum install httpd -y

#2.历史/⽇志查看

history查看历史

[root@localhost yum.repos.d]# yum history 

[root@localhost yum.repos.d]# yum history info 4 #查看历史记录4的详细信息

[root@localhost yum.repos.d]# more /var/log/yum.log  #查看yum日志

[root@localhost yum.repos.d]# yum history undo 6  #删除掉历史记录6的所有安装

#3.更新/升级

update - 更新
upgrade - 升级

[root@localhost yum.repos.d]# yum update httpd

 upgrade
              Is the same as the update command with the  --obsoletes  flag  set.  See update for more details.

yum update --obsoletes = yum upgrade    #obsoletes废旧版本
yum update && /etc/yum.conf obsoletes=0 
yum update && /etc/yum.conf obsoletes=1  #在update 过程中是否删除旧版本 取决于配置文件etc/yum.conf 中 obsoletes参数是否等于1,等于1则删除旧版本等于upgrade,等于0则保留。

#4.查看当前软件仓库中的可用的软件包

[root@localhost yum.repos.d]# yum list | wc -l  #yum仓库中有10628个可用包,一般不会直接list
10628
[root@localhost yum.repos.d]# yum list | grep -i vsftpd  #一般不会直接list,和grep一起使用
vsftpd.x86_64                               3.0.2-29.el7_9             updates  
vsftpd-sysvinit.x86_64                      3.0.2-29.el7_9             updates

15.12 epel软件仓库

Extra Packages for Enterprise Linux - EPEL
1.fedora社区打造⾼质量软件仓库
2.免费

#使官方epel源

[root@localhost yum.repos.d]# yum list | grep -i epel   
epel-release.noarch                         7-11                       extras   
[root@localhost yum.repos.d]# yum install -y epel-release.noarch  #安装
[root@localhost yum.repos.d]# yum clean all $$ yum makecache #清理缓存,重新加载,但未成功

#使阿里云第三方epel源

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

[root@localhost yum.repos.d]# ls
bak  CentOS-Base.repo  epel.repo  epel-testing.repo  --no-check-certificate
[root@localhost yum.repos.d]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: base epel extras updates
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]# rm -rf epel*
[root@localhost yum.repos.d]# ls
bak  CentOS-Base.repo  --no-check-certificate

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo   https://mirrors.aliyun.com/repo/epel-7.repo --no-check-certificate  #从阿里镜像下载仓库配置文件
[root@localhost yum.repos.d]# ls  
bak  CentOS-Base.repo  epel.repo  --no-check-certificate    #epel.repo下载成功
[root@localhost yum.repos.d]# yum clean all && yum makecache  #清理缓存,重新加载
[root@localhost yum.repos.d]# yum list | wc -l  #再次查看仓库包,这次有24671个,比之前多
24671
[root@localhost yum.repos.d]# yum repolist all #查看yum源,多了epel的3个
[root@localhost yum.repos.d]# yum repolist enabled   #查看可用的yum源,多了epel/x86_64

15.13 本地ISO仓库管理

#本地⽆⽹络场景下, 挂载ISO镜像

[root@localhost yum.repos.d]# ls
bak  CentOS-Base.repo  epel.repo  --no-check-certificate
[root@localhost yum.repos.d]# mkdir bak2
[root@localhost yum.repos.d]# mv *.repo bak2 
[root@localhost yum.repos.d]# ls
bak  bak2  --no-check-certificate
[root@localhost yum.repos.d]# mount /dev/sr0 /mnt  #临时挂在ISO到本地 /mnt路径
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
       /dev/sr0 已经挂载到 /mnt 上
[root@localhost yum.repos.d]# vim local_mnt.repo  
[local_mnt]
baseurl=file:///mnt   #file:// 本地⽂件系统; #file:///mnt  本地⽂件系统根路径下的mnt路径
enable=1
gpgcheck=0
[root@localhost yum.repos.d]# ls
bak  bak2  local_mnt.repo  --no-check-certificate
[root@localhost yum.repos.d]# yum clean all && yum makecache 

15.14 软件包组管理

[root@centos7-shi-001 yum.repos.d]# yum group list #查看软件包组 [root@centos7-shi-001 yum.repos.d]# yum group install -y "Server with GUI" #安装软件包 组 [root@centos7-shi-001 yum.repos.d]# systemctl set-default graphical.target # 设置图形化 ⽅式启动

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值