摆脱 Ubuntu 中的“snapd 返回状态代码 400:错误请求”错误

简介:快速教程向您展示如何修复从软件中心安装应用程序时遇到的“snapd 返回状态代码 400:错误请求”错误。

我正在尝试安装 Visual Studio Code,这是最好的开源代码编辑器之一,出人意料地来自 Microsoft。 我之前写过关于在 Ubuntu 上安装 Visual Studio Code 的方法,但从那时起,它就在软件中心提供。 因此我尝试从那里安装它。

令我惊讶的是,当我点击安装按钮时,我遇到了一个错误。

错误读取:

抱歉,这不起作用
Visual Studio Code 安装失败。

错误的详细信息是这样的:

包管理器的详细错误如下:
snapd 返回状态码 400:错误请求

我不喜欢愚蠢的错误,但我喜欢修复它们,或者在这样的情况下,绕过错误。 如果您遇到类似的问题,那么我将与您分享为什么会出现此错误以及如何安装引发此错误的应用程序。

摆脱 ‘snapd 返回状态码 400:错误请求’

如果您喜欢视频,可以在 It’s FOSS YouTube 频道观看此视频。

订阅 YouTube 频道以获取更多 Linux 视频

让我们看看如何安装显示上述错误的应用程序。 这里的解决方法是使用命令行。 使用这些命令并不是很复杂。 只需按照说明进行操作。

如果您阅读了我在 Ubuntu 中使用 snap 命令的指南,您就会知道我们可以使用 find 选项来搜索具有给定名称的可用 snap 包。 在我的例子中,我试图安装 Visual Studio Code,这样我就可以搜索“visual studio code”或简单的“visual”。

请注意,如果程序名称有多个单词,请用引号将它们组合在一起:

snap find "visual studio code"

正如您在命令输出中看到的那样,系统在经典模式下提供了 Visual Studio Code 版本 1.18。 我将在下一节解释什么是经典模式。 您还应该记下包的确切名称。 它是 Visual Studio Code 的 vscode。

现在以下列方式使用命令安装 snap 包:

sudo snap install vscode --classic

Enter 您的密码,您会看到该应用程序已安装。 您现在可以像使用系统中的任何常规软件一样使用该应用程序。

既然您已经了解了如何“修复”这个 snapd 错误,您可以直接跳到评论部分快速感谢您。 但是,我建议您和我一起阅读下一部分,以了解快照及其经典模式。

“snapd 返回状态码 400:错误请求”错误背后的原因

我不知道你知道多少 Linux 打包 在这里,我将尝试向您解释基础知识。

您可能知道各种 Linux 发行版都有自己的打包系统。 您可以在 Debian 和基于 Ubuntu 的 Linux 发行版上下载 .deb 包,但 Fedora 将使用它自己的 .rpm 包等等。 按照设计,无法在 Fedora 反之亦然。

引入了通用包以避免对发行版的依赖。 Ubuntu 推出了自己的通用打包系统 Snap。 它允许您在任何支持 Snap 的 Linux 发行版上使用这些 Snap 打包应用程序,而不仅仅是 Ubuntu。

这里的问题是您尝试安装的应用程序实际上是一个 Snap 包。 这就是错误显示的原因 抢购 代表快照 守护进程.

经典 Snap 应用程序在软件中心不起作用

撇开历史不谈,你可以而且应该问一下 Snap 打包是否来自 Ubuntu,为什么它不能在其软件中心工作?

答案是 Snap 包装设计的变化。 最初,快照包安装和安装在严格控制的空间中。 他们无法访问绝大多数系统资源,他们捆绑了他们需要的库并拥有一个只读文件系统。 这被称为“严格”的限制政策,它们确保了更安全的环境。

然而,随着 snapd 2.20 发布, Ubuntu 引入了一种新的限制策略,称为 Classic。 经典模式下的应用程序可以访问系统的其余部分,与大多数传统打包应用程序(如 Debian 软件包)相同。

不幸的是,软件中心不支持使用经典限制策略的 Snap 包。 您必须通过命令行选项来安装此类 Snap 应用程序。

它对你有用吗?

我希望这个快速提示可以帮助您解决问题,并且您还了解了有关 snap 包的一两件事。 如果您有任何问题或建议,请使用下面的评论部分。