引言:为什么在 Arch Linux ARM 上使用 yay?

Arch Linux ARM(简称 Arch ARM)是 Arch Linux 的 ARM 架构移植版本,专为 Raspberry Pi、Odroid、Pine64 等 ARM 设备设计。它继承了 Arch Linux 的滚动更新和 KISS(Keep It Simple, Stupid)哲学,但默认不包含 AUR(Arch User Repository)支持。AUR 是 Arch 社区维护的用户贡献软件仓库,包含数万个非官方软件包,如 yay、paru 等 AUR 助手工具,以及各种流行应用如 Discord、Spotify 等。

yay 是一个用 Go 语言编写的 AUR 助手,类似于 pacaur 或 aurman,但更轻量且高效。它允许用户从 AUR 安装、更新和管理软件包,而无需手动下载 PKGBUILD 文件。在 Arch ARM 上,由于 ARM 架构的特殊性(如依赖链和编译优化),yay 的安装和使用需要特别注意。本指南将手把手教你安装 yay,并解决常见问题,帮助你充分利用 Arch ARM 的潜力。

注意:本指南假设你已安装基本的 Arch ARM 系统(如通过 pacman -Syu 更新)。如果你是新手,先确保系统已联网并运行 sudo pacman -Syu 更新基础包。所有操作需以 root 或 sudo 权限执行。

1. 准备工作:确保系统环境正确

在安装 yay 前,必须准备好构建环境,因为 AUR 软件包通常需要从源代码编译。这在 ARM 设备上尤为重要,因为 ARM CPU(如 Cortex-A 系列)编译速度较慢,且依赖特定工具链。

1.1 更新系统并安装基础开发工具

首先,更新系统以避免依赖冲突:

sudo pacman -Syu 

这会同步包数据库并升级所有已安装的包。重启系统如果内核更新。

接下来,安装构建 AUR 包所需的工具。yay 本身也需要这些工具来编译其依赖:

sudo pacman -S --needed base-devel git 
  • base-devel:包含 GCC、Make、Autoconf 等编译工具链。在 ARM 上,它确保你能编译针对 ARM 架构优化的二进制文件。
  • git:用于从 AUR 克隆仓库。

验证安装:运行 gcc --versionmake --version 检查工具是否可用。输出应显示版本信息(如 GCC 13.x)。

1.2 配置 sudo(如果未设置)

Arch ARM 默认可能未启用 sudo。如果你不是 root,运行:

pacman -S sudo visudo 

在编辑器中取消注释 %wheel ALL=(ALL) ALL 行,然后将你的用户添加到 wheel 组:

usermod -aG wheel yourusername 

注销并重新登录。

1.3 设置 AUR 助手的构建目录

创建一个专用目录用于 AUR 构建,避免污染主目录:

mkdir -p ~/AUR cd ~/AUR 

为什么重要?在 ARM 设备上,存储空间有限(如 SD 卡),专用目录便于管理临时文件和清理。

1.4 常见准备问题解决

  • 问题pacman -Syu 失败,显示“无法锁定数据库”。 解决:删除锁文件:sudo rm /var/lib/pacman/db.lck,然后重试。
  • 问题:网络问题导致更新慢(ARM 设备常见)。 解决:使用镜像源编辑 /etc/pacman.d/mirrorlist,优先 ARM 专用镜像如 Server = http://mirror.archlinuxarm.org/$arch/$repo

准备好后,你的系统现在支持 AUR 构建。

2. 手把手安装 yay

yay 不在官方仓库中,必须从 AUR 安装。我们将使用手动方式(不依赖其他 AUR 助手),这是最可靠的方法。

2.1 从 AUR 克隆并构建 yay

切换到构建目录:

cd ~/AUR git clone https://aur.archlinux.org/yay.git cd yay 

这会下载 yay 的 PKGBUILD 文件(构建脚本)和相关文件。

现在,构建并安装:

makepkg -si 
  • -s:自动安装依赖(如 Go 语言工具链)。
  • -i:安装生成的包。

详细解释

  • makepkg 是 Arch 的构建工具,它读取 PKGBUILD 文件,下载源代码,编译(针对 ARM 架构),并生成 .pkg.tar.zst 包。
  • 在 ARM 上,首次构建可能需要几分钟下载 Go(约 100MB),取决于你的设备(如 Raspberry Pi 4)。
  • 如果遇到 Go 依赖问题,手动安装:sudo pacman -S go

安装输出示例

==> 正在安装 yay 包... ==> 正在清理... 

完成后,运行 yay --version 验证。输出应为类似 yay v12.1.0

2.2 配置 yay(可选但推荐)

yay 默认使用 pacman 风格的命令。编辑配置文件:

mkdir -p ~/.config/yay nano ~/.config/yay/config.json 

添加基本配置:

{ "aururl": "https://aur.archlinux.org", "buildDir": "/home/yourusername/AUR", "editor": "nano", "sudo": "sudo", "completionInterval": 20, "sortMode": "votes", "timeUpdate": false, "devel": false, "cleanAfter": true, "gitClone": true, "removemake": true, "answerdiff": "N", "answerclean": "N", "answeredit": "N", "answerupgrade": "N", "bin": "yay", "noconfirm": false, "gpgflags": "", "pacman": "pacman", "pacmanConf": "/etc/pacman.conf", "requestSplitN": 150, "searchMode": "startfuzzy", "sortBy": "votes", "topdown": true, "version": "12.1.0" } 
  • buildDir:指定 ARM 设备上的构建路径,避免 SD 卡空间不足。
  • cleanAfter:构建后自动清理临时文件,节省空间。

保存后,yay 现在可用。

2.3 测试 yay

运行:

yay -Ps 

这显示系统统计,包括 AUR 包数量。如果成功,安装完成!

常见安装问题解决

  • 问题git clone 失败,显示“无法访问 AUR”。 解决:检查网络:ping aur.archlinux.org。如果防火墙阻挡,运行 sudo ufw allow 80,443(如果使用 ufw)。在 ARM 上,Wi-Fi 不稳定时,使用有线连接。
  • 问题makepkg 失败,显示“Go 未安装”或“依赖缺失”。 解决:手动安装依赖:sudo pacman -S go base-devel。如果 ARM 架构特定错误(如“unsupported architecture”),确保系统是最新的 sudo pacman -Syu
  • 问题:权限错误,如“cannot create directory”。 解决:确保目录所有者正确:sudo chown -R $USER:$USER ~/AUR
  • 问题:ARM 设备内存不足导致构建崩溃(常见于 Raspberry Pi 3)。 解决:增加交换空间:sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile。然后在 /etc/fstab 添加 /swapfile none swap defaults 0 0

3. 使用 yay 管理 AUR 软件包

yay 的命令语法与 pacman 相似,便于上手。以下是核心用法和示例。

3.1 搜索和安装软件包

  • 搜索yay -Ss <关键词> 示例:搜索 AUR 中的浏览器。

    yay -Ss firefox 

    输出列出匹配包,如 aur/firefox-arm 115.0-1(ARM 优化版)。

  • 安装yay -S <包名> 示例:安装 yay 自身(已安装时更新)或另一个 AUR 包如 spotify

    yay -S spotify 

    详细过程

    1. yay 搜索 AUR 找到 spotify PKGBUILD。
    2. 下载源代码(Spotify 是闭源,但 AUR 有 wrapper)。
    3. 提示确认依赖(如 libspotify),输入 Y
    4. 编译(在 ARM 上可能需 5-10 分钟)。
    5. 安装到系统。

ARM 特定提示:某些包如 spotify 可能需要额外 ARM 补丁。yay 会自动处理,但如果失败,检查 AUR 页面的评论。

  • 升级所有包yay -Syu 这会同时升级官方包和 AUR 包。添加 --devel 以包括开发包。 示例:
     yay -Syu --devel 

