一、yum概述
1、yum和apt包管理器的区别
Linux 系统基本上分两大类:
RedHat系列:Redhat、Centos、Fedora 等;
Debian系列:Debian、Ubuntu 等。
目前国产操作系统基本都是基于这两大派系进行二次开发,整体上是换汤不换药,大多数命令是相通的。
而yum是一个RedHat系列的包管理器,基于RPM,使用rpm命令处理包。在CentOS 8及更高版本中被dnf(Dandified Yum)取代,dnf提供了一些性能改进和新的特性,使用上和yum基本相同。
apt是Debian系列的包管理系统,使用dpkg作为底层包管理系统。自动处理软件包的依赖关系,确保在安装新软件时所有必需的包都会一同安装。
包管理工具主要用于软件包的安装,升级,删除,查看。apt和yum都是为了简化软件包的管理和维护,它们在功能上非常相似,但在不同Linux发行版的生态系统中有各自的特性和用法
2、yum和rpm的区别
YUM和RPM包管理器的区别主要体现在软件仓库管理、更新机制、依赖关系处理以及使用场景上。
软件仓库管理:YUM使用软件仓库,使得管理大量软件包变得更加容易,而RPM通常单独管理每个包。这意味着YUM能够一次性更新所有软件包,而RPM需要手动更新每个包。
更新机制:YUM可以一次性更新所有软件包,而RPM需要手动更新每个包。这种差异使得YUM在处理大量软件包的更新时更为高效。
依赖关系处理:RPM是一个基础的包管理工具,而YUM是在RPM基础上构建的一个更高级、更易用的工具,特别适用于需要处理复杂依赖关系的场景。YUM能够自动解决软件包的依赖关系,而RPM则需要手动处理这些依赖关系。
使用场景:RPM适用于简单的系统或当不需要处理复杂的软件依赖关系时。而YUM则更适合于需要频繁更新和管理的复杂系统,尤其是在处理多个软件包之间的依赖关系时
二、配置yum源
配置在线yum源
常用的几个国内源站
1、清华大学
https://mirrors.tuna.tsinghua.edu.cn/
2、网易
http://mirrors.163.com/
3、阿里云
http://mirrors.aliyun.com
4、中科大
https://mirrors.ustc.edu.cn/
在阿里云上,下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
另一种快速添加yum源
# 安装依赖包yum-utils
yum install yum-utils -y
# 添加阿里云源
yum-config-manager --add-repo=源url地址
yum-config-manager --add-repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 查看源列表
yum repolist
配置离线yum源
在工作中,出于安全性考虑,服务器并不能访问互联网,当使用rpm安装包安装一些软件时,经常出现缺少依赖而不能安装的情况。
此时我们需要配置本地yum源,配置本机yum源相对容易,一般只需要将系统镜像上传到主机后进行挂载。也可以搭建内网共享yum源,其他服务器都可以向共享yum源获取相应的依赖包。
本次环境给搭建搭建一个简单的单机yum源。 1、下载上传iso镜像 根据对应的操作系统版本,下载对应的evething包,evething包软件多一点。
或者直接挂在光驱,也可以做yum源
2、挂在iso
# 创建挂载路径,这个路径可以随意
[root@localhost ~]# mkdir /media/iso
# 挂在iso镜像
[root@localhost ~]# mount -o loop /root/centos-7-x86_64-everything-2009.iso
mount: /dev/loop0 写保护,将以只读方式挂载
# 如果挂在了光驱,执行下面语句
[root@localhost ~]# mount -o loop /dev/cdrom /media/iso
3、修改repo文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# mkdir backup
[root@localhost ~]# mv *.repo backup/
[root@localhost ~]# cat >> local.repo <<EOF
[local]
name=local repo
baseurl=file:///media/iso
enable=1
gpgcheck=0
EOF
[root@localhost ~]# yum clean all
# 测试安装软件
[root@localhost ~]# yum install telnet
三、包管理器常用操作
rpm常用操作
rpm工具在工作中也有很多应用场景。
选项:
-i 安装
-v 显示执行过程
-h 显示安装进度(打印#)
-U 升级到新版本
-q 查询(常配合其他参数使用)
-a 查询所有软件
-l 查看软件的安装位置
-f 查看拥有指定文件的软件
-e 卸载
--force 强制执行
--nodeps 忽略依赖
常用组合:
# 安装一个新的软件包
rpm -ivh package.rpm
# 升级软件包
rpm -Uvh package.rpm
# 强制安装软件包,即使存在版本冲突或其他问题。
rpm -Uvh --force package.rpm
# 删除软件包
rpm -e package_name
# 忽略依赖,强制删除(慎用)
rpm -e --nodeps package_name
# 列出系统上所有已安装的软件包
rpm -qa
# 查询特定软件包
rpm -qa |grep ssh
# 查询版本号
rpm -q package_name
rpm -q net-tools
# 询关于某个软件包的信息
rpm -qi package_name
rpm -qi telnet
# 出一个软件包安装的文件列表。
rpm -ql package_name
rpm -ql telnet
# 查找某个文件属于哪个软件包。
rpm -qf file_path :
rpm -qf `which nslookup`
bind-utils-9.11.4-26.P2.el7.x86_64
# 查询该包提供的内容。
rpm -q --provides package_name
# 模拟软件包的安装过程,检查是否有依赖项问题或其他错误。
rpm -i --test package.rpm
yum常用操作
1、yum仓库管理
# 列出可用的yum仓库
yum repolist
# 列出所有软件仓库,包括禁用的
yum repolist
# 清除缓存
yum clean all
# 重新生成缓存
yum makecache
# 列出所有可用的软件包
yum list
# 列出指定的软件包
yum list |grep package_name
yum list | grep gcc
# 列出所有可升级的rpm包
yum list updates
# 列出所有已安装的rpm包
yum list installed
# 查看包详情
yum info wget
# 查看一个软件包的依赖关系
yum deplist 包名
2、查询软件包
# 查询软件包(支持模糊查询)
yum search 包名
yum search net-tools
# 查询某个命令由哪个软件包提供的
yum provides 要查询的命令/文件名
yum provides nslookup
yum provides ifconfig
# 查看源中的软件版本
yum list docker --showduplicates | sort -r
yum list nginx --showduplicates
3、安装软件包
# 安装软件包,可用一起安装多个
# -y参数是直接确认安装,不用询问是否安装
yum install nfs-utils -y
yum install -y vim gcc gcc-c++
# 默认安装的是最新版本,可用指定版本安装
yum install nginx-1.22.1
# 本地安装,已有rpm包
yum localinstall 本地包名.rpm -y
# 只下载不安装(生产环境常用)
yum install -y --downloadonly --downloaddir=存放目录 包名
以上操作一般还需要安装软件包: yum-plugin-downloadonly
# 组安装
yum groupinstall "Chinese Support"
# 安装一套LAMP
yum groupinstall "Web Server"
# 列出组信息
yum grouplist
# 删除组
yum groupremove "Chinese Support"
# 从指定源安装软件
yum install nginx --enablerepo=epel
4、更新软件包
# 更新所有可更新的软件包
yum update -y
# 更新指定软件
yum update nginx -y
# 升级系统
yum upgrade # 此命令会删除旧的软件包,重新安装新的软件包
# 更新软件包,自动解决依赖问题
yum upgrade --obsoletes -y
5、卸载软件包
# 卸载指定软件包,不卸载依赖包
yum remove 包名 -y
yum remove nginx -y
# 忽略依赖包
yum remove nginx --nodeps
# 连同依赖一起卸载
yum autoremove 包名
yum autoremove nginx
# 删除软件包,以及软件包数据和配置文件(慎用)
yum erase 包名
6、其他用途
# 查看yum执行历史
yum history
# 查看命令记录详情
yum history info 编号
# 撤销yum执行记录
yum history undo 编号