从 Ubuntu 和其他 Linux 发行版卸载 Snap 软件包
以下是从系统中删除 Snap 包的方法。另请了解如何完全卸载 snap。
之前安装了 Snap 软件包,现在想要卸载它?
要删除快照包,请按以下方式使用命令:
sudo snap remove package_name
但是,如果您不喜欢 Snap 并且不仅想删除应用程序,还想删除 Snap 打包支持,该怎么办?
在本教程中,您将学习:
删除 Snap 应用程序
从 Ubuntu 和其他发行版中完全删除 Snap
让我们详细看看。
卸载 Snap 包
您需要确切的包名称才能将其删除。制表符补全也有效。
为此,列出系统上安装的所有快照包:
snap list
您是否注意到下面的屏幕截图中有些条目带有 ✓ 复选标记或星号?它们是来自官方开发人员的“经过验证”的 snap 包。
如果包太多,您可以使用适当的搜索词进行 grep。
获取包名称后,使用它来卸载该包。
sudo snap remove package_name
至少在 Ubuntu 桌面上,如果您不使用 sudo 和 snap remove,它会以图形方式提示输入密码。但最好使用 sudo,因为无论如何您都需要提升权限才能删除快照应用程序。
就我而言,我在 Ubuntu 上以 snap 格式安装了 Spotify。现在,我像这样删除它:
sudo snap remove spotify
这需要几秒钟的时间,您应该会看到一些有关删除的消息。在该过程结束时,您只能看到完成消息。
这就是删除以快照格式安装的应用程序的方法。
但如果完全删除按扣呢?不是 snap 应用程序,而是 snap 守护进程本身。
完全删除 Snap(Ubuntu 以外的发行版)
对于手动安装 Snap 支持的非 Ubuntu 发行版,删除 snapd 应该不会产生任何问题。
首先,确保您没有安装任何 snap 包。
snap list
如果有,请先删除这些快照包。
sudo snap remove package1 package2 package3
在 Debian、Linux Mint、elementary OS 等上,使用 apt 命令删除 snapd:
sudo apt remove --purge snapd
在基于 Fedora 的发行版上,使用 DNF 命令:
sudo dnf remove snapd
稍后,您可以从主目录和 /var/cache/snapd 中删除 snap 文件夹(如果您对此有特殊要求)。
从 Ubuntu 中完全删除 Snap(谨慎使用)
我建议不要从 Ubuntu 中删除 snap 支持,因为它是系统内置的。高级用户只有在不害怕命令行和对系统进行故障排除的情况下才可以这样做。
Ubuntu 的最新版本已经深度集成了 snap。此外,许多特定于 Ubuntu 的功能(例如 livepatch)只能在启用 snap 的情况下使用。建议不要在主要生产机器上执行此操作,除非您知道自己在做什么。
如果您不喜欢 Ubuntu,您可以随时选择其他发行版,例如 Linux Mint 或 Pop!OS,只是因为 Snap。
下面提到的方法是在Ubuntu 22.04 LTS上测试的。要从 Ubuntu 中根除 snap,首先您需要知道哪些软件包被安装为 snap。为此,请输入:
snap list
您将获得已安装应用程序的列表。假设您没有安装除默认包之外的任何其他 snap 包,它将如下所示:
在删除所有软件包之前,首先停止运行的 snapd 服务。一一使用以下命令:
sudo systemctl disable snapd.service
sudo systemctl disable snapd.socket
sudo systemctl disable snapd.seeded.service
完成此步骤后,您可以删除所有已安装的快照包。您可能遇到的一个问题是依赖项循环,您无法删除某个包,因为另一个依赖于该包的包正在后台运行。当您尝试按按扣出现的顺序删除它们时,就会发生这种情况。
如前所述,如果除了默认值之外没有安装其他快照,则可以按照以下顺序删除它们,不会出现错误。否则,您也删除这些快照包。
sudo snap remove --purge firefox
sudo snap remove --purge snap-store
sudo snap remove --purge gnome-3-38-2004
sudo snap remove --purge gtk-common-themes
sudo snap remove --purge snapd-desktop-integration
sudo snap remove --purge bare
sudo snap remove --purge core20
sudo snap remove --purge snapd
此步骤将删除所有已安装的卡扣。您可以使用snap list
来验证这一点
删除快照后,您可以通过发出以下命令清除剩余数据:
sudo rm -rf /var/cache/snapd/
现在,使用以下命令从系统中完全删除 snapd:
sudo apt autoremove --purge snapd
如果您注意到,即使在清除之后,快照目录仍保留在您的主目录中。使用 Nautilus 删除它:
或者使用:
rm -rf ~/snap
此时系统中所有的snapd服务都会停止。您可以通过运行以下命令来检查:
systemctl list-units | grep snapd
恢复 Firefox 和软件中心
您已删除快照应用程序并禁用服务。但由于 snap 是深度集成的,更新命令可能会将所有删除的项目恢复回来。另外,在删除时,您还删除了两个重要的软件:Firefox 和 GNOME 软件中心。
为了避免重新进入快照,您需要创建一个首选项文件来阻止它。要执行相同的操作,请打开终端并输入以下命令:
sudo nano /etc/apt/preferences.d/nosnap
然后输入以下行并保存文件(CTRL+X 并按“y”并在 nano 编辑器中输入)。
Package: snapd
Pin: release a=*
Pin-Priority: -10
保存文件后,更新您的系统:
sudo apt update
现在,如果您想安装 GNOME 软件中心,请使用以下命令:
sudo apt install --install-suggests gnome-software
其中,--install-suggests
确保不安装 snap 版本。
幸运的是,Mozilla 团队维护了一个 PPA,可以在 Ubuntu 中以 DEB 包的形式安装最新的 Firefox。您可以参考我们关于在 Ubuntu 中将 Firefox 作为 DEB 包安装的专门文章。
在继续之前,请确保您尚未从 Ubuntu 存储库安装 Firefox 过渡包。
sudo apt purge firefox
另外,为了避免安装任何 snap Firefox,请在 /etc/apt/preferences.d/
中创建一个文件“firefox-no-snap”并保存几行代码,如下所示:
sudo nano /etc/apt/preferences.d/firefox-no-snap
Package: firefox*
Pin: release o=Ubuntu*
Pin-Priority: -1
现在使用以下命令从 PPA 安装 Firefox:
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt update
sudo apt install -t 'o=LP-PPA-mozillateam' firefox
要启用 PPA 自动更新(其中无人值守升级
不会自动升级),请使用以下命令:
echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
作为最后一步,为了避免包含任何 Firefox 的 snap 版本,您应该高度优先考虑新添加的 Firefox PPA。否则,Ubuntu 可能会从自己的存储库安装 Firefox,这将导致越来越多的快照。为此,请在 /etc/apt/preferences.d/
中创建一个文件,然后输入以下代码行并保存。
sudo nano /etc/apt/preferences.d/mozillafirefoxppa
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501
就是这样。您已从 Ubuntu 中完全删除了 snap。但是,从实际角度来看,这只是一项有趣的任务。因为,有很多基于 Ubuntu 的发行版,没有预装 snap。因此,在现实生活中使用类似的东西会比走痛苦的路更好。
结论
有些人非常不喜欢 Snap,因为它的“封闭”性质。就我个人而言,我对它没有任何特别的喜欢或不喜欢。我更喜欢使用 apt,但当我没有获得所需的软件包或版本时,我会选择其他格式,例如 Snap、Flatpak 和 AppImage。
正如我之前提到的,如果您不确定,请不要从 Ubuntu 中删除 snap 守护进程。它可能会给您带来一个损坏的系统,我们都不想这样。