解决ArchLinux使用yay或paru安装软件时从Github下载慢或不可下载的问题

2023年10月08日星期日晴北京市北京师范大学, 今天有点心烦,决定解决使用paru安装软件时,遇到在github下载软件时不能下载的问题。虽然没有成功,但是感觉思路正确,暂时先记录下来。

2023年11月27日经过研究彻底解决问题,重写了脚本,找到了原来问题的bug, 经测试成功安装小白羊版阿里云盘

成功解决问题脚本

2023年10月20日星期五晴北京市北京师范大学,成功解决问题,自今天起不仅解决了vim, neovim的插件安装升级问题,也解决了paru安装软件不能下载https://github.com源的问题,对于ArchLinux的研究至此告一段落,可以正常的在ArchLinux上安装及处理各种软件问题。直接给出解决问题的脚本文件:

自动配置脚本iparu.sh

iparu.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/sh
#
# 项目:iparu.sh
# 版本:V1.1
# 功能:解决paru 或yay 无法从https://github.com下载资源的问题
# 注意:脚本ParuAxel重新将https://github.com 定义到了镜像网址,如果失效请打开ParuAxel脚本更换可行的镜像
# 历史:2023-11-27 正式解决问题
# Copyright (C) 2023 feng <feng@arch>
#
# Distributed under terms of the MIT license.
#
# 安装多线程下载工具axel
sudo pacman -S --needed --noconfirm axel &> /dev/null
# 修改配置文件
sudo curl -o /etc/makepkg.conf https://gitlab.com/fengzhenhua/script/-/raw/main/makepkg.conf\?inline\=false
# 安装修改后的下载脚本ParuAxel
sudo curl -o /usr/bin/ParuAxel https://gitlab.com/fengzhenhua/script/-/raw/main/ParuAxel.sh\?inline\=false
sudo chmod 755 /usr/bin/ParuAxel
echo "ParuAxel 安装成功,paru配置完毕 !! "
exit

自定义ParuAxel.sh脚本

/usr/bin/ParuAxel.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#! /bin/sh
#
# Program: ParuAxel.sh
# Version: V1.2
# Author : Zhen-Hua Feng
# Email : fengzhenhua@outlook.com
# Date : 2023-12-09 15:51
# Copyright (C) 2023 feng <feng@arch>
#
# Distributed under terms of the MIT license.
# 该脚本用于处理yay安装软件时,由github下载缓慢甚至无法下载的问题
# 检测域名是不是github,如果是,则替换为镜像网站,依旧使用curl下载
# 如果不是github则采用axel代替curl进行15线程下载
#
domin=`echo $2 | cut -f3 -d'/'`;
others=`echo $2 | cut -f4- -d'/'`;
GCF=/home/$USER/.gitconfig
case "$domin" in
"github.com")
if [ -e $GCF ]; then
url="$(sed -n -e "/^\[url/p" $GCF |awk -F'"' '{print $2}')"$others
else
url="https://hub.yzuu.cf/"$others
fi
echo "Download from mirror $url";
# 如果镜像不支持多线程下载,则取消下面注释,使用curl下载
# /usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o $1 $url;
# 默认使用axel 以15线程下载,2023-11-27 测试 hub.yzuu.cf 支持多线程
/usr/bin/axel -n 15 -a -o $1 $url;
;;
*)
url=$2;
/usr/bin/axel -n 15 -a -o $1 $url;
;;
esac

上面的脚本通过本人的编写测试成功,以下是初始研究的内容,可以忽略。

安装软件

这里需要安装一个多线程下载工具

安装axel
1
sudo pacman -S axel

修改 makepkg.conf

此处需要修改文件/etc/makepkg.conf , 将原来的下载工具改成多线程工具axel

修改/etc/makepkg.conf
1
2
3
4
5
6
DLAGENTS=('file::/usr/bin/curl -qgC - -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/ParuAxel %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')

参考文章

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

  2. 尝试解决aur下载和更新的问题