如何完全删除Snap而不丢失Chromium浏览器?

我想知道是否有一种方法可以完全从Ubuntu 19.10中删除snap,而不会失去安装重要应用程序(如Chromium)的能力。
最近我刚更新到最新的Ubuntu版本时,我意识到安装程序自动重新安装了snap,尽管我之前已经手动删除了它。此外,安装程序还删除了通过软件源安装的Chromium,并通过snap重新安装了它。
由于各种原因,我不希望在我的机器上安装snap,所以我的问题是,是否有人知道一种安全的方法来删除它,并将Chromium DEB恢复到软件源?
有没有PPA?我可以同时使用一个Ubuntu衍生版的源,它没有从其源中删除Chromium Deb吗?

3关于将Chromium转为Snap包的移动,可以在此处详细讨论:链接。我理解的是,所有19.10版本的衍生版都将只提供Snap包。根据各种因素,Chromium只作为Snap包的可用性可能也会在18.04版本中强制执行。 - DK Bose
3通常寻找替代的包装来源。具体来说,有一个Chromium Beta PPA(个人软件包档案),网址为https://launchpad.net/~saiarcot895/+archive/ubuntu/chromium-beta,还有一个Dev PPA,网址为https://launchpad.net/~saiarcot895/+archive/ubuntu/chromium-dev。 - doug
3一旦19.10发布并且我们可以具体谈论chromium-browser(它仍然是一个deb软件包,该软件包加载会导致snap安装),那么这就是一个很好的问题。在deb软件包中使用snap软件包之前已经有过例子(目前支持的版本,以及EOL),所以即使不如你当前离题的需求有用,其中一个例子也是可以的。 - guiverc
Snap在我的系统上由于各种原因无法工作。它总是显示权限被拒绝,所以我需要deb文件回退。 - Michael Tsang
1不是你要问的,但我从谷歌Chrome网站下载了Chrome deb文件。没有Snap。 - Stephen Boston
我不建议从某个随机人的PPA运行代码,除非对其进行审计、沙盒化或限制在从不接触敏感信息的机器上。更安全的做法是使用由社区中知名且值得信赖的人控制的高知名度PPA,因为这样更有可能得到良好的维护并受到审查。最好的办法是从Debian存档中获取Chromium软件包。我刚刚添加了一个详细说明如何做到这一点的答案。 - ʇsәɹoɈ
这个回答解决了你的问题吗?不使用Snap安装Chromium - feeela
7个回答

2022年9月更新:

自我撰写本文以来,Ubuntu和Debian都已发布了新版本。这里描述的确切步骤可能在它们上面不起作用(我还没有验证过)。

对于Ubuntu 20.04用户,只要Debian继续支持他们的Buster版本,通过在下面描述的sources.list.d文件中将stable替换为buster,可能仍然能获得良好的结果。

我保留此篇文章,因为它描述了从与debian兼容的软件库中挑选软件包并在不同发行版或版本上使用的常规技巧。


Debian软件源拯救了一天!

(完整文章请点击此处)

Debian仍然将Chromium作为其APT软件源中的常规软件包进行维护。我们可以配置Ubuntu从那里获取它,并继续接收及时的安全更新以及所有其他操作系统更新。从安全角度来看,这是有道理的,因为Debian是Ubuntu获取大部分软件包的地方,而且是一个非常知名的高调项目。没有必要冒险从某个随机来源安装软件或告诉您的系统信任一个PPA。

必要的警告:这完全不受支持,可能会立即或将来导致问题。如果出现故障,那是你自己的责任。

以下是我在Ubuntu 19.10上所做的操作:

sudo apt update && sudo apt upgrade

这将使我已安装的Ubuntu软件包保持最新状态,这样在我进行更改后,就更容易看到升级的影响。
snap remove chromium

再见了,烦人的咔嚓声。
sudo apt purge chromium-browser chromium-chromedriver

再见了,假的Chromium软件包。(如果你的系统上没有安装该软件包,可以忽略`chromium-chromedriver`部分。)
umask 22

