0
点赞
收藏
分享

微信扫一扫

利用bash脚本为Manjaro建立本地更新源

得一道人 2022-02-27 阅读 73

作为一个资金并不充裕的学校,我校的基础网络设施比较落后。学生上机机房机器百余台,但是互联网的总带宽仍旧只有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

至此,源服务器就安装好了。
Manjaro
待机房的客户端完成安装,就可以把源设置到本地了。pacman速度好快啊!唯一遗憾的是AUR太大了,依赖项太多,无法完全搬过来。不过也没有太大必要。

按照类似原理,我们可以设置debain、Ubuntu的本地源了。再次感谢一流高校USTC对开源的贡献。

举报

相关推荐

0 条评论