GitHub
logo SHORiNのARCH
代理

代理

如果你使用 Linux 遇到了网络问题,可以配置代理。代理链接自己找。本文只推荐 GUI 程序,不涉及纯命令环境下的代理配置。

需要代理的主要网站是 GitHub。如果仅使用官方仓库、国内源和AUR上的国内软件,通常不需要配置代理。

推荐使用 flclash

测试代理是否生效

配置完代理后一定要测试是否生效。

curl -I www.google.com

返回由 HTTP ... OK 开头的一大串内容就是成功了。

临时图形环境

如果你准备使用我的一键配置脚本,那么你可能暂时还没有图形化环境用于运行图形界面。可以安装一个临时的图形化环境运行接下来介绍的软件,我推荐使用 labwc,它相当轻量。如果你已经有桌面了(任意桌面都可以),不需要这一步。

  1. 安装 labwc

    sudo pacman -S labwc kitty
    

    labwc 是一个堆叠式窗口管理器,Kitty 是我使用的终端。会问你装哪个字体,回车默认就行。

  2. 启动 labwc

    labwc
    

    labwc 打开之后是纯黑的,正常点击桌面选择 terminal 或者按下 Super(Win 键)+ 回车键 就能打开终端,选 exit 可以退出 labwc。

  • 卸载 labwc

    要做的事情结束之后想删除这个临时图形环境可以使用这条命令:

    sudo pacman -Rns labwc
    

flclash

flclash 支持随壁纸更换颜色,强推!

  1. 添加 archlinuxcn

  2. 安装

    sudo pacman -S flclash
    
  3. 启动

    flclash
    
  4. 在主页开启 TUN(虚拟网卡)

  5. 导入链接

  6. 主页右下角有个三角,点击可以启动代理

  7. 测试是否生效

daed

  1. 添加 archlinuxcn

  2. 安装

    yay -S daed
    
  3. 启动

    sudo systemctl start daed
    
  4. WebUI

    daed 的面板以 WebUI 方式提供。

    打开浏览器,访问 localhost:2023 即可进入 WebUI。导入订阅之后把订阅从右侧拖到左侧的群组。

  5. 用其他设备访问 WebUI

    运行 ip a 命令获取本机 IP 地址。然后打开手机浏览器,在处于同一局域网的情况下访问以下地址:

    你的 IP 地址:2023
    

    假设我的 IP 地址是 192.168.0.155,那就用手机浏览器访问 192.168.0.155:2023

  6. 开启 TUN 虚拟网卡

  7. 测试是否生效。

暂时不推荐使用的代理软件

[展开/收起]

clash-verge-rev

  1. 需要先添加 archlinuxcn

  2. 安装

    pacman -S clash-verge-rev
    

    clash-verge 是基于 mihomo 内核和 Tauri 的面板软件。

  3. 启动

    clash-verge
    
  4. 启动 TUN 模式(虚拟网卡模式)

    如果出现 TUN 无法安装的情况,可以切换到 root 身份后打开 clash-verge。

    su -
    
    clash-verge
    

    还可以 Ctrl+Alt+F2~F8 切换到另一个 TTY 用 root 身份登录后启动 labwc,这样就是 root 身份开启的图形化环境了。

    如果启用 TUN 之后没有生效,可以尝试进入设置页面点击 Clash 内核边上的齿轮,切换成 mihomo alpha 内核,重启内核。

  5. 记得导入链接和启动代理。

  6. 测试是否生效。

GitHub代理

如果有梯子就不用配这个了

从 AUR 安装的软件如果要拉取 GitHub 上的资源,可能会出现网络问题。除了搭梯子,还可以使用 GitHub 加速站进行代理。加速原理并不复杂,用户请求加速站,加速站代替用户去访问 GitHub 拉取资源,然后返回给用户。

配置之前可以先简单了解一下拉取 GitHub 内容发生在哪里。

AUR 上的每一个包都是一个 git 仓库,存放着安装这个软件包的脚本,叫作 PKGBUILD

因为是一个 git 仓库,所以其实可以直接 git clone 拉取仓库,不需要 AUR 助手。仓库地址通常是这样的结构:https://aur.archlinux.org/<包名>.git

当我们使用 yay 或者 paru 这样的 AUR 助手安装 AUR 上的软件时,有几个主要的网络难关:

  1. 拉取 AUR 仓库

    AUR没有被墙,并且仓库体积极小,一般不会有网络问题。

  2. 获取资源

    拉取下来的仓库里会有 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 源不同,这种情况下不使用 makepkgDLAGENTS,而是使用 git clone 下载仓库,所以修改 DLAGENTS 里的命令对这种情况无效。我们可以通过 git config 命令,用加速站的链接替换掉https://github.com,这样就能做到源码包的 GitHub 加速。

  3. 其他资源

    PKGBUILD 还可能拉取 GitHub 之外的资源,这种情况无法走 GitHub 加速。

总结一下

source=("https://github.com/...")DLAGENTS curl,通过自治包装脚本替换下载 https 资源的命令;

source=("git+https://github.com/...git")git clone git fetch,通过git config命令替换 GitHub 地址。

了解了原理,接下来进行实操。

  1. 加速发行包

    /usr/local/bin/ 中新建 curl 的 GitHub 加速包装脚本

    考虑到有些人的 ~/.local/bin 可能不在 PATH里(这是寻找可执行文件的路径),所以使用 /usr/local/bin

    sudo 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.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/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 换成了我们刚刚创建的包装脚本,这样就加速成功了。

  2. 加速源码包

    这条命令把 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:// 不受影响。

  3. 验证

    安装一个普通 URL 源的包,例如 ani-cli

    yay -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