‘apt-get’被弃用了吗?

最近,我见过很多人使用

sudo apt 

代替

 sudo apt-get 

另外,Ubuntu一直告诉我用sudo apt安装东西

 The program 'foo' is currently not installed. You can install it by typing: sudo apt install foo 

(记住,foo是占位符,而不是app)

所以,在社区中普遍使用apt而不是apt-get ,我开始认为apt-get已被弃用,不能再用于我的bash程序。

在我的bash程序中,

  • 我必须用apt-get替换所有apt-get命令吗?
  • 是不是apt-get危险?
  • 我的课程还能运作吗?

apt-get是较低级别和向后兼容的。 apt对最终用户更好,并且不需要或包含apt-get中存在的一些额外function。

两者都很好。 不推荐使用apt-get ,但是你的15.10安装是:)

编辑:从apt的手册页(8)

apt命令对于最终用户来说是愉快的,并且不需要像apt-get(8)那样向后兼容。

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

不,不推荐使用apt-getapt的手册页有关于aptapt-get (以及apt-cache )的说法:

脚本使用和其他APT工具的差异

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

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

apt也发出警告说

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

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

 $ 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 

至于你的问题,

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

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

是不是apt-get危险?

aptapt-get一样危险:你应该只从你信任的来源安装软件。

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

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

我的课程还能运作吗?

通过程序,我认为你的意思是脚本。 是的,它们仍然有效,因为apt-get没有被弃用。 实际上,您应该更喜欢使用apt-get脚本来实现向后兼容性,如apt的手册页所示。

aptapt-get基本上是相同的包管理器,他们所做的是相同的。

不同之处在于apt还包含来自apt-cachefunction,并且具有更好看的输出。

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

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

从其他答案中可以看出,您可以使用aptapt-get 。 我想补充的是,几年前我尝试apt ,我注意到它以与apt-get不同的方式解决了冲突。 当情况变得棘手时(某些东西必须被移除,一些软件包被固定到特定版本,我降级了一个软件包,或者我使用了来自不同版本的软件包的混合物),通常想要删除大量软件包或无法解决冲突。

由于apt-get在这些情况下要好得多而且没有任何缺点,所以我放弃了apt并继续使用apt-get 。 这是几年前的事情,所以这可能已经发生了变化,但是如果你遇到类似的情况,你可能想尝试两者,看看哪一个可以更好地解决冲突。