我想知道是否有办法从 Ubuntu 19.10 中完全删除 snap,同时又不失去安装 Chromium 等重要应用程序的能力。
当我最近更新到最新的 Ubuntu 版本时,我发现安装程序以编程方式重新安装了 snap,尽管我之前已经手动删除了它。此外,安装程序删除了通过存储库安装的 Chromium,并通过 snap 重新安装了它。
由于各种原因我不想在我的计算机上安装 snap,所以我的问题是是否有人知道一种安全的方法来删除它,并将 Chromium DEB 恢复到源?
有 PPA 吗?我可以使用 Ubuntu 版本源,但不会从源中删除 Chromium Deb 吗?
答案1
2022 年 9 月更新:
自从我最初撰写本文以来,Ubuntu 和 Debian 都发布了新版本。这里描述的确切步骤可能不适用于它们。(我还没有检查。)
只要 Debian 继续支持他们的 Buster 版本,Ubuntu 20.04 用户可能仍会通过在下面描述的 sources.list.d 文件中替换来获得良好的结果stable
。buster
我保留这篇文章是因为它描述了从与 debian 兼容的存储库中挑选软件包以用于不同发行版或版本的一般技术。
Debian Repo 拯救了我们!
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 固定,并在apt_preferences 手册。第二节为所有其他 Debian 软件包分配了非常低的优先级,因此只有在满足依赖关系需要时才会自动安装或更新它们。
(我想我可以给 Debian 的 Chromium 包分配更高的优先级,如果我需要它们覆盖 Ubuntu 的包,但由于它们使用不同的包名,所以不需要覆盖。我也可以将整个 Debian 仓库固定在优先级 100;这将使任何 Debian 独有的依赖项都有资格进行自动更新,有效地将 Debian 仓库视为Ubuntu 反向移植在手动安装模式下。我选择了更保守的方法,以防万一。
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 维护者!
我不使用任何 snap,所以接下来我做的是查看snap
我的主目录中的目录,确保其中没有我需要的内容,然后将其放入垃圾桶。如果你想做同样的事情,首先要考虑自 snap 首次安装以来你在 Chromium 中创建/修改/保存的任何用户数据都位于该 snap 文件夹下的某个位置。(snap/chromium/current/.config
大多数文件管理器可能默认隐藏该文件夹。)你可能想要备份它或将其移动到 Chromium 的常用数据目录:$HOME/.config/chromium
。就我而言,我想要保留的 Chromium 数据仍然在它的旧/常用位置,因为我只使用了 snap 大约五分钟。
就是这样。我希望它能帮助到某些人。如果它损坏了你的系统、偷走了你的自行车、和你的男朋友跑了,或者做了其他你不喜欢的事情,那么我很抱歉,但这仍然是你自己的责任。
祝你好运!
答案2
理论上我并不反对 snap,但对我的挂载、进程和文件系统进行垃圾处理实在是太过分了。在我使用 Chromium 之前,我只用它做一件事(微编辑器)。(而且在 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
微型编辑器 - Focal >= 20.04 之后
sudo apt install micro
答案3
sudo snap remove chromium
sudo apt purge snapd
rm -rf ~/snap
添加 repo
sudo add-apt-repository ppa:chromium-team/dev
更改eoan
为disco
/etc/apt/sources.list.d/chromium-team-dev.list
如果文件不存在或为空则粘贴:
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
答案4
与上面森林的例子类似,我做了以下事情:
# 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