不喜欢 Snap 软件包?同等情况下,如何优先使用deb?
Snap 是由 Ubuntu 背后的公司 Canonical 开发的一种通用 Linux 软件包格式。与竞争对手 Flatpak 类似,它在隔离的沙盒环境中运行应用程序,从而提高了安全性,并允许在旧版 Linux 发行版上运行最新软件,而无需担心依赖关系问题。
Snap 本身是开源软件,但官方 Snap Store(即 App Center 或 Ubuntu Software)的后端是专有的。此外,自 Ubuntu 22.04 版本起,系统默认预装了一些 Snap 格式的应用程序。
移除 Snap 后的影响
在 Ubuntu 中移除所有 Snap 软件包不会带来安全隐患,但你会失去一些核心应用程序,不过也有一些替代方案。
Ubuntu26.04移除 Snap 后,你将失去以下内容:
- 安全中心(Security Center)——用于管理 Ubuntu Pro 和磁盘加密。
- Firefox 网络浏览器。
- 固件更新程序(firmware-updater)——用于检查和安装硬件固件更新的工具。
- 用于安装/卸载应用程序的应用商店 App Center。
其中一些有替代方案:你可以使用命令行工具来管理 Ubuntu Pro,通过 Deb 或 Flatpak 包安装 Firefox,并使用 GNOME Software 来安装/卸载应用程序。
步骤 1:移除 Snap 应用程序包
要移除 Snap 应用程序包,请按键盘上的 Ctrl+Alt+T 打开终端,并依次运行以下命令:
首先,运行命令列出 Snap 软件包:
snap list
然后,根据包名逐个移除应用程序。例如,使用以下命令移除 Firefox:
snap remove --purge firefox
或者,通过在命令末尾添加更多包名,一次性移除多个应用程序。例如:
snap remove --purge firefox firmware-updater desktop-security-center
提示:在移除所有其他包之前,系统不允许移除“snapd”。为了简化操作,你可以运行下面这条命令,移除除 snapd 之外的所有包。 sudo snap remove --purge $(snap list | awk 'NR>1 && $1!="snapd" {print $1}')
最后,移除 snapd 守护进程包:
sudo snap remove --purge snapd
完成后,再次运行 snap list 进行验证,并删除用户主目录下的 ‘snap’ 缓存文件夹。
步骤 2:阻止 Snap
当你尝试安装 Firefox、Chromium 或 Thunderbird 等软件时(即使是通过原生的 .deb 包安装),Snap 包可能会被自动重新安装。这是因为 Ubuntu 将这些软件构建成了“空包”,它们会自动下载并安装对应的 Snap 版本。
为了防止 snap 被重新安装,只需移除提供 snap 包安装功能的可执行程序的 snapd 守护进程(Deb 版本),然后添加规则将其阻止即可。
首先,打开终端(Ctrl+Alt+T)并运行命令移除 snapd deb 包:
sudo apt remove snapd
如果看到系统提示将同时移除 Firefox 和 Chromium,请不必担心。它们只是指向 Snap 版本的空包装包。
接着,运行命令创建一个 apt 配置文件,并使用 nano 命令行文本编辑器进行编辑:
sudo nano /etc/apt/preferences.d/snapd
文件打开后(在命令行界面中),添加以下行,将 snapd 包的优先级设置为 -1,这样它就不会被自动重新安装了。
Package: snapd
Pin: release o=Ubuntu
Pin-Priority: -1
完成后,按 Ctrl+S 保存文件,按 Ctrl+X 退出。
最后,运行 sudo apt update 以应用更改。你也可以尝试手动安装 snapd,看看它是否已被成功阻止。
自 apt v3.1 版本起,新增了一种排除(exclude)方法,因此你也可以按照以下步骤来阻止(从索引中排除)snap 守护进程。
首先,运行命令编辑官方源文件:
sudo nano /etc/apt/sources.list.d/ubuntu.sources
文件打开后(在终端中),在两个配置段落中分别添加以下行:
Exclude: snapd
如果你想安装 Deb 版本的 Firefox,可以使用 Exclude: snapd firefox,这样也能同时阻止 Firefox 的空包装包。
最后,保存文件(按 Ctrl+S,然后按 Ctrl+X)并运行 sudo apt update 以应用更改。
步骤 3:清理残余
在彻底移除并禁用 Snap 后,您可以删除相关缓存以释放磁盘空间。
这些缓存包括:位于用户主目录下的 snap 文件夹(包含用户应用程序数据)、/var/lib/snapd 目录(包含 Snap 守护进程使用的主要系统数据),以及 /var/cache/snapd 目录(Snap 守护进程用于存储缓存)。
若要删除它们,请打开终端并依次运行以下命令:
rm -rf ~/snap
sudo rm -rf /var/lib/snapd
sudo rm -rf /var/cache/snapd
此外,gnome-shell-ubuntu-extensions 软件包还提供了一些与 Snap 相关的扩展。
由于该软件包与 Ubuntu 核心软件包相关联,您无法将其卸载,但可以使用“扩展管理器”(Extension Manager)来禁用这些扩展(如果尚未安装,请运行以下命令进行安装):
sudo apt install gnome-shell-extension-manager
如图:
步骤 4:针对缺失 Firefox、Ubuntu Pro 和 App Center 的替代方案
1)Firefox:
Firefox 现已为 Debian/Ubuntu 提供官方 .deb 软件包;此外,还有一个知名的 Mozilla 团队 PPA 负责维护最新的 Firefox .deb 软件包。
不过,这两种方式都需要先阻止系统自带的 Ubuntu 版 Firefox。请参阅ufans.top推荐的详细的分步安装指南。
对于 Ubuntu Pro,您可以先访问 ubuntu.com/pro/dashboard 并登录(如果没有账户,请先创建一个免费账户),然后复制令牌(token),并运行以下命令来启用 Ubuntu Pro:
sudo pro attach TOKEN_HERE
此外,您可以运行 pro disable 命令来禁用不需要的服务(如 esm-apps、esm-infra 或 livepatch)。例如,通过以下命令禁用 livepatch 服务:
sudo pro disable livepatch
或者,使用 pro enable 启用任意服务;使用 sudo pro detach 可禁用所有 Ubuntu Pro 服务。
若要替代 App Center 和固件更新程序,请运行以下命令安装 GNOME Software 及其固件插件:
sudo apt install gnome-software gnome-software-plugin-fwupd