这只是确保我创建的文件可以被所有人阅读,包括系统。
创建一个包含以下内容的文件:/etc/apt/sources.list.d/debian-stable.list
deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian stable main
deb-src [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian stable main

deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian-security/ stable-security main
deb-src [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian-security/ stable-security main

deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian stable-updates main
deb-src [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian stable-updates main

这告诉apt不仅要在Ubuntu存档中查找软件包,还要在Debian稳定存档中查找。通常情况下,这是一个坏主意,因为你不希望数百个随机的Ubuntu软件包被Debian版本替换,这很可能会破坏你的系统。然而,我们将添加一些规则来避免这个问题。

注意:上面提到的/usr/share/keyrings/debian-archive-keyring.gpg文件以及其他几个Debian密钥环文件已经存在于我的Ubuntu系统上,这多亏了debian-archive-keyring软件包。它可能已经存在于您的系统上,但如果没有,请安装它:sudo apt install debian-archive-keyring

创建一个包含以下内容的/etc/apt/preferences.d/debian-chromium文件:

Explanation: Allow installing chromium from the debian repo.
Package: chromium*
Pin: origin "*.debian.org"
Pin-Priority: 100

Explanation: Avoid other packages from the debian repo.
Package: *
Pin: origin "*.debian.org"
Pin-Priority: 1

第一节将Debian Chromium软件包的优先级设为低于正常水平;仅足够使其能够手动安装和自动更新,但不足以优先于Ubuntu软件包。这被称为apt pinning,并在apt_preferences manual中有所描述。第二节将所有其他Debian软件包的优先级设为非常低,因此只有在需要满足依赖关系时才会自动安装或更新。
(我想如果我需要Debian的Chromium软件包覆盖Ubuntu的软件包,我可以将其优先级设置得更高,但由于它们使用不同的软件包名称,因此不需要覆盖。我也可以将整个Debian存储库的优先级固定为100;这将使任何仅适用于Debian的依赖关系符合自动更新的条件,实际上将Debian存储库视为手动安装模式下的Ubuntu Backports。我选择了更保守的方法,只是为了谨慎起见。)
sudo apt update

刷新软件包数据库,这样我的Ubuntu系统就能知道我添加的Debian存档中的所有内容了。
apt upgrade --simulate

这向我展示了系统范围的软件包升级会带来什么影响,但实际上并没有进行升级。由于在进行任何更改之前我已经进行了一次升级,所以我不希望在这里看到任何可升级的软件包。
如果列出了一个或两个可升级的软件包,可能意味着在我工作期间Ubuntu恰好发布了一些更新,这是正常的情况。在继续之前,我会询问apt每个更新来自哪里,使用apt policy package-name命令。如果其中任何一个来自Debian存档,我会考虑撤销我的更改,删除我创建的文件,并再次运行sudo apt update命令。
如果列出了许多可升级的软件包,很可能意味着apt现在认为Debian的软件包是Ubuntu软件包的有效替代品,而这是我不想要的。如果我在创建这些文件时犯了错误,就会发生这种情况。我会撤销我的更改,删除我创建的文件,并再次运行sudo apt update命令。然后,我可能会考虑重新开始,并更加仔细地输入。
在这一点上一切都很顺利(没有列出可升级的软件包),所以我继续进行了下一步。
sudo apt install chromium

软件包管理器随后要求我确认,列出了Chromium和一小部分Chromium所需的依赖包。再次强调,如果这里列出了许多包,我会进行调查并考虑撤销我的更改。(无论如何,我都会调查每个依赖项,因为我很谨慎,并发现只有一个依赖项来自Debian存档:libjpeg62-turbo,它与我已安装的任何内容都不冲突。)一切看起来都很好,所以我告诉软件包管理器继续进行。
当完成时,Chromium最终作为apt软件包安装。感谢Debian维护者!

我不使用任何 snaps,所以下一步我做的是查看我主目录下的 snap 文件夹,确保里面没有我需要的东西,然后将其丢进垃圾桶。如果你想做同样的事情,请先考虑一下自己在 Chromium 中创建/修改/保存的任何用户数据都保存在 snap 文件夹的某个位置下(可能在大多数文件管理器中默认隐藏的 snap/chromium/current/.config 目录下)。你可能希望备份或将其移动到 Chromium 的常规数据目录:$HOME/.config/chromium。在我的情况下,我想保留的 Chromium 数据仍然在它的旧/常规位置,因为我只使用了 snap 大约五分钟。

就这样。希望能对某人有所帮助。如果它损坏了你的系统,偷走了你的自行车,带着你的男朋友跑掉,或者做了其他你不喜欢的事情,那我很抱歉,但这仍然是你自己的责任。

祝你好运!


1这应该是被接受的答案。不过,如果我是你,我会选择Debian Testing非自由软件版本,因为它有更更新的软件包。此外,我会创建一个备份(比如使用TimeShift),以便在系统损坏、偷走我的自行车、跑掉带走我的女朋友或者做其他我不喜欢的事情时方便恢复。 - Qazi Fahim Farhan
1据我所知,Debian Stable定期更新Chromium,并且包含与Debian Testing相同的Chromium版本。我选择前者是为了减少在不必要的情况下从Debian软件仓库中拉取某些依赖项(由于更高的版本号)的可能性。 - ʇsәɹoɈ
这对我来说在19.04上运作得非常好。我必须使用sudo apt install debian-archive-keyring安装Debian密钥,还需要从Debian存储库中获取Chromedriver,命令是sudo apt install chromium-driver - Ian Mackinnon
@IanMackinnon 在19.04版本中,我记得你可以直接从Ubuntu软件源安装Chromium而不使用snap。如果我的记忆没错的话,直到19.10版本才开始使用sudo apt install chromium-browser命令安装snap。我不喜欢这种重定向方式。apt和apt-get绝对不应该安装snap!顺便说一句,我很喜欢这个答案。 - Lonnie Best
这也回答了我的问题。你不能对Snap版本使用Firejail。这是我对它最大的问题。 - Lonnie Best
我觉得这个有点麻烦,而且容易出问题。我已经发布了一个简单的解决方案,但是基于你的想法进行改进:https://askubuntu.com/a/1230153/267858 - eitch
2我不知道你所说的易于破坏是什么意思,因为它使用了APT的完全支持特性,没有引入任何新的安全风险,根本不需要进行任何持续的维护,并且从来没有出过问题。我承认你的方法需要更少的设置步骤,但它也将用户和操作系统的安全委托给一个未经Ubuntu或Debian维护者或其庞大用户社区验证的第三方PPA。不用了,谢谢。 - ʇsәɹoɈ
谢谢!我唯一遇到的问题是,由于我的预设网络浏览器是 Chromium,在安装 Debian 版本的 Chromium 后,我不得不将预设的网络浏览器从 Snap 上不存在的 Chromium 更改为当前的 Chromium 安装。也许在回答底部加上一条注释对其他人会有帮助。 - Paolo Benvenuto
1libicu63也来自Debian。 - Paolo Benvenuto
3我不需要以任何方式去做这件事,但是仅仅通过阅读这篇帖子,我学到了很多东西。也许这应该成为一篇关于处理Snaps和APT的博客文章。 - Justin W
Linux Mint似乎已经制作了自己的软件包(请参阅他们的博客)。这可能是一个更好的apt源,因为Debian的软件包相当过时。 - Ruslan
@Ruslan 不,Debian的Chromium软件包并不过时。(使用Mint软件包可能会起作用,虽然这样做可以提供更多选择,但请记住这将涉及对新方的信任。) - ʇsәɹoɈ
1嗯,Chromium 83(今年五月首次发布)在Debian中,而Ubuntu 18.04中是86版本,Snap中则是87版本...我认为Debian的版本确实有点过时。 - Ruslan
太好了,ʇsәɹoɈ!在这个19.10版本上完美运行。还有,感谢你为其他人提供的完全内部管理员修复!下一步计划是移除Snap!加油,odoncaoa! - odoncaoa
干得好!刚刚在一台之前安装了老旧的升级版20.04系统的机器上,进行了裸金属安装(xubuntu)20.04。真高兴终于不需要再与所有snap噪音纠缠。这是我安装的版本-> 87.0.4280.88版(Developer Build),构建于Debian 10.7,运行于Debian bullseye/sid(64位)。正因如此,Stack Exchange站点在互联网上被认为是具有可靠高信噪比的。再次称赞!Xubuntu进入我的生活是当Unity Desktop出现的时候。希望能够避免过多使用snaps。 - BISI
正如@PaoloBenvenuto所说,现在(2021/08),Debian稳定版的Chromium依赖于libicu63,这必须来自Debian,因为Ubuntu现在正在使用libicu66(已安装在我的系统上)。我应该怎么做才能避免破坏整个系统? 对于libevent-2.1-6libevent-2.1-7以及libvpx5libvpx6也是同样的情况。 - PlasmaBinturong
@PlasmaBinturong 像你列出的那些不同版本的库,它们的基本名称不同,通常可以在系统中并存而不会发生冲突。我刚刚在自己的系统上确认了这一点,并且运行得很好。如果你担心的话,你也可以等待几周,直到Debian Bullseye成为Debian Stable。它也使用更新的版本。 - ʇsәɹoɈ
@ʇsәɹoɈ 谢谢你的澄清。我太着急了,已经运行了安装程序! - PlasmaBinturong
今天试了一下,但我得到的只是一个版本过旧(90.0.4430)的Chromium,不被Netflix支持。(此外,Chromium的同步/登录功能也不再可用,因为Google不再允许Chromium使用API。)- 很遗憾,我还是回到Chrome了。:/ - zrajm
1@ʇsәɹoɈ 现在(21.04)我得到了依赖项:libwebpmux3(>= 0.6.1-2+b1),但要安装的是0.6.1-2ubuntu0.21.04.1。不幸的是,libwebmux3是我系统上许多已安装软件的依赖项。有什么建议吗? - Bruni
谢谢。我本来就怀疑Debian会是个好选择。老实说,我对开发者声称snaps能省事一点都不在意。它们完全破坏了Linux的整体概念。我不想要一个庞大的安装文件。正因为这个问题,我已经禁用了Firefox,如果没有解决办法,我也不会费心去使用Chromium。 - Auspex
这个一直运行得很好,但是现在当我运行 apt install chromium 时出现以下错误信息:以下软件包有未满足的依赖关系: chromium : 依赖于:libwebp7 (>= 1.2.4) 但是 1.2.2-2ubuntu0.22.10.1 将被安装 依赖于:libwebpdemux2 (>= 1.2.4) 但是 1.2.2-2ubuntu0.22.10.1 将被安装 依赖于:libwebpmux3 (>= 1.2.4) 但是 1.2.2-2ubuntu0.22.10.1 将被安装 E: 无法纠正问题,您有损坏的软件包。 -- 有什么建议吗? - drmrbrewer

理论上我对snap没有什么意见,但是它在我的挂载点、进程和文件系统上的垃圾邮件实在太多了。在 Chrome 被强行推荐之前,我只使用它来编辑微型文本。另外,在 20.04 版本中,它对于微型文本也不再必要。

删除 snap* 并防止其重新安装:

sudo apt remove --purge snapd -y    # may take a while
killall snap snapd                  # probably not necessary

sudo rm -rf /snap /var/cache/snapd/ # buh-bye
rm -rf ~/snap                       # that one too!
sudo apt-mark hold snap snapd       # prevent reinstall

安装 Chromium,Dev 或 Beta 版:

# sudo add-apt-repository ppa:chromium-team/dev
sudo add-apt-repository ppa:saiarcot895/chromium-beta
# sudo apt update                   # if it didn't already
sudo apt install chromium-browser

微编辑器 - 在20.04 Focal之前
# install it from snap beforehand or compile, then copy locally:
cp micro ~/bin

微编辑器 - 在20.04 Focal版本之后
sudo apt install micro

请注意,_snap_软件包与snap软件包无关。snapd是您需要保留的唯一软件包。 - Akilan

sudo snap remove chromium    
sudo apt purge snapd    
rm -rf ~/snap

添加仓库
sudo add-apt-repository ppa:chromium-team/dev

/etc/apt/sources.list.d/chromium-team-dev.list中的eoan更改为disco
如果文件不存在或为空,则粘贴该内容。
deb http://ppa.launchpad.net/chromium-team/dev/ubuntu disco main
deb-src http://ppa.launchpad.net/chromium-team/dev/ubuntu disco main

然后更新
sudo apt update
    

检查
apt policy chromium-browser

安装
sudo apt install chromium-browser

为什么你使用 dev 而不是 stable - lonix
@lonix 首先,看起来这个“稳定”的PPA已经半年没有更新了。 - Matti Virkkunen
在Ubuntu 20上,我遇到了一个错误,PPA没有Release文件,因此自动更新被禁用。 - Dan Dascalescu
该软件源 'http://ppa.launchpad.net/chromium-team/dev/ubuntu focal Release' 没有 Release 文件。 - James Bradbury
我在20.04上手动下载了,因为添加存储库的方法不起作用。在这里你可以找到beta、dev和stable版本:https://launchpad.net/~chromium-team,我选择了beta版本,因为它经过了一定程度的测试并且更新得更多。唯一成功安装的方法是`sudo dpkg -i chromium-*.deb`(gdebi对这个包无效)。 - Aquarius Power

类似于上面的例子,我做了以下操作:
# first add the beta repo, the stable isn't possible as it doesn't get updated
sudo add-apt-repository ppa:chromium-team/beta

# now edit the file, changing the reference to disco, instead of eoan:
sudo nano /etc/apt/sources.list.d/chromium-team-ubuntu-stable-eoan.list
    deb http://ppa.launchpad.net/chromium-team/beta/ubuntu disco main

# Now update the repos:
sudo apt update

Now pin the repository order:
sudo nano /etc/apt/preferences.d/chromium

    Explanation: Disallow installing chromium from ubuntu repo.
    Package: chromium*
    Pin: origin "*.ubuntu.com"
    Pin-Priority: 1
    
    Explanation: Allow installing chromium from launchpad repo.
    Package: chromium*
    Pin: origin "ppa.launchpad.net"
    Pin-Priority: 100

# Check which version is to be installed:
apt policy chromium-browser

# Now we can install chromium (the extra codecs resolve playback issues):
sudo apt install chromium-browser chromium-codecs-ffmpeg-extra

这是一个晚回复,但我最近才发现基于snapchromium被削弱了,并且我偶然看到了这个讨论。我现在已经按照您在这里的步骤进行操作,非常感谢您!我现在可以在Ubuntu 20.04下使用完整功能的、未被削弱的chromium版本了。 - HippoMan
嗨,我很乐意帮忙。可惜这在20.10版本上行不通,你需要使用另一个PPA:ppa:saiarcot895/chromium-beta,并且将偏好设置优先级设为1000。 - eitch


1请注意,除非您申请开发者 API 密钥,否则 Chrome 同步功能将无法在开发版本中使用。https://www.chromium.org/developers/how-tos/api-keys - Ian Mackinnon

您可以在此处下载适用于Ubuntu 20.04 LTS(Focal)、21.04(Hirsute)和21.10(Impish)的最新官方.deb版本: https://launchpad.net/~phd/+archive/ubuntu/chromium-browser/ 这是一个PPA存储库,包含了最初针对Ubuntu 18.04 LTS(Bionic)发布的官方Ubuntu软件包,并在新版本发布后进行更新。

你可以使用APT来添加Chromium的软件源,这样你就完全不需要snapd了。
sudo add-apt-repository ppa:chromium-team/stable
sudo apt-get update
sudo apt install chromium

4这是同样的东西。“chromium-browser过渡包 - chromium-browser -> chromium snap” - adasiko