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

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

通过脚本换链接:

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成单线程

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