银河麒麟V10SP1服务器系统同步外网源到本地
配置环境:
服务器系统:Kylin-Server-10-SP1-Release-Build20-20210518-x86_64
本文同步的是外网x86的yum源仓库,若需要同步arm的yum源仓库,则需要修改yum配置文件的架构为aarch64,其他配置不变。
1、配置系统环境
a)确定系统版本及网络情况
首先确定服务器环境是否可以连接外网,若在受限的网络中,请确保可以不受限访问源地址。
使用下面的命令确定系统版本情况
[root@localhost ~]# nkvers
############## Kylin Linux Version #################
Release:
Kylin Linux Advanced Server release V10 (Tercel)
Kernel:
4.19.90-23.8.v2101.ky10.x86_64
Build:
Kylin Linux Advanced Server
release V10 (SP1) /(Tercel)-x86_64-Build20/20210518
#################################################
b)关闭系统防火墙和 selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=disable
2、配置外网yum源
a)备份原yum配置文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# cp kylin_x86_64.repo kylin_x86_64.repo_bak
b)yum配置
# 清理yum缓存文件
[root@localhost ~]# yum clean all
# 重新创建 yum 元数据
[root@localhost ~]# dnf makecache
Kylin Linux Advanced Server 10 - Os 27 kB/s | 3.7 kB 00:00
Kylin Linux Advanced Server 10 - Updates 18 kB/s | 2.9 kB 00:00
Metadata cache created.
3、搭建本地yum源
a)安装所需软件包
1 [root@localhost ~]# yum -y install createrepo httpd
b)同步外网源仓库到本地
# 创建仓库存储路径
# 仓库存储位置可自定义,但是为了方便,本次将存储路径在/var/www/html/
# V10SP1 X86_64源仓库同步到本地后需要占用13G以上的磁盘空间,请注意磁盘剩余空间进行选择仓
库存储位置
# 创建packages目录作为yum仓库存储位置,若是同步arm的yum源,则将下面x86_64换成aarch64
mkdir -p /var/www/html/packages/x86_64
# 使用reposync命令同步外网源仓库到本地,若是同步arm的yum源,则将下面x86_64换成aarch64
reposync -n --repoid=ks10-adv-os \
--repoid=ks10-adv-updates \
-p /var/www/html/packages/x86_64/
############################################
reposync参数:
Options:
-h, --help 显示此帮助消息并退出
-c CONFIG, --config=CONFIG
要使用的配置文件(默认为/etc/yum.conf)
-a ARCH, --arch=ARCH 像运行指定的arch一样(默认值:current
arch,注意:不会覆盖$releasever。 x86_64是一个
i * 86的超集。)
--source 在源包上运行
-r REPOID, --repoid=REPOID
指定repo id来查询,可以指定多个次(默认全部启用)
-e CACHEDIR, --cachedir=CACHEDIR 用于存储元数据的目录
-t, --tempcache 使用临时目录存储/访问yum-cache
-d, --delete 删除存储库中不再存在的本地包
-p DESTDIR, --download_path=DESTDIR 下载包的路径:默认为当前目录
--norepopath 不要将reponame添加到下载路径。只可以
在同步单个存储库时使用(默认为
添加reponame)
-g, --gpgcheck 删除未通过GPG签名检查的软件包
-u, --urls 只列出要下载的URL,不要下载
-n, --newest-only 仅下载per-repo的最新软件包
-q, --quiet 尽可能少地输出
-l, --plugins 启用yum插件支持
-m, --downloadcomps 下载comps.xml
--download-metadata 下载所有非默认元数据
--allow-path-traversal
允许存储在其repo目录之外的包
同步(UNSAFE,小心使用!)
c)创建本地索引文件
# 使用createrepo命令创建本地索引文件,若是同步arm的yum源,则将下面x86_64换成aarch64
createrepo /var/www/html/packages/x86_64/ks10-adv-os/
createrepo /var/www/html/packages/x86_64/ks10-adv-updates/
d) 启动httpd服务
# 若本地yum仓库存储位置在http默认的/var/www/html/目录下,则直接启动httpd服务即可
systemctl start httpd
systemctl enable httpd
# 若本地yum仓库存储位置在自定义的路径下,需手动配置httpd。
e)浏览器访问及本地测试
# 使用浏览器访问本地 yum 源, 使用下面的url进行访问测试
http://localhost/packages/x86_64/
# 创建新的测试repo文件,
[root@localhost ~]# cat /etc/yum.repos.d/server.repo
[test]
name=test repo
baseurl= http://192.168.66.122/packages/x86_64/ks10-adv-os/
gpgcheck=0
enable=1
# 清理yum元数据缓存,查看是否成功重建yum元数据
[root@localhost ~]# yum clean all
[root@localhost ~]# yum repolist
4.创建定时同步任务
a)创建同步任务脚本
# 注意修改对所需同步的repoid和yum源仓库存储位置
[root@localhost ~]# vim /opt/update_repo.sh
#!/bin/bash
reposync -n --repoid=ks10-adv-os \
--repoid=ks10-adv-updates \
-p /var/www/html/packages/x86_64/
createrepo --update /var/www/html/packages/x86_64/ks10-adv-os/
createrepo --update /var/www/html/packages/x86_64/ks10-adv-updates/
[root@localhost ~]# chmod +x /opt/update_repo.sh
b)创建定时任务
[root@localhost ~]# crontab -e
[root@localhost ~]# crontab -l
0 20 * * * /opt/update_repo.sh ## 每天晚上8点同步