Linux 小技巧:一文带你搭建本地 Yum 源

0)YUM 简单介绍

0.1)YUM 是什么

YUM 主要用于自动安装、升级 rpm 软件包,它能自动查找并解决 rpm 包之间的依赖关系。要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的 repository(软件仓库)。这个软件仓库我们习惯称为 Yum 源。
网络上有大量的 Yum 源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地 YUM 源服务器最大优点是局域网的快速网络连接和稳定性。
有了局域网中的 YUM 源服务器,即便在 Internet 连接中断的情况下,也不会影响其他 YUM 客户端的软件安装和升级。

YUM(Yellow Dog Updater Modified)为多个 Linux 发行版的软件包管理器,例如 Redhad RHEL CentOS & Fedora。YUM 主要用于自动安装,升级 rpm 软件包,他能自动查找并解决 rpm 包的依赖关系

YUM 自动下载YUM包并安装,类似软件管家的一键安装功能:

image.jpg

0.2)YUM 源是什么

  1. 要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的 repository(软件仓库),这个软件仓库我们习惯称为 yum 源。
  2. 网络上有大量的 yum 源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败,特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受,因此我们在优化系统时,都会更换国内的源
  3. 相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性,有了局域网中的YUM源服务器,即便在Internel连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。

0.3)YUM 源工作原理

image.jpg

YUM 源 Client 配置文件的存放路径

[root@localhost packages] cd /etc/yum.repos.d/
[root@localhost yum.repos.d] ls
CentOS-Base.repo          CentOS-fasttrack.repo  epel.repo
CentOS-Base.repo20160426  CentOS-Media.repo
CentOS-Debuginfo.repo     CentOS-Vault.repo

0.4)国内 YUM 仓库推荐

以下为国内常见 yum 仓库

网易 163 yum 源
安装方法查看:http://mirrors.163.com/.help/ 

中科大的 yum 源
安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help 

sohu 的 yum 源
安装方法查看: http://mirrors.sohu.com/help/ 

阿里云的 yum 源
安装方法查看: https://opsx.alibaba.com/mirror 

清华大学的 yum 源
安装方法查看: https://mirrors.tuna.tsinghua.edu.cn/ 

浙江大学的 yum 源
安装方法查看: http://mirrors.zju.edu.cn/ 

中国科技大学 yum 源
安装方法查看: http://centos.ustc.edu.cn/

0.5)RPM 包版本号说明

rpm 包的命名规范
name-version-release-arch.rpm
名称 - 版本 - 发行版本 - 平台 - 后缀
version:版本号
主版本号:软件有重大改进
次版本号:某个子功能发生变化
修订号:软件发布时解决了一个BUG,或者调整了一部分功能
release:发行版本号

1)YUM 仓库搭建部署

方案一:使用 ISO 镜像搭建 YUM 仓库

  1. 将镜像文件提前下载到服务器
mkdir -p /data/mirrors/ && cd /data/mirrors/

rz CentOS-7-x86_64-DVD-1810.iso

image.png

  1. 将光驱进行挂载到 /mnt 目录下
// 挂载 ISO 镜像文件
mount CentOS-7-x86_64-DVD-1810.iso /mnt

