‘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-get
。 apt
的手册页有关于apt
与apt-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
危险?
apt
和apt-get
一样危险:你应该只从你信任的来源安装软件。
我可以在Ubuntu 15.10中使用
apt
吗?
是的,你可以。 这里的问题是你还在使用Ubuntu 15.10,现在不支持! 请升级到16.04,这是一个LTS版本。
我的课程还能运作吗?
通过程序,我认为你的意思是脚本。 是的,它们仍然有效,因为apt-get
没有被弃用。 实际上,您应该更喜欢使用apt-get
脚本来实现向后兼容性,如apt
的手册页所示。
apt
和apt-get
基本上是相同的包管理器,他们所做的是相同的。
不同之处在于apt
还包含来自apt-cache
function,并且具有更好看的输出。
但是, apt
不应该在脚本中使用,至少如果你想解析它的输出,因为它仍处于开发阶段,其输出格式可能仍然会改变。 Bash的tab-autocomplete还没有使用许多apt
命令。
您可以使用两者,无论您喜欢哪种。
从其他答案中可以看出,您可以使用apt
或apt-get
。 我想补充的是,几年前我尝试apt
,我注意到它以与apt-get
不同的方式解决了冲突。 当情况变得棘手时(某些东西必须被移除,一些软件包被固定到特定版本,我降级了一个软件包,或者我使用了来自不同版本的软件包的混合物),通常想要删除大量软件包或无法解决冲突。
由于apt-get
在这些情况下要好得多而且没有任何缺点,所以我放弃了apt
并继续使用apt-get
。 这是几年前的事情,所以这可能已经发生了变化,但是如果你遇到类似的情况,你可能想尝试两者,看看哪一个可以更好地解决冲突。