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 # 设置图形化 ⽅式启动