Linux配置yum源全过程
作者:Xnah_
Yum是基于RPM包的软件更新机制,能自动解决软件包依赖,由仓库和客户端组成,可部署在一台或多台服务器上,支持官方及第三方(如阿里云)源,手动更换源可提速,主要命令包括yum list/info/search/whatprovides进行查询
一、简介yum源
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。
yum由仓库和客户端组成,也就是整个yum由两部分组成,所以yum可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。
官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度。
二、yum相关命令
1.查询需要安装的软件
//显示可用的安装包(不加软件名显示所有安装包) [root@localhost ~]# yum list 软件名 //显示安装包详细信息 [root@localhost ~]#yum info 软件名 //根据关键字查找相关的软件安装包 [root@localhost ~]#yum search 关键词 //查找某个命令是哪个软件提供的 [root@localhost ~]#yum whatprovides 命令名
2.安装软件
[root@localhost ~]# yum [选项] install 软件名 -y 提示信息全部yes -q 不显示安装过程
3.卸载软件
//卸载已安装的软件必须加软件名 [root@localhost ~]# yum remove httpd //查看历史的使用记录,选择ID 1,2,3,4,5,可以使用yum history undo 4 进行卸载,这样对比remove好处是可以将所有的依赖都删除 [root@localhost ~]# yum history [root@localhost ~]# yum history undo 3 //3代表id号 //如果后悔 卸载 可以使用两种方式 yum history redo 4 (重新安装一遍) 再次使用yum history undo 6 (反悔卸载等于重新安装一遍)
4.其他
//仅下载安装包 [root@localhost ~]# yum install --downloadedonly --downloaddir=保存的路径 //清除yum缓存目录 [root@localhost ~]# yum clean all //新建yum源后重新建立元数据 [root@localhost ~]# yum makecache //显示所有yum源 [root@localhost ~]# yum repolist all
三、yum配置文件
1.yum主配置文件位置 /etc/yum.conf/
[root@localhost ~]#vim /etc/yum.conf/ [main] cachedir=/var/cache/yum/$basearch/$releasever --yum下载的RPM包的缓存目录 keepcache=0 --是否保存缓存 0代表不保存,1代表保存 debuglevel=2 --调试级别了解即可 logfile=/var/log/yum.log --日志文件位置 exactarch=1 --是否允许不同版本的rpm安装 obsoletes=1 --update 的一个参数是否可以允许旧版本的运行 gpgcheck=1 --验证秘钥 plugins=1 --是否允许插件 installonly_limit=5 --保存几个内核 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release
2.yum源配置文件位置 /etc/yum.repos.d/
[root@localhost2 ~]#cd /etc/yum.repos.d/ //默认已有的yum源,均为国外官方的在线源,可自己搭建 [root@localhost2 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 CentOS-x86_64-kernel.repo
四、手动搭建yum源
yum源分类:
- 本地源:file://
- 在线源:http:// 或 https://
- ftp源:ftp://
1.搭建本地yum源
2.搭建在线yum源(以阿里云yum源为例)
//将自带的yum备份到repo.bak下 [root@localhost2 yum.repos.d]#cd /etc/yum.repos.d [root@localhost2 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 CentOS-x86_64-kernel.repo [root@localhost2 yum.repos.d]#mkdir repo.bak [root@localhost2 yum.repos.d]#mv *.repo repo.bak [root@localhost2 yum.repos.d]#ls repo.bak //新建阿里云yum源配置文件 [root@localhost2 yum.repos.d]#vim ali.repo [ali] name=ali baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/ --阿里云镜像源地址 gpgcheck=0 --不校验 //可增设更新源 [aliupdate] name=update baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/ gpgcheck=0 //清除yum缓存目录和重新建立元数据 [root@localhost2 yum.repos.d]#yum clean all 已加载插件:fastestmirror, langpacks 正在清理软件源: ali aliupdate Cleaning up list of fastest mirrors Other repos take up 68 k of disk space (use --verbose for details) [root@localhost2 yum.repos.d]#yum makecache 已加载插件:fastestmirror, langpacks Determining fastest mirrors ali | 3.6 kB 00:00:00 aliupdate | 2.9 kB 00:00:00 (1/7): ali/group_gz | 153 kB 00:00:00 (2/7): ali/primary_db | 6.1 MB 00:00:22 (3/7): ali/filelists_db | 7.2 MB 00:00:25 (4/7): ali/other_db | 2.6 MB 00:00:09 (5/7): aliupdate/filelists_db | 9.4 MB 00:00:35 (6/7): aliupdate/other_db | 1.1 MB 00:00:04 (7/7): aliupdate/primary_db | 17 MB 00:01:01 元数据缓存已建立 //测试下载软件成功 [root@localhost2 yum.repos.d]#yum install -y mysql 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ---> 软件包 mariadb.x86_64.1.5.5.68-1.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ============================================================================================================================================================ Package 架构 版本 源 大小 ============================================================================================================================================================ 正在安装: mariadb x86_64 1:5.5.68-1.el7 ali 8.8 M 事务概要 ============================================================================================================================================================ 安装 1 软件包 总下载量:8.8 M 安装大小:49 M Downloading packages: mariadb-5.5.68-1.el7.x86_64.rpm | 8.8 MB 00:00:34 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : 1:mariadb-5.5.68-1.el7.x86_64 1/1 验证中 : 1:mariadb-5.5.68-1.el7.x86_64 1/1 已安装: mariadb.x86_64 1:5.5.68-1.el7 完毕!
3.搭建ftp yum源
ftp服务端
//下载vsftp [root@localhost2 yum.repos.d]#yum install -y vsftpd //开启服务 [root@localhost2 yum.repos.d]#systemctl start vsftpd //关闭防火墙和selinux [root@localhost2 ~]#systemctl stop firewalld [root@localhost2 ~]#setenforce 0 //搭建ftp源(这里使用镜像里的软件包)挂载到/var/ftp/centos7 [root@localhost2 ~]#cd /var/ftp [root@localhost2 ftp]#ls pub [root@localhost2 ftp]#mkdir centos7 [root@localhost2 ftp]#mount /dev/sr0 /var/ftp/centos7/ mount: /dev/sr0 写保护,将以只读方式挂载
客户端
//关闭防火墙和selinux [root@localhost2 ~]#systemctl stop firewalld [root@localhost2 ~]#setenforce 0 //将自带的yum备份到repo.bak下 [root@localhost1 ~]#cd /etc/yum.repos.d [root@localhost1 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 CentOS-x86_64-kernel.repo [root@localhost1 yum.repos.d]#mkdir repo.bak [root@localhost1 yum.repos.d]#mv *.repo repo.bak/ [root@localhost1 yum.repos.d]#ls repo.bak //新建ftp源配置文件 [root@localhost1 yum.repos.d]#vim ftp.repo [ftp] name=ftp baseurl=ftp://192.168.116.20/centos7 --指定ftp服务器镜像源地址(由于远程传输文件用户登录的根目录在/var/ftp 下,所以这里指定服务器地址/centos7目录,就是服务器的/var/ftp/centos7 目录) gpgcheck=0 清除yum缓存目录和重新建立元数据 [root@localhost1 yum.repos.d]#yum clean all 已加载插件:fastestmirror, langpacks 正在清理软件源: ftp Cleaning up list of fastest mirrors Other repos take up 1.1 G of disk space (use --verbose for details) [root@localhost1 yum.repos.d]#yum makecache 已加载插件:fastestmirror, langpacks Determining fastest mirrors ftp | 3.6 kB 00:00:00 (1/4): ftp/group_gz | 153 kB 00:00:00 (2/4): ftp/primary_db | 3.3 MB 00:00:00 (3/4): ftp/filelists_db | 3.3 MB 00:00:00 (4/4): ftp/other_db | 1.3 MB 00:00:00 元数据缓存已建立 //测试安装软件成功 [root@localhost1 yum.repos.d]#yum install -y tftp 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ---> 软件包 tftp.x86_64.0.5.2-22.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ========================================================================================================================================================= Package 架构 版本 源 大小 ========================================================================================================================================================= 正在安装: tftp x86_64 5.2-22.el7 ftp 38 k 事务概要 ========================================================================================================================================================= 安装 1 软件包 总下载量:38 k 安装大小:52 k Downloading packages: tftp-5.2-22.el7.x86_64.rpm | 38 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : tftp-5.2-22.el7.x86_64 1/1 验证中 : tftp-5.2-22.el7.x86_64 1/1 已安装: tftp.x86_64 0:5.2-22.el7 完毕!
五、配置yum源优先级
当既有本地yum源又有aliyun源或其他yum源的时候,我们在装软件包的时候当然希望先用本地的yum源去安装,本地找不到可用的包时再使用aliyun源去安装软件,这里就涉及到了优先级的问题,yum提供的插件yum-plugin-priorities.noarch可以解决这个问题。
//查看是否安装了yum-plugin优先级插件 [root@localhost2 ~]# rpm -q yum-plugin-priorities.noarch 未安装软件包 yum-plugin-priorities.noarch //如果未安装就需要安装一下 [root@localhost2 ~]# yum install -y yum-plugin-priorities.noarch //如果我们需要优先使用哪个yum源,就在其配置文件添加priority=1 字段(数字越小优先级越高) [root@localhost2 ~]vim local.repo [local] name=local baseurl=file:///mnt/ enabled=1 gpgcheck=1 priority=1 --数字越小优先级越高
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。