需求
为快速编译,本地镜像 debian。
镜像工具
- ftpsync,debian 官方推荐
- apt-mirror,实测速率太慢
- debmirror,未测
一开始使用 apt-mirror,在 ubuntu 中 apt-get install 的 apt-mirror 并不能做 debian 镜像,出现各种提示错误。所以如果要用 apt-mirror,ubuntu 做 ubuntu 的,debian 上做 debian的。如果想在 ubuntu 上做 debian 镜像,那就搞一个 debian docker 吧。
ftpsync 使用记录
官方对做 mirror 的说明,详见https://www.debian.org/mirror/ftpmirror。
ftpsync 的获取方式:
- tar 包 from https://ftp-master.debian.org/ftpsync.tar.gz
- git repository: git clone https://anonscm.debian.org/git/mirror/archvsync.git (see https://anonscm.debian.org/cgit/mirror/archvsync.git/)
使用说明见:https://anonscm.debian.org/cgit/mirror/archvsync.git/tree/README.md,相对简单。
快速入门:
- 建议创建一个特定的用户用于整个镜像源制作(我未做)
- 建议创建一个独立的目录用于整个镜像源制作,上一步创建的用户有写权限。(这一步肯定有必要)
- 将 ftpsync 脚本放在 $HOME/bin 或者 $HOME 下(我觉得这是为什么要创建特定用户的原因,保证这个目录只用于做镜像源用,其他用户也不会烦要在 /home/xxx 目录下有这种业务脚本)
- 将 ftpsync.conf.sample 重命名为 ftpsync.conf 放到 $HOME/etc 中,并根据你自己的需要做配置。至少你得改
TO=
和RSYNC_HOST
两行。TO=
指明下载的结果存放在本地哪个路径RSYNC_HOST
指明上级镜像源,即你将从哪个服务器下载
- 创建 $HOME/log 目录,或者在 $LOGDIR 中指定
- 执行 ftpsync,等下载结束了!
还有另一处方式,由上级镜像源触发更新操作,则需要做其他处理:
If only you receive an update trigger, Setup the .ssh/authorized_keys for the mirror user and place the public key of your upstream mirror into it. Preface it with
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync",from="IPADDRESS"
and replace $IPADDRESS with that of your upstream mirror.
arch 配置项,有两个互斥的选项,ARCH_INCLUDE
和 ARCH_EXCLUDE
,相当于要下载的白名单和黑名单。查看 bin/ftpsync
脚本的源码,可以看出两个选项只能配置一个。建议直接配置 ARCH_INCLUDE,因为 ARCH_EXCLUDE 容易有漏网之鱼。
1 | # Learn which archs to include/exclude based on ARCH_EXCLUDE and ARCH_INCLUDE |
配置文件
$HOME/etc/ftpsync.conf
1 | ######################################################################## |
$HOME/etc/ftpsync-security.conf
此配置只下载 amd64 和 source,其他架构忽略。
RSYNC_HOST 尝试 ftp.cn.debian.org
和 mirrors.ustc.edu.cn"
,都不行,只能用 security.debian.org
。目前还没有搞懂,感觉很奇怪,这两个源都有 debian-security 目录。
1 | ######################################################################## |
做 debian-security 镜像源
配置文件如上所示,执行的命令为 ./bin/ftpsync sync:archive:security
,注意字符串的一致,这里 security 要和配置文件 ftpsync-security.conf 中的 security 保持一致。
cron 每天定时 sync
1 | $ cat /etc/cron.d/ftpsync |
log
如果下载失败,中间过程可见 LOGDIR 中的 log 进行排查。例如先前排查 debian-security 下载失败的问题。
- ftpsync.log,ftpsync 脚本的 log
- rsync-ftpsync.log,rsync 的正常 log,很多。。
- rsync-ftpsync.error,rsync 的异常 log,出问题看这里,可以看到 rsync 的 error code 及出现这个 error code 的原因。
1 | $ ls log/ |
镜像总大小
详见官方的镜像大小记录,每日更新,https://www.debian.org/mirror/size。
如果要减少镜像的大小,需要配置 ARCH_INCLUDE=
,ARCH_EXCLUDE 要排除太多东西。
1 | mirror$ du -hd 1 |
设置本地 mirror
搭建局域网镜像源服务器
见 (http://www.cnblogs.com/beynol/p/nginx-simple-file-server.html) 该链已失效。。
- 安装 nginx,
sudo apt-get install nginx
- 配置
/etc/nginx/conf.d/files_server.conf
- 重启 nginx 服务,
sudo service nginx restart
1 | cat /etc/nginx/conf.d/files_server.conf |
debian OS 中的 sources.list 配置
- sources.list
1 | deb [trusted=yes] http://192.168.250.250/debian jessie main contrib non-free |
- apt-get update
1 | $ docker run -it debian:jessie bash |
问题记录
Update 失败。原因:ftpsync 可能不是一次性能能完成下载,需要下载比较久。
1 | root@b58bb3484992:/# cat etc/apt/sources.list |
使用 apt-mirror 出现的问题
以下贴出 USTC 同学的邮件往来记录,谢谢 USTC LUG!
- 发现问题:
1 | 因本地开发网与外网隔离,想做一个本地镜像站,但是发出使用 apt-mirror 做镜像时,通常下载一小会儿的时候就会 connection refused,此时正常使用也使用不了。请问是否 USTC mirror 对使用者的下载有限制,如果有限制,我应该如何做自己的本地镜像站? |
- Request more log
1 | 请您尝试重现这个故障, 并在故障发生时执行 |
curl -vvLI http://mirrors.ustc.edu.cn/debian/README1
2
请反馈该命令的完整输出。
- Reply more log
1 | Log 如下所示 |
- 反馈
1 | 你好! |
- 确认问题原因
1 | 谢谢你的回复! |