目录
概述
由于内网有大量机器不能访问公网,安装软件比较费劲,那么,如何让这些机器也能yum快速安装最新的软件呢?搭建一个本地镜像源能解决这样的问题,而如何让本地镜像源仓库的软件保持最新,就需要一个神器--reposync。
reposync用于将远端镜像源同步到本地。
语法说明
/usr/bin/reposync [options]
参数说明
参数 | 说明 |
---|---|
-c | 要使用的配置文件(默认为/etc/yum.conf) |
-d | 删除存储库中不再存在的本地包 |
-r REPOID, --repoid=REPOID | 指定repo id来查询,可以指定多个次(默认全部启用) |
-p DESTDIR, --download_path=DESTDIR | 下载包的路径:默认为当前目录 |
-g | 删除未通过GPG签名检查的软件包 |
-u | 只列出要下载的URL,不要下载 |
-n | 仅下载per-repo的最新软件包 |
-l | 启用yum插件支持 |
部署
- 系统:CentOS Linux release 7.9.2009 (Core)
- 主机IP:192.168.70.84
配置阿里云源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Epel.repo
yum makecache
同步源
创建文件夹并同步
mkdir -p /data/centos/7/64bit
/usr/bin/reposync -np /data/centos/7/64bit/
建仓
createrepo -p /data/centos/7/64bit/base/
createrepo -p /data/centos/7/64bit/epel/
createrepo -p /data/centos/7/64bit/updates/
createrepo -p /data/centos/7/64bit/extras/
Nginx配置
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/repo.access.log main;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
location / {
root /data;
index index.html index.htm;
}
}
重启Nginx:
systemctl reload nginx
打开http://192.168.70.84即可看到镜像仓库中的软件。
配置定时计划
0 1 * * * /usr/bin/reposync -np /data/centos/7/64bit/
yum配置
/etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-Base(GDS)
baseurl=http://192.168.70.84/centos/7/64bit/base
path=/
enabled=1
gpgcheck=0
[updates]
name=CentOS-Updates(GDS)
baseurl=http://192.168.70.84/centos/7/64bit/updates
path=/
enabled=1
gpgcheck=0
[extras]
name=CentOS-Extras(GDS)
baseurl=http://192.168.70.84/centos/7/64bit/extras
path=/
enabled=1
更新缓存
# 导入gpg公钥
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# 更新缓存
yum makecache