Arch安装AUR软件时github下载软件包慢或不可获得的问题
Arch安装AUR软件时github下载软件包慢或不可获得的问题
github的release,噩梦一般。当AUR里面调用缺省的curl去对付那些包的时候,90%的情况是无法成功的。即便成功也是苦等几十分钟。至少我的网络环境是这样。
/etc/makepkg.conf
:
#-- 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')
修改如下
##-- 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')
DLAGENTS=('file::/usr/bin/axel -n 15 -a -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镜像站:
https://github.com.cnpmjs.org
https://hub.fastgit.org
先ping
一下比较相应时间,选择优质的
ping github.com
ping github.com.cnpmjs.org
ping fastgit.org
通过脚本换链接:
axel_for_makepkg.sh
:
#! /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
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成单线程