![](../pictures/有时候需要绕一些远路.jpg) 如果你使用 Linux 遇到了网络问题,可以配置代理。代理链接自己找。本文只推荐 GUI 程序,不涉及纯命令环境下的代理配置。 > 需要代理的主要网站是 GitHub。如果仅使用官方仓库、国内源和AUR上的国内软件,通常不需要配置代理。 - [flclash(英文字母小写 L)](代理.md#flclash) - [daed](代理.md#daed) - [GitHub代理](代理.md#github代理) 推荐使用 `flclash`。 ## 测试代理是否生效 配置完代理后一定要测试是否生效。 ```bash curl -I www.google.com ``` 返回由 `HTTP ... OK` 开头的一大串内容就是成功了。 ## 临时图形环境 如果你准备使用我的一键配置脚本,那么你可能暂时还没有图形化环境用于运行图形界面。可以安装一个临时的图形化环境运行接下来介绍的软件,我推荐使用 labwc,它相当轻量。如果你已经有桌面了(任意桌面都可以),不需要这一步。 1. 安装 labwc ```bash sudo pacman -S labwc kitty ``` labwc 是一个堆叠式窗口管理器,Kitty 是我使用的终端。会问你装哪个字体,回车默认就行。 2. 启动 labwc ```bash labwc ``` labwc 打开之后是纯黑的,正常点击桌面选择 `terminal` 或者按下 `Super(Win 键)+ 回车键` 就能打开终端,选 `exit` 可以退出 labwc。 - 卸载 labwc 要做的事情结束之后想删除这个临时图形环境可以使用这条命令: ```bash sudo pacman -Rns labwc ``` ## flclash flclash 支持随壁纸更换颜色,强推! 1. [添加 archlinuxcn](安装桌面环境前的准备.md#archlinuxcn源) 2. 安装 ```bash sudo pacman -S flclash ``` 3. 启动 ```bash flclash ``` 4. 在主页开启 TUN(虚拟网卡) 5. 导入链接 6. 主页右下角有个三角,点击可以启动代理 7. 测试是否生效 ## daed 1. [添加 archlinuxcn](安装桌面环境前的准备.md#archlinuxcn源) 2. 安装 ```bash yay -S daed ``` 3. 启动 ```bash sudo systemctl start daed ``` 4. WebUI daed 的面板以 WebUI 方式提供。 打开浏览器,访问 `localhost:2023` 即可进入 WebUI。导入订阅之后把订阅从右侧拖到左侧的群组。 5. 用其他设备访问 WebUI 运行 `ip a` 命令获取本机 IP 地址。然后打开手机浏览器,在处于同一局域网的情况下访问以下地址: ```text 你的 IP 地址:2023 ``` 假设我的 IP 地址是 192.168.0.155,那就用手机浏览器访问 `192.168.0.155:2023`。 6. 开启 TUN 虚拟网卡 7. 测试是否生效。 ## 暂时不推荐使用的代理软件
[展开/收起] ### clash-verge-rev 0. [需要先添加 archlinuxcn](安装桌面环境前的准备.md#archlinuxcn源) 1. 安装 ```bash pacman -S clash-verge-rev ``` clash-verge 是基于 mihomo 内核和 Tauri 的面板软件。 2. 启动 ```bash clash-verge ``` 3. 启动 TUN 模式(虚拟网卡模式) 如果出现 TUN 无法安装的情况,可以切换到 root 身份后打开 clash-verge。 ```bash su - clash-verge ``` 还可以 `Ctrl+Alt+F2~F8` 切换到另一个 TTY 用 root 身份登录后启动 labwc,这样就是 root 身份开启的图形化环境了。 如果启用 TUN 之后没有生效,可以尝试进入设置页面点击 Clash 内核边上的齿轮,切换成 mihomo alpha 内核,重启内核。 4. 记得导入链接和启动代理。 5. 测试是否生效。
## 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 源不同,这种情况下不使用 `makepkg` 的 `DLAGENTS`,而是使用 `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 ```