如何在不丢失 Chromium 浏览器的情况下彻底删除 snap?

如何在不丢失 Chromium 浏览器的情况下彻底删除 snap?

我想知道是否有办法从 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 文件中替换来获得良好的结果stablebuster

我保留这篇文章是因为它描述了从与 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

更改eoandisco/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

相关内容