-
理解为什么需要用yum
- yum就是帮你轻松管理,安装rpm软件的
-
掌握yum源配置
- 本地源
- 光盘源,centos7.iso(提供了大量的基础软件rpm包)
- 自建yum仓库目录
- 用于离线安装linux软件
- 需要提前准备好软件所需的所有rpm包(rpm -ivh 这种需要捋清楚rpm的包的依赖关系)
- yum自动判断软件之间的依赖关系,轻松安装
- 网络源
- 配置阿里云的yum源
- 清华源
- 官方也提供了yum源(必然是这个最靠谱,好用)
- 本地源
-
使用yum安装各种软件
- 安装mysql5.6.43
-
使用yum进行离线rpm安装
Linux软件的安装方式
在CentOS系统中,软件管理方式通常有三种方式:rpm安装、yum安装以及编译安装
yum源是什么
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
yum源有几种形式
- 本地光盘镜像yum源
- 网络yum源
所谓的yum源,其实就是
1.下载了一个yum的配置文件,里面就是一个url而已!
2.这个url指向了不同的镜像站,里面的一个rpm包集合地
3.当你yum install安装的时候,yum自动去这个网站里,搜索mysql名字相关的rpm进行下载,安装
如何检查软件依赖
通过rpm命令,可以检查某软件的依赖关系。注意,这种方法只适用于已安装的包。如果你需要检查一个未安装包的依赖关系,你首先需要把这个包先下载到本(不需要安装)。只能查询已安装的应用程序,依赖哪些其他软件。
yum配置文件
/etc/yum.conf
系统默认的yum仓库文件
[root@yuchao-linux01 opt]# ls /etc/yum.repos.d/ -l
total 32
-rw-r--r--. 1 root root 1664 Apr 29 2018 CentOS-Base.repo 网络yum源配置文件
-rw-r--r--. 1 root root 1309 Apr 29 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Apr 29 2018 CentOS-Debuginfo.repo 内核更新相关软件包
-rw-r--r--. 1 root root 314 Apr 29 2018 CentOS-fasttrack.repo 快速下载通道
-rw-r--r--. 1 root root 630 Apr 29 2018 CentOS-Media.repo 本地光盘yum配置文件
-rw-r--r--. 1 root root 1331 Apr 29 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 4768 Apr 29 2018 CentOS-Vault.repo
配置阿里yum源
使用阿里yum源代替系统默认的yum源
备份默认的yum源
1. 做好备份
[root@yuchao-linux01 yum.repos.d]# pwd
/etc/yum.repos.d
[root@yuchao-linux01 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@yuchao-linux01 yum.repos.d]#
[root@yuchao-linux01 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
# 2.获取阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 3.查看新的yum源
[root@yuchao-linux01 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
--2022-01-18 14:13:57-- https://mirrors.aliyun.com/repo/Centos-7.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 124.165.127.206, 125.39.76.202, 125.39.76.204, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|124.165.127.206|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2523 (2.5K) [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/CentOS-Base.repo’
100%[======================================================================>] 2,523 --.-K/s in 0s
2022-01-18 14:13:57 (490 MB/s) - ‘/etc/yum.repos.d/CentOS-Base.repo’ saved [2523/2523]
[root@yuchao-linux01 yum.repos.d]# ll
total 36
-rw--w--w- 1 root root 2523 Dec 26 2020 CentOS-Base.repo 这是新下载的
-rw-r--r--. 1 root root 1664 Apr 29 2018 CentOS-Base.repo.bak
-rw-r--r--. 1 root root 1309 Apr 29 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Apr 29 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Apr 29 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Apr 29 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Apr 29 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 4768 Apr 29 2018 CentOS-Vault.repo
# 4.清空yum缓存
yum clean all
# 5.生成新缓存,便于yum install 加速下载,生成cache
yum makecache
yum命令
搜索软件
语法:# yum search 关键词
安装软件
语法:# yum [-y] install 关键词
[root@yuchao-linux01 yum.repos.d]# yum install -y firefox
卸载软件
语法:# yum [-y] remove 关键词
[root@yuchao-linux01 yum.repos.d]# yum remove -y firefox
更新软件
语法:#yum [-y] update [包的关键词]
特别注意:包的关键词如果不写,则表示更新整个系统(全局更新,也包含内核)
千万别直接执行yum update -y,升级是一个重大的事
升级,代表着所有内容都会更新,牵一发而动全身,你很多软件可能会全面崩溃。
# 升级vim
[root@yuchao-linux01 yum.repos.d]# yum update -y vim
yum获取软件依赖
um命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的。
该功能主要用于,离线安装,提前获取好rpm,这是一个非常省事的办法
[root@yuchao-linux01 opt]# yum install --downloadonly --downloaddir=. python3
[root@yuchao-linux01 opt]# ll
total 9488
-rw--w--w- 1 root root 71844 Nov 18 2020 python3-3.6.8-18.el7.x86_64.rpm
-rw--w--w- 1 root root 7286976 Nov 18 2020 python3-libs-3.6.8-18.el7.x86_64.rpm
-rw--w--w- 1 root root 1702324 Oct 15 2020 python3-pip-9.0.3-8.el7.noarch.rpm
-rw--w--w- 1 root root 644052 Aug 23 2019 python3-setuptools-39.2.0-10.el7.noarch.rpm
[root@yuchao-linux01 opt]#
[root@yuchao-linux01 opt]#
此时你就可以拷贝走这些rpm包,再进行安装即可
yum install --downloadonly --downloaddir=/opt/nginx_rpm/ nginx downloaddir= 可以跟指定路径
yum实践操作
yum仓库目录语法
yum的仓库文件,都被统一放在了一个固定的目录
语法
是在这个目录中,名字是 *.repo结尾的文件,就会被yum识别为仓库文件
并且只能是在第一层目录,否则都无法识别为yum仓库
因此 /etc/yum.repos.d/就是yum仓库文件夹,并且只能是这个文件夹的第一层目录
存在于 *.repo文件
否则第一层目录,没有*.repo文件,就是没有可使用的yum仓库
也就是无法使用yum命令
[root@167 ~]# cd /etc/yum.repos.d/
[root@167 yum.repos.d]#
[root@167 yum.repos.d]# pwd
/etc/yum.repos.d
[root@167 yum.repos.d]#
[root@167 yum.repos.d]# ls
bak_repo CentOS-Base.repo epel.repo
创建yum的仓库文件,学习yum仓库文件语法
去看一看阿里云,给你创建的yum仓库,语法长什么样,模仿着写就行
写一个关于光盘挂载的repo文件
此时的光盘数据在本地目录,/mnt/
如果你的rpm包,得通过互联网去找,语法是 http://aliyun.com/xxxxxxxxxxxxx
如果你的rpm是去系统中找,语法是 file://路径即可
挂载本地光盘,作为镜像源(作为yum的rpm包仓库)
# 1. 挂载系统安装光盘
[root@mini ~]#mount /dev/sr0 /mnt/
# 2. 备份原repo文件
[root@mini yum.repos.d]#mv *.repo repo-bak/
# 3. 编辑新的repo文件
[root@mini yum.repos.d]#cat local.repo
[LocalBase]
name=Local CD repo
baseurl=file:///mnt
enabled=1
gpgcheck=0
# 4. 查看仓库是否生效
[root@mini yum.repos.d]#yum repolist
# 5. 清空缓存 && 生成新缓存
[root@mini ~]#yum clean all && yum makecache
.此时有了yum仓库,熟练的敲下两个命令
# 先清空旧的yum缓存
yum clean all # 清空内存中的yum缓存
rm -rf /var/cache/yum # 删除磁盘上的yum缓存
yum makecache
# 6. 安装软件
[root@mini ~]#yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel net-tools vim -y
请使⽤⾃建yum仓库⽬录,安装nginx
1.创建一个软件目录
[root@167 ~]# mkdir /0224_software
2.准备软件的所有rpm包,你可以选择用光盘仓库,也可以用这个神奇的办法
# 拿vim举例,安装vim以及它的依赖包
yum install --downloadonly --downloaddir=/0224_software/ vim
3.使用命令,让该目录成为yum可识别仓库
yum install createrepo -y
4.使用该命令,创建本地仓库
[root@167 0224_software]#
[root@167 0224_software]# createrepo /0224_software/
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 1 pkgs
Spawning worker 2 with 0 pkgs
Spawning worker 3 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@167 0224_software]#
[root@167 0224_software]#
[root@167 0224_software]#
[root@167 0224_software]# ll /0224_software/ -a
总用量 7156
drwxr-xr-x 3 root root 114 3月 30 11:56 .
dr-xr-xr-x. 30 root root 4096 3月 30 11:46 ..
drwxr-xr-x 2 root root 4096 3月 30 11:56 repodata
-rw-r--r-- 1 root root 6205700 12月 18 2020 vim-common-7.4.629-8.el7_9.x86_64.rpm
-rw-r--r-- 1 root root 1106008 12月 18 2020 vim-enhanced-7.4.629-8.el7_9.x86_64.rpm
[root@167 0224_software]#
5.此时,创建repo文件,指向这个目录即可,就是一个本地仓库目录
你先移除其他的repo文件,让yum被识别
cat >> /etc/yum.repos.d/my_dir.repo <<EOF
[base]
name=0224-linux-my_dir
baseurl=file:///0224_software/
enabled=1 # 这个参数是控制,该repo启用,还是关闭的
gpgcheck=0
EOF
或者直接 vim my_dir.repo
[base]
name=0224-linux-my_dir
baseurl=file:///0224_software/
enabled=1 # 这个参数是控制,该repo启用,还是关闭的
gpgcheck=0
6.此时yum本地仓库就好使了
yum install vim -y
已安装:
vim-enhanced.x86_64 2:7.4.629-8.el7_9
作为依赖被升级:
vim-common.x86_64 2:7.4.629-8.el7_9
完毕!
[root@167 yum.repos.d]# vim
[root@167 yum.repos.d]#
配置网络yum源(阿里云yum源)
1.选择主流的开源镜像站
2.用人家提供的命令,生成yum仓库文件即可
首先必须在 /etc/yum.repos.d 只能在这个目录下,且是第一级
/etc/yum.repos.d/aliyun.repo
为什么要用网络源,因为内容更多,更全
因为如阿里云的工程师,会吧市面主流的软件,全部同步到这个阿里云仓库中,比较齐全,但是也有限制
比如,本地光盘是没有nginx这个工具的
3. 快速配置阿里云仓库,以及移除本地光盘源
https://developer.aliyun.com/mirror/
使用wget命令下载阿里云的repo文件
#wget -O 对该文件进行存放到指定目录,且改名
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 上述命令等于如下
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/repo/Centos-7.repo
ls /etc/yum.repos.d/Centos-7.repo
4.配置阿里云仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
5. 你会发现,上面这个默认的源,软件数量也不算多,比如nginx就找不到,它的作用类似于 你挂载光盘源,用于安装很多基础,简单的工具
而第三方的工具是没有,如nginx
还得配置一个叫做epel仓库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
6.配置好2个仓库后,基本完事,可以安装市面绝大多数的软件了
生成缓存,便于后续加速下载
yum clean all
rm -rf /var/cache/yum
yum makecache
7.此时可以验证用yum源去安装软了
比如先看看软件列表有多少东西
yum list|wc -l
yum list|grep mysql
yum list|grep nginx
8.想用什么软件,可以先
配置阿⾥云yum源,以及epel源,安装nginx,且保留nginx的rpm包缓存 到/opt/nginx_rpm/
# 1. 配置阿里云Base & epel 源
[root@mini ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@mini ~]#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 2. 缓存nginx rpm包到/opt/nginx_rpm
[root@mini ~]#yum install --downloadonly --downloaddir=/opt/nginx_rpm/ nginx
# 3. 查看缓存数据包
[root@mini ~]#ll /opt/nginx_rpm/
total 2104
-rw-r--r--. 1 root root 601193 Oct 19 08:41 nginx-1.20.1-9.el7.x86_64.rpm
-rw-r--r--. 1 root root 24125 Oct 19 08:41 nginx-filesystem-1.20.1-9.el7.noarch.rpm
-rw-r--r--. 1 root root 1524745 Nov 17 16:43 openssl11-libs-1.1.1k-2.el7.x86_64.rpm
请使⽤myssql官⽅的yum源,安装mysql-5.6.49版本
1.去mysql官网,找到mysql的rpm包下载地址
https://repo.mysql.com//mysql80-community-release-el7-5.noarch.rpm
通过分析其url,找到了mysql-5.6版本的rpm包,集合地儿
https://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/
2.创建mysql的yum配置文件即可
[root@167 yum.repos.d]# cat mysql5643.repo
[mysql56]
name='This is mysql 5.6.43 server rpm'
baseurl='https://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/'
enable=1
gpgcheck=0
3.安装对应版本软件即可
[root@167 yum.repos.d]# yum install mysql-community-server-5.6.43
如果出现依赖报错,需要你分析报错,解决对应的依赖关系
4.安装完毕后,启动mysql-5.6.43即可
找到如下脚本,即可用systemctl去管理启动了
[root@167 yum.repos.d]# ls /usr/lib/systemd/system/mysqld.service
/usr/lib/systemd/system/mysqld.service
[root@167 yum.repos.d]#
[root@167 yum.repos.d]#
[root@167 yum.repos.d]# systemctl start mysqld
[root@167 yum.repos.d]#
5.启动mysql
[root@167 yum.repos.d]# systemctl start mysqld
[root@167 yum.repos.d]# netstat -tunlp|grep mysql
[root@167 yum.repos.d]# ps -ef|grep mysql
6.能执行基本的sql语句
[root@167 yum.repos.d]#
[root@167 yum.repos.d]# # 如下是客户端命令去登录
[root@167 yum.repos.d]#
[root@167 yum.repos.d]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.43 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
mysql> exit;
Bye
[root@167 yum.repos.d]#
[root@167 yum.repos.d]#
[root@167 yum.repos.d]# yum install mysql-community-server-5.6.43
如果出现依赖报错,需要你分析报错,解决对应的依赖关系
Error: Package: mysql-community-server-5.6.43-2.el7.x86_64 (mysql)
Requires: perl(DBI)
Error: Package: mysql-community-server-5.6.43-2.el7.x86_64 (mysql)
Requires: perl(Data::Dumper)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
报错提示:因perl包版本过高不匹配,导致安装MySQL5.6失败