
如果你使用 Linux 遇到了网络问题,可以配置代理。代理链接自己找。本文只推荐 GUI 程序,不涉及纯命令环境下的代理配置。
需要代理的主要网站是 GitHub。如果仅使用官方仓库、国内源和AUR上的国内软件,通常不需要配置代理。
推荐使用 flclash。
测试代理是否生效
配置完代理后一定要测试是否生效。
curl -I www.google.com
返回由 HTTP ... OK 开头的一大串内容就是成功了。
临时图形环境
如果你准备使用我的一键配置脚本,那么你可能暂时还没有图形化环境用于运行图形界面。可以安装一个临时的图形化环境运行接下来介绍的软件,我推荐使用 labwc,它相当轻量。如果你已经有桌面了(任意桌面都可以),不需要这一步。
安装 labwc
sudo pacman -S labwc kittylabwc 是一个堆叠式窗口管理器,Kitty 是我使用的终端。会问你装哪个字体,回车默认就行。
启动 labwc
labwclabwc 打开之后是纯黑的,正常点击桌面选择
terminal或者按下Super(Win 键)+ 回车键就能打开终端,选exit可以退出 labwc。
卸载 labwc
要做的事情结束之后想删除这个临时图形环境可以使用这条命令:
sudo pacman -Rns labwc
flclash
flclash 支持随壁纸更换颜色,强推!
安装
sudo pacman -S flclash启动
flclash在主页开启 TUN(虚拟网卡)
导入链接
主页右下角有个三角,点击可以启动代理
测试是否生效
daed
安装
yay -S daed启动
sudo systemctl start daedWebUI
daed 的面板以 WebUI 方式提供。
打开浏览器,访问
localhost:2023即可进入 WebUI。导入订阅之后把订阅从右侧拖到左侧的群组。用其他设备访问 WebUI
运行
ip a命令获取本机 IP 地址。然后打开手机浏览器,在处于同一局域网的情况下访问以下地址:你的 IP 地址:2023假设我的 IP 地址是 192.168.0.155,那就用手机浏览器访问
192.168.0.155:2023。开启 TUN 虚拟网卡
测试是否生效。
暂时不推荐使用的代理软件
[展开/收起]
clash-verge-rev
安装
pacman -S clash-verge-revclash-verge 是基于 mihomo 内核和 Tauri 的面板软件。
启动
clash-verge启动 TUN 模式(虚拟网卡模式)
如果出现 TUN 无法安装的情况,可以切换到 root 身份后打开 clash-verge。
su - clash-verge还可以
Ctrl+Alt+F2~F8切换到另一个 TTY 用 root 身份登录后启动 labwc,这样就是 root 身份开启的图形化环境了。如果启用 TUN 之后没有生效,可以尝试进入设置页面点击 Clash 内核边上的齿轮,切换成 mihomo alpha 内核,重启内核。
记得导入链接和启动代理。
测试是否生效。
GitHub代理
如果有梯子就不用配这个了
从 AUR 安装的软件如果要拉取 GitHub 上的资源,可能会出现网络问题。除了搭梯子,还可以使用 GitHub 加速站进行代理。加速原理并不复杂,用户请求加速站,加速站代替用户去访问 GitHub 拉取资源,然后返回给用户。
配置之前可以先简单了解一下拉取 GitHub 内容发生在哪里。
AUR 上的每一个包都是一个 git 仓库,存放着安装这个软件包的脚本,叫作 PKGBUILD。
因为是一个 git 仓库,所以其实可以直接
git clone拉取仓库,不需要 AUR 助手。仓库地址通常是这样的结构:https://aur.archlinux.org/<包名>.git。
当我们使用 yay 或者 paru 这样的 AUR 助手安装 AUR 上的软件时,有几个主要的网络难关:
拉取 AUR 仓库
AUR没有被墙,并且仓库体积极小,一般不会有网络问题。
获取资源
拉取下来的仓库里会有
PKGBUILD安装脚本,使用makepkg -si命令执行安装。阅读
PKGBUILD的内容,可以找到source=()字段。这部分定义了需要获取的资源,分为普通 URL 源和 Git VCS 源两种情况:普通 URL 源
source=("https://github.com/.../release.tar.gz")makepkg会使用/etc/makepkg.conf配置文件中DLAGENTS=()部分写的下载命令获取资源,我们可以简单看一下这个配置文件:用 head 命令打印文件顶部的 25 行。
head -n 25 /etc/makepkg.conf会看到如下配置
DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u' 'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' 'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' 'https::/usr/bin/curl -qgb "" -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')这种情况通过修改
https的下载命令,让它走 GitHub 加速站,就能解决安装 AUR 包时下载 GitHub 资源困难的问题。Git VCS 源
GitHub 仓库源码;AUR 包名通常会有
-git后缀;source开头的部分会有git+source=("git+https://github.com/owner/repo.git")和普通 URL 源不同,这种情况下不使用
makepkg的DLAGENTS,而是使用git clone下载仓库,所以修改DLAGENTS里的命令对这种情况无效。我们可以通过git config命令,用加速站的链接替换掉https://github.com,这样就能做到源码包的 GitHub 加速。
其他资源
PKGBUILD还可能拉取 GitHub 之外的资源,这种情况无法走 GitHub 加速。
总结一下
source=("https://github.com/...") 走 DLAGENTS curl,通过自治包装脚本替换下载 https 资源的命令;
source=("git+https://github.com/...git") 走 git clone git fetch,通过git config命令替换 GitHub 地址。
了解了原理,接下来进行实操。
加速发行包
在
/usr/local/bin/中新建curl的 GitHub 加速包装脚本考虑到有些人的
~/.local/bin可能不在PATH里(这是寻找可执行文件的路径),所以使用/usr/local/binsudo vim /usr/local/bin/curl-github-wrapper#!/usr/bin/env bash # 上面这行是 shebang,代表用 bash 运行这个脚本 # 定义两个变量 # makepkg 以“curl-github-wrapper %o %u”的形式调用脚本。 # output 变量获取第一个传入的参数 %o,代表下载内容保存路径 # url 变量获取第二个传入的参数 %u ,代表 PKGBUILD 中的资源链接 output=$1 url=$2 # 通过链接开头的域名判断是否为 GitHub 链接;星号代表任意字符 if [[ "$url" == https://github.com/* ]]; then # 是 GitHub 链接,声明一个 target 变量,存入修改后的地址,应用 GitHub 加速。 target="https://gh-proxy.com/$url" # 打印代理加速信息 printf '==> GitHub proxy: %s\n' "$target" >&2 else # 如果不是 GitHub 链接,不做处理 target=$url fi # 运行 curl # 这些 curl 的选项解释起来很麻烦,想知道可以问 AI,或者看帮助信息。 # 总之我的想法是这里和 makepkg.conf 里原本的 curl 命令保持一致 exec /usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o "$output" "$target"保存脚本之后给予执行权限
sudo chmod +x /usr/local/bin/curl-github-wrapper正式修改
makepkg的下载命令,因为makepkg是不以 root 运行的,所以我们可以在用户空间编辑配置文件#创建目录 mkdir -p ~/.config/pacman #编辑配置 vim ~/.config/pacman/makepkg.confDLAGENTS=( 'file::/usr/bin/curl -qgC - -o %o %u' 'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' 'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' 'https::/usr/local/bin/curl-github-wrapper %o %u' 'rsync::/usr/bin/rsync --no-motd -z %u %o' 'scp::/usr/bin/scp -C %u %o' )'https::/usr/local/bin/curl-github-wrapper %o %u'这段将原本的 curl 换成了我们刚刚创建的包装脚本,这样就加速成功了。加速源码包
这条命令把
https://github.com/替换为https://gh-proxy.com/https://github.com/git config --global \ url."https://gh-proxy.com/https://github.com/".insteadOf \ "https://github.com/"它影响当前用户所有 https://github.com/ Git 操作;不要用于私有仓库或带 Token 的 URL;git@github.com: 和 git+ssh:// 不受影响。
验证
安装一个普通 URL 源的包,例如
ani-cliyay -S ani-cli应该会看到类似下面这行的输出
==> GitHub proxy: https://gh-proxy.com/https://github.com/...再试试git包,例如
cmatrix-git,用GIT_TRACE=1输出日志GIT_TRACE=1 yay -S cmatrix-git应该会看到类似下面这行的内容
git remote-https origin https://gh-proxy.com/https://github.com/aristocratos/cmatrix