3.2 移除和查询包

  • 移除yay -Rns <包名> 示例:移除 Spotify。

    yay -Rns spotify 

    -n 删除配置文件,-s 删除未用依赖。

  • 查询已安装yay -Qs <关键词> 示例:查找所有 AUR 包。

    yay -Qs | grep aur 

3.3 高级用法:处理依赖和冲突

在 ARM 上,依赖链更复杂。yay 支持 --needed 跳过已安装包:

yay -S --needed yay 

如果遇到冲突(如两个包提供相同文件),yay 会提示。输入 Y 继续或 N 取消。

完整示例:安装一个复杂 AUR 包 假设安装 obs-studio-git(OBS Studio 的 Git 版,常用于 ARM 流媒体)。

cd ~/AUR git clone https://aur.archlinux.org/obs-studio-git.git cd obs-studio-git makepkg -si 

或直接用 yay:

yay -S obs-studio-git 

这会拉取依赖如 ffmpegqt5,编译 OBS(ARM 上可能需 20-30 分钟)。如果失败,检查 AUR 页面的“Votes”和“Comments”获取 ARM 补丁。

常见使用问题解决

  • 问题:安装时显示“error: target not found”。 解决:包名拼写错误,或该包不支持 ARM。检查 AUR 页面(https://aur.archlinux.org/packages/),搜索“ARM”相关补丁。使用 yay -Ss 精确搜索。
  • 问题:编译失败,显示“undefined reference”或 ARM 架构错误。 解决:确保 base-devel 完整。添加 CFLAGS 优化 ARM:编辑 /etc/makepkg.conf,设置 CFLAGS="-march=armv8-a -O2"(针对 64-bit ARM)。然后重试。
  • 问题:yay 卡在“Cloning…”或下载慢。 解决:设置 Git 超时:git config --global http.lowSpeedLimit 0 && git config --global http.lowSpeedTime 999999。在 ARM 上,使用代理如 export http_proxy=http://proxy:port
  • 问题:空间不足,构建中断。 解决:清理:yay -Yc(清理 AUR 缓存)。或移动构建目录到外部存储:export BUILDDIR=/mnt/usb/AUR
  • 问题:yay 更新自身失败。 解决:手动更新:yay -S yay。如果 Go 版本过旧,升级 Go:sudo pacman -S go
  • 问题:权限提升(sudo)循环提示。 解决:在 config.json 中设置 "sudo": "sudo",并确保 /etc/sudoers 正确。避免在 root 下运行 yay。

4. 维护和最佳实践

4.1 定期维护

  • 清理缓存:yay -Ycsudo pacman -Scc(在 ARM 上每月运行以节省空间)。
  • 监控日志:journalctl -xe 检查构建错误。
  • 备份配置:复制 ~/.config/yay~/AUR 到外部存储。

4.2 ARM 优化提示

  • 使用 yay --aur 只处理 AUR,避免官方包更新冲突。
  • 对于低功耗设备,使用 yay -S --noconfirm 自动化安装,但小心依赖。
  • 如果 yay 崩溃,检查 Go 内存:增加交换或使用 yay --skipinteg 跳过完整性检查(不推荐)。

4.3 替换 yay 或卸载

如果不喜欢 yay,安装 paru:yay -S paru。卸载 yay:sudo pacman -R yay

结论

通过本指南,你现在能在 Arch Linux ARM 上轻松安装和使用 yay,访问海量 AUR 软件。记住,AUR 包非官方,安全第一:只安装可信来源。遇到问题时,查阅 Arch Wiki(wiki.archlinux.org)或 AUR 页面评论。在 ARM 设备上,耐心是关键——编译虽慢,但结果值得。享受你的 Arch ARM 之旅!如果特定包有问题,提供错误日志可进一步诊断。