// 将挂载目录中的所有文件复制到 /data/mirrors/centos/ 目录
mkdir -p /data/mirrors/centos/
\cp -rf /mnt/* /data/mirrors/centos/

// 检查文件是否复制完毕
ls -l /data/mirrors/centos/
du -sh /data/mirrors/centos/

// 取消挂载的 iso 文件
umount /mnt/
  1. 安装 Nginx 服务

扩展:reset_centos.sh** **< 可以使用该脚本配置在线源安装 Nginx >

yum install nginx vim -y
  1. 配置 Nginx 服务
\cp -f /etc/nginx/nginx.conf /etc/nginx/nginx.conf_bak


// 配置 Nginx 服务
vim /etc/nginx/nginx.conf
http {
    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;

server {
		root /data/mirrors/;

image.png

nginx -t
  1. 启动 Nginx 服务
systemctl start nginx
systemctl enable nginx
  1. 访问 Web 界面

如报错:403 Forbidden,关闭 SELinux 再尝试访问

image.png
image.png
image.png

  1. 客户端配置 YUM 仓库

注意将 baseurl 改为你主机的 IP 地址

rm -rf /etc/yum.repos.d/*.repo

cat >/etc/yum.repos.d/CentOS-Base.repo<<EOF
[centos]
name=CentOS-$releasever - Base
baseurl=http://10.0.59.114/centos/
gpgcheck=0
enabled=1
EOF
  1. 客户端使用 YUM 仓库
// 清理 yum 缓存
yum clean all

// 更新 yum 仓库
yum makecache

// 验证
yum repolist

image.png

  1. 使用 Yum 仓库安装软件
[root@web01 ~] yum -y install httpd          // 安装 apache 软件测试

image.png

方案二:使用 RPM 包搭建 YUM 仓库

例如:单独下载某个软件所依赖的所有 RPM 软件包,而后放置 Yum 仓库生成 repodata 索引文件即可。

  1. 清理上面的实验环境
rm -rf /data/mirrors/centos/
  1. 配置公网 YUM 仓库
rm -rf /etc/yum.repos.d/*.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all
yum repolist

image.png

  1. 创建目录用来做 YUM 仓库的使用,准备下载 rpm 包软件
mkdir -p /data/mirrors/centos/
yum install --downloadonly --downloaddir=/data/mirrors/centos/ java
  1. 安装 createrepo 软件,用于生成 yum 仓库数据库的软件
yum -y install createrepo

rpm -qa | grep createrepo
  1. 初始化 repodata 索引文件(每次发布新的内容都需要更新,)
createrepo -pdo /data/mirrors/centos/ /data/mirrors/centos/

image.png

  1. 每加入或者更新一个 rpm 包就要更新一下
createrepo --update /data/mirrors/centos/

image.png

  1. 使用 Nginx 当 Web 服务器
yum -y install nginx
cp /etc/nginx/nginx.conf{,.source.bak}

vim /etc/nginx/nginx.conf
http {
    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;

server {
		root /data/mirrors/;

image.png

  1. 检查并启动 Nginx
nginx -t
systemctl start nginx
systemctl enable nginx
  1. 访问 Web 界面

如报错:403 Forbidden,关闭 SELinux 再尝试访问

image.png
image.png

  1. YUM 客户端设置

注意将 baseurl 改为你主机的 IP 地址

rm -rf /etc/yum.repos.d/*.repo

cat >/etc/yum.repos.d/local.repo<<EOF
[local-repo]
name=local
baseurl=http://10.0.59.114/centos/
gpgcheck=0
enabled=1
EOF

// 验证
yum clean all
yum repolist

// 安装软件
yum install java

image.png

方案三:公网镜像同步搭建 YUM 仓库

上述方案都只是将系统现有的 rpm 包,放置在 yum 源。

但还有一种企业需求,说的更具体一点,平时学生上课 yum 安装软件都是从公网下载的,占用带宽,因此在学校里搭建一个内网 yum 服务器,但又考虑到学生回家也要使用 yum 安装软件,如果 yum 软件的数据库文件 repodata 不一样,就会有问题。因此我想到的解决方法就是直接使用公网 yum 源的 repodata。

// '上游 yum 源必须要支持 rsync 协议, 否则不能使用 rsync 进行同步'
http://mirrors.ustc.edu.cn/status/

CentOS 源:rsync://mirrors.tuna.tsinghua.edu.cn/centos/
epel 源:rsync://mirrors.tuna.tsinghua.edu.cn/epel/
备用源:rsync://mirrors.ustc.edu.cn/

image.png

yum provides rsync

yum install rsync -y

**同步方案 1:**此方案适合磁盘空间不是很富裕,但是想最小化使用 YUM 私有仓库的需求 ( 仅适用于 CentOS7 系列系统 )

mkdir -p /data/mirrors/
mkdir -p /data/mirrors/centos/7/os/x86_64/
mkdir -p /data/mirrors/centos/7/extras/x86_64/
mkdir -p /data/mirrors/centos/7/updates/x86_64/
mkdir -p /data/mirrors/epel/7/

rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/ /data/mirrors/centos/7/os/x86_64/
rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64/ /data/mirrors/centos/7/extras/x86_64/
rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/updates/x86_64/ /data/mirrors/centos/7/updates/x86_64/
rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/epel/7/ /data/mirrors/epel/7/

**同步方案 2:**此方案适合磁盘空间还算富裕,但是想最性价比的使用 YUM 私有仓库的需求 ( 仅适用于 CentOS7 系列系统 )

mkdir -p /data/mirrors/
mkdir -p /data/mirrors/centos/7/
mkdir -p /data/mirrors/epel/7/

rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/ /data/mirrors/centos/7/
rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/epel/7/ /data/mirrors/epel/7/

**同步方案 3:**此方案适合磁盘空间富裕,使用 YUM 私有仓库的需求 ( 适用于CentOS系列系统 )

mkdir -p /data/mirrors/
mkdir -p /data/mirrors/centos/
mkdir -p /data/mirrors/epel/

rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/centos/ /data/mirrors/centos/
rsync -avzuP rsync://mirrors.tuna.tsinghua.edu.cn/epel/ /data/mirrors/epel/

完成上述三种方案的其中一种后…

  1. 使用 Nginx 当 Web 服务器
yum -y install nginx

cp /etc/nginx/nginx.conf{,.source.bak}

vim /etc/nginx/nginx.conf
http {
    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;

server {
		root /data/mirrors/;

image.png

  1. 检查并启动 Nginx
[11:14:01 root@blog ~] nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl start nginx
systemctl enable nginx
  1. 访问 Web 界面

如报错:403 Forbidden,关闭 SELinux 再尝试访问

image.png

  1. YUM 客户端设置

注意将 baseurl 改为你主机的 IP 地址

rm -rf /etc/yum.repos.d/*.repo

cat >/etc/yum.repos.d/local.repo<<EOF
[local-repo]
name=local
baseurl=http://10.0.59.114/centos/
gpgcheck=0
enabled=1
EOF

// 验证
yum clean all
yum makecache

// 查看
yum repolist

// 安装软件
yum install java
  • 48
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux 系统中,yum 是一款非常重要的包管理工具,它可以帮助我们快速方便地安装、升级和删除软件包。为了提高软件包安装的效率,我们可以搭建本地的 yum ,这样就可以避免重复下载和从远程服务器上拉取软件包,大大缩短软件包安装的时间。 以下是在 CentOS 7 系统上搭建本地 yum 的步骤: 1. 安装 httpd 和 createrepo 软件包: ``` sudo yum install httpd createrepo -y ``` 2. 创建一个本地 yum 目录: ``` sudo mkdir -p /var/www/html/yum ``` 3. 将需要的软件包复制到本地 yum 目录中: ``` sudo cp /path/to/packages/* /var/www/html/yum/ ``` 4. 进入本地 yum 目录并创建 repodata 目录: ``` cd /var/www/html/yum sudo createrepo . ``` 5. 修改 Apache 配置文件,开启目录索引: ``` sudo vi /etc/httpd/conf/httpd.conf ``` 找到以下这一行: ``` Options Indexes FollowSymLinks ``` 将其改为: ``` Options Indexes FollowSymLinks +Indexes ``` 保存并退出。 6. 启动 Apache 服务: ``` sudo systemctl start httpd ``` 7. 配置本地 yum : ``` sudo vi /etc/yum.repos.d/local.repo ``` 添加以下内容: ``` [local] name=Local Yum Repository baseurl=http://localhost/yum/ gpgcheck=0 enabled=1 ``` 保存并退出。 8. 清除 yum 缓存: ``` sudo yum clean all ``` 9. 测试本地 yum 是否可用: ``` sudo yum list ``` 如果列出了本地 yum 中的软件包列表,说明本地 yum 已经搭建成功。 以上就是在 Linux 系统中搭建本地 yum 的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Toasten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值