作为一个资金并不充裕的学校,我校的基础网络设施比较落后。学生上机机房机器百余台,但是互联网的总带宽仍旧只有10Mb。一些同学看到我在用Manjaro,有学习Manjaro的兴趣,但发现机房安装软件太慢,想和我一起建立一个本地源。我们二话不说,开搞。
目前国内开源源服务器这一块,做的比较全的是中国科技大学。主要的发行版都支持rsync直接同步,其链接参考
中国科学技术大学开源软件镜像
1、安装服务器
在教师网络上安装一个服务器,或者采用树莓派+512GB 卡的方法直接安装。
注意如果内存卡比较小,可以购买一个移动硬盘或者512GB的卡做扩展。
2、下载脚本
在这里下载脚本https://gitlab.manjaro.org/tools/maintenance-tools/boxit/-/tree/master
3、修改脚本
根据自己的情况,稍微对上述脚本进行修改:
#!/bin/bash
HOME="/media/pi/mirror"
TARGET="${HOME}/manjaro"
TMP="${HOME}/.tmp/manjaro"
LOCK="/tmp/rsync-manjaro-stable.lock"
# NOTE: You'll probably want to change this or remove the --bwlimit setting in
# the rsync call below
BWLIMIT=100000
SOURCE="rsync://rsync.mirrors.ustc.edu.cn/repo/manjaro"
[ ! -d "${TARGET}" ] && mkdir -p "${TARGET}"
[ ! -d "${TMP}" ] && mkdir -p "${TMP}"
exec 9>"${LOCK}"
flock -n 9 || exit
## if we are called without a tty (cronjob) only run when there are changes
#if ! tty -s && diff -b <(curl -s "${STATE}") "${TARGET}/state" >/dev/null; then
# exit 0
#fi
if ! stty &>/dev/null; then
QUIET="-q"
fi
rsync -rtlvH --safe-links \
--bwlimit=${BWLIMIT} \
--delete-after --progress \
-h ${QUIET} --timeout=600 --contimeout=120 -p \
--no-motd \
--temp-dir="${TMP}" \
${SOURCE} \
"${TARGET}"
#ArchlinuxCN---------------------------------------
TARGET="${HOME}/archlinuxcn"
TMP="${HOME}/.tmp/archlinuxcn"
LOCK="/tmp/rsync_archlinuxcn.lock"
SOURCE="rsync://rsync.mirrors.ustc.edu.cn/repo/archlinuxcn"
[ ! -d "${TARGET}" ] && mkdir -p "${TARGET}"
[ ! -d "${TMP}" ] && mkdir -p "${TMP}"
exec 9>"${LOCK}"
flock -n 9 || exit
## if we are called without a tty (cronjob) only run when there are changes
#if ! tty -s && diff -b <(curl -s "${STATE}") "${TARGET}/state" >/dev/null; then
# exit 0
#fi
if ! stty &>/dev/null; then
QUIET="-q"
fi
# sleep $((RANDOM%60))
# excluded fh 2019-12-18
rsync -rtlvH --safe-links \
--bwlimit=${BWLIMIT} \
--delete-after --progress \
-h ${QUIET} --timeout=600 --contimeout=120 -p \
--no-motd \
--temp-dir="${TMP}" \
${SOURCE} \
"${TARGET}"
保存为 /media/pi/mirror/syn.sh
注意要给mirror文件夹当前用户的相应权限。Manjaro和ArchlinuxCN两个源全部同步至少需要256GB的空间。
4、配置自动脚本
编辑crontab
$ crontab -e
#在底部加上每天的1:20分开始同步
20 01 * * 0,1,2,3,4,5,6 /media/pi/mirror/syn.sh
5、开启cron服务
$ /lib/systemd/systemd-sysv-install enable cron
6、配置机房Web服务
安装apache2,设置 /media/pi/mirror 到 http://192.168.1.2/mirror
至此,源服务器就安装好了。
待机房的客户端完成安装,就可以把源设置到本地了。pacman速度好快啊!唯一遗憾的是AUR太大了,依赖项太多,无法完全搬过来。不过也没有太大必要。
按照类似原理,我们可以设置debain、Ubuntu的本地源了。再次感谢一流高校USTC对开源的贡献。