背景

在 Arch Linux 系统中,Google Chrome 并不在官方仓库内。常见安装方式通常有三种:

  1. 使用 AUR 的 google-chrome
  2. 使用第三方二进制仓库提供的 google-chrome
  3. 手动下载或通过旧的本地包安装

如果系统长期使用第三方源,Google Chrome 可能会出现一个问题:本地已经安装了 Chrome,但版本长期停留在旧版本,无法随系统正常更新

这类问题表面上看像是 Chrome 本身没有更新,实际往往是包来源发生了变化,或者第三方仓库中的包已经停止同步最新版。

现象

系统中查询当前 Chrome 版本:

pacman -Q google-chrome
google-chrome-stable --version

输出类似:

google-chrome 142.0.7444.59-1
Google Chrome 142.0.7444.59

而当前 AUR 中的 google-chrome 已经是更高版本,例如:

google-chrome 148.x.xxxx.xxx-1

说明本地 Chrome 已经落后多个大版本。

继续检查外来包:

pacman -Qm google-chrome

如果有输出,说明当前这个包已经不属于系统同步数据库中的官方仓库或当前启用的第三方仓库,属于“外来包”。

问题来源

Arch 上如果曾经配置过类似这样的第三方源:

[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

或者其他个人维护源,例如:

[alerque]
Server = ...

那么 google-chrome 可能并不是从 AUR 构建安装的,而是来自某个第三方二进制仓库。

第三方二进制仓库的优势是省去本地编译或打包过程,使用体验接近官方仓库。但问题是:如果该仓库不再及时维护某个包,本地版本就会停滞

实际升级时可能出现类似情况:

yay -S google-chrome

输出却显示:

Sync Explicit (1): google-chrome-142.0.7444.59-1

Package (1) Old Version New Version
alerque/google-chrome 142.0.7444.59-1 142.0.7444.59-1

这说明 yay 并没有去 AUR 获取新版,而是优先使用了同步仓库里的旧版 google-chrome

关键点在于:

alerque/google-chrome

这里的 alerque 是一个第三方源。只要同步仓库中存在同名包,yay 可能会优先处理同步仓库版本,而不是 AUR 版本。

判断当前包来源

可以使用以下命令检查:

pacman -Q google-chrome
pacman -Qm google-chrome
pacman -Ss '^google-chrome$'

也可以检查某个第三方源中是否存在该包:

pacman -Sl archlinuxcn | grep -E ' google-chrome($| )'
pacman -Sl alerque | grep -E ' google-chrome($| )'

查看当前所有外来包:

pacman -Qm

如果 google-chrome 出现在 pacman -Qm 里,说明它当前不是来自官方仓库或当前同步仓库。

如果执行:

yay -S google-chrome

仍然显示来自某个第三方仓库,而不是 AUR,则说明同名包被第三方源“截住”了。

是否需要先卸载 Chrome

通常不需要。

AUR 中的包名仍然是:

google-chrome

如果只是从旧第三方源切换到 AUR,理论上可以直接覆盖升级。

但前提是:安装过程确实使用的是 AUR,而不是又从第三方源重新安装旧版。

如果 yay 一直优先使用第三方源,可以先禁用第三方源,再安装 AUR 版。

禁用不必要的第三方源

编辑 pacman 配置:

sudo vim /etc/pacman.conf

找到类似内容:

[alerque]
Server = ...

将其注释掉:

#[alerque]
#Server = ...

然后刷新数据库:

sudo pacman -Syy

重新检查:

pacman -Qm google-chrome

此时 Chrome 通常会变成外来包。接下来就可以从 AUR 安装新版。

从 AUR 安装 Google Chrome

可以使用 AUR helper:

yay -S google-chrome

如果仍然有仓库优先级问题,可以手动从 AUR 构建:

cd ~/workspace
git clone https://aur.archlinux.org/google-chrome.git google-chrome-aur
cd google-chrome-aur
makepkg -si

安装完成后检查:

google-chrome-stable --version
pacman -Q google-chrome

如果版本已经更新到当前新版,例如:

Google Chrome 148.x.xxxx.xxx

说明迁移成功。

是否会丢失书签、扩展和登录状态

一般不会。

Chrome 的用户配置通常在:

~/.config/google-chrome/

缓存通常在:

~/.cache/google-chrome/

使用 pacmanmakepkg -si 更新软件包,不会删除这些用户目录。

如果想稳妥一些,可以先备份:

cp -a ~/.config/google-chrome ~/.config/google-chrome.bak.$(date +%Y%m%d)

如果安装过程中确实出现冲突,需要先卸载旧包,也只建议使用:

sudo pacman -R google-chrome

不要优先使用:

sudo pacman -Rns google-chrome

因为当前目的只是切换包来源,不是彻底清除 Chrome。

AUR 升级时的提示

执行:

yay -Sua

可能会看到:

aur/google-chrome 142.0.7444.59-1 -> 148.0.7778.167-1

这说明 Chrome 已经成功进入 AUR 更新路径。

如果提示:

==> Packages to exclude:

表示询问是否排除某些包。如果没有特殊理由,直接回车即可。

不要输入包编号,除非明确知道某个包暂时不能升级。

外来包不是问题本身

pacman -Qm 中出现很多包并不代表系统混乱。它只表示这些包不属于当前 pacman 同步仓库。

常见外来包包括:

google-chrome
typora
xmind
tabby-bin
wechat-universal-bwrap
rocketchat-client-bin
epsonscan2

其中很多本来就是 AUR 包或第三方软件。

真正需要关注的是:

  1. 是否还在使用已经停更的第三方源
  2. 是否有旧版本包被第三方源截住
  3. 是否有 debug 包、旧依赖、无用硬件固件残留
  4. 是否以后能通过统一方式更新

Flatpak 与系统包更新分开处理

Arch 系统中常见软件来源包括三套:

pacman 官方仓库 / 第三方同步仓库
AUR
Flatpak

它们的更新机制不同。

比较清晰的维护顺序是:

sudo pacman -Syu
yay -Sua
flatpak update
flatpak uninstall --unused

其中:

flatpak uninstall --unused

用于清理不再被应用依赖的旧 Flatpak runtime。

Flatpak 更新时看到大量:

org.freedesktop.Platform
org.gnome.Platform
org.kde.Platform
org.freedesktop.Sdk

属于正常现象。这些是 Flatpak 应用依赖的运行环境,不一定是单独的桌面应用。

总结

这次问题的核心不是 Chrome 安装失败,而是 Google Chrome 的包来源被旧第三方仓库固定在了旧版本

处理逻辑可以概括为:

发现 Chrome 版本落后

检查 pacman / AUR / 第三方源来源

发现第三方源中存在旧版 google-chrome

禁用不必要的第三方源

让 google-chrome 变成外来包

从 AUR 安装新版 google-chrome

以后通过 yay 维护 AUR 更新

对于 Arch Linux 来说,第三方源不是不能用,但需要清楚它们的维护状态。像 Google Chrome 这种更新频繁、版本安全性重要的软件,更适合直接走 AUR 官方 PKGBUILD 路径,避免被旧的二进制仓库长期卡住。

Leave a Reply

Your email address will not be published. Required fields are marked *