Arch安装AUR软件时github下载软件包慢或不可获得的问题

github的release,噩梦一般。当AUR里面调用缺省的curl去对付那些包的时候,90%的情况是无法成功的。即便成功也是苦等几十分钟。至少我的网络环境是这样。

/etc/makepkg.conf

1
2
3
4
5
6
7
8
9
#-- The download utilities that makepkg should use to acquire sources
# Format: 'protocol::agent'
DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
'ftp::/usr/bin/curl -gqfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'http::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')

吧curl换成了axel

1
2
3
4
5
6
DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
'ftp::/usr/bin/axel -n 15 -a -o %o %u'
'http::/usr/bin/axel -n 15 -a -o %o %u'
'https::/usr/bin/axel -n 15 -a -o %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')

但github不管多少线程都跑不动,改用镜像站下载

github镜像站:

1
2
https://github.com.cnpmjs.org
https://hub.fastgit.org

ping 一下比较相应时间,选择优质的

1
2
3
ping github.com
ping github.com.cnpmjs.org
ping fastgit.org

参考: 让你的GitHub下载飞速提升到2M/s以上

通过脚本换链接:

axel_for_makepkg.sh :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#! /bin/bash
# 该脚本用于处理yay安装软件时,由github下载缓慢甚至无法下载的问题
# 检测域名是不是github,如果是,则替换为镜像网站
# 采用axel代替curl进行10线程下载
# 实验用链接:
# https://download.fastgit.org/beekeeper-studio/beekeeper-studio/releases/download/v1.6.11/beekeeper-studio_1.6.11_amd64.deb
# https://github.com/beekeeper-studio/beekeeper-studio/releases/download/v1.6.11/beekeeper-studio_1.6.11_amd64.deb

domin=`echo $2 | cut -f3 -d'/'`;
others=`echo $2 | cut -f4- -d'/'`;
case "$domin" in
"github.com")
url="https://download.fastgit.org/"$others;
;;
*)
url=$2;
;;
esac

echo "download from $url";
/usr/bin/axel -n 10 -a -o $1 $url;

修改/etc/makepkg.conf

1
2
3
4
5
6
DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
'ftp::/usr/bin/axel -n 15 -a -o %o %u'
'http::/usr/bin/axel -n 15 -a -o %o %u'
'https::~/meshell/fake_download_tools/fake_axel_for_makepkg %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')

镜像不允许多线程下载哈哈,然而没关系,axel自动fallback成单线程

参考: 机智的解决arch/manjaro安装AUR软件时github下载软件包慢或不可获得的问题

-------------本文结束感谢阅读-------------

欢迎关注我的其它发布渠道