'apt-get' 被弃用了吗?

Sky*_*les 55 command-line apt bash 16.04

最近看到很多人用

sudo apt
Run Code Online (Sandbox Code Playgroud)

代替

sudo apt-get
Run Code Online (Sandbox Code Playgroud)

此外,Ubuntu 一直告诉我通过以下方式安装东西 sudo apt

The program 'foo' is currently not installed. You can install it by typing:
sudo apt install foo
Run Code Online (Sandbox Code Playgroud)

(请记住,foo 是占位符,而不是应用程序)

因此,在社区中关于使用apt而不是的流行之后apt-get,我开始认为 apt-get 已被弃用并且不能再在我的 bash 程序中使用。

在我的 bash 程序中,

  • 我必须用 替换所有apt-get命令apt吗?
  • apt-get危险的?
  • 我的程序还能用吗?

edw*_*ksl 49

不,apt-get没有被弃用。的手册页apt有关于aptvs. apt-get(和apt-cache)的说明:

脚本用法和与其他 APT 工具的区别

apt(8) 命令行被设计为最终用户工具,它可能会在不同版本之间改变行为。虽然它试图不破坏向后兼容性,但如果更改似乎对交互式使用有益,则也不能保证。

apt(8) 的所有功能都可以在专用的 APT 工具中使用,例如 apt-get(8) 和 apt-cache(8)。apt(8) 只是改变了一些选项的默认值(参见 apt.conf(5),特别是二进制范围)。因此,您应该更喜欢在脚本中使用这些命令(可能启用一些附加选项),因为它们尽可能地保持向后兼容性。

apt 还给出了一个警告说

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Run Code Online (Sandbox Code Playgroud)

如果检测到有管道。例如:

$ apt show python | grep Package

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Package: python
APT-Sources: http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)

至于你的问题,

我必须用 替换所有 apt-get 命令apt吗?

不,您不必替换apt-getapt。相反,如果您在脚本中使用它,则应该坚持使用,apt-get因为它具有稳定的 CLI API 并保证向后兼容性。

apt-get危险的?

apt与以下一样危险apt-get:您应该只安装来自您信任的来源的软件。

我可以apt在 Ubuntu 15.10 中使用吗?

是的,你可以。这里的问题是您仍在使用 Ubuntu 15.10,它现在不受支持!请升级到 16.04,这是一个 LTS 版本。

我的程序还能用吗?

通过程序,我假设您的意思是脚本。是的,它们仍然可以工作,因为apt-get没有被弃用。事实上,您应该更喜欢apt-get在脚本中使用apt的手册页建议的向后兼容性。


neg*_*usp 38

apt-get级别较低且向后兼容。apt对最终用户更好,并且不需要或包含apt-get.

两者都很好。apt-get未弃用,但您的 15.10 安装是 :)

编辑:来自 apt(8) 的手册页

apt 命令旨在让最终用户感到愉快,并且不需要像 apt-get(8) 那样向后兼容。

Edit2:apt旨在修复apt-get. 由于它是一个包装器,apt因此是更高级别的,并且还失去了一些向后兼容性和脚本功能。

  • @Anwar 如果 `apt` 是 `apt-get` 的包装器,那么它肯定是更高级别的。 (26认同)
  • apt-get 中没有哪些功能不在 apt 中?以及如何对最终用户更好? (20认同)
  • 同样,apt-get 的级别不低于 apt。这是一个误导性的信息。apt 与 apt-get 处于同一级别,而 apt 只不过是 apt-get 和 apt-cache 的包装器 (4认同)
  • @Anwar 这实际上是“更高级别”或“更低级别”的定义。apt 是更高级别的*因为*它包装了apt-get。一种测试是,如果您的 apt 损坏,apt-get 仍然可以工作——但反之则不然。 (2认同)

Byt*_*der 7

apt并且apt-get基本上是相同的包管理器,它们所做的都是相同的。

不同之处在于apt它还包含来自 eg 的功能apt-cache并且具有更好看的输出。

但是,apt不应该在脚本中使用,至少如果你想解析它的输出,因为它仍在开发中,它的输出格式可能仍然会改变。Bash 的 tab-autocomplete 还不能用于许多apt命令。

您可以使用两者,无论您喜欢哪种。