![‘apt-get’ 已被弃用了吗?](https://linux22.com/image/1140832/%E2%80%98apt-get%E2%80%99%20%E5%B7%B2%E8%A2%AB%E5%BC%83%E7%94%A8%E4%BA%86%E5%90%97%EF%BC%9F.png)
最近,我看到很多人使用
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 是占位符,而不是应用程序)
因此,在社区中流行使用apt
而不是之后apt-get
,我开始认为 apt-get 已被弃用,并且不能再在我的 bash 程序中使用。
在我的 bash 程序中,
- 我是否必须
apt-get
用 替换所有命令apt
? - 危险吗
apt-get
? - 我的程序还能运行吗?
答案1
不,apt-get
它并没有被弃用。的手册页对vs. (和)apt
有如下说明:apt
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.
如果它检测到有管道。例如:
$ 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-get 命令
apt
?
不,您不必用 替换apt-get
。apt
相反,如果您在脚本中使用它,则应该坚持使用,apt-get
因为它具有稳定的 CLI API 并保证向后兼容性。
危险吗
apt-get
?
apt
和以下一样危险apt-get
:您应该只安装来自您信任的来源的软件。
我可以
apt
在 Ubuntu 15.10 中使用吗?
是的,可以。问题是您仍在使用 Ubuntu 15.10,现在它不再受支持!请升级到 16.04,这是一个 LTS 版本。
我的程序还能运行吗?
就程序而言,我假设您指的是脚本。是的,它们仍将有效,因为apt-get
尚未弃用。事实上,您应该更喜欢apt-get
在脚本中使用 以实现向后兼容,正如 的apt
手册页所建议的那样。
答案2
apt-get
是较低级别并且向后兼容。apt
对最终用户更有利,并且不需要或包含 中存在的一些额外功能apt-get
。
两者都很好。apt-get
并未弃用,但您的 15.10 安装已弃用:)
编辑:来自 apt(8) 的手册页
apt 命令旨在让最终用户感到愉快,并且不需要像 apt-get(8) 那样向后兼容。
编辑2:apt
旨在修复 中的一些基本依赖性缺陷apt-get
。由于它是一个包装器,apt
因此级别更高,同时也失去了一些向后兼容性和脚本功能。
答案3
apt
和apt-get
基本上是相同的包管理器,它们所做的事情是相同的。
不同之处在于它还apt
包含例如的功能apt-cache
并且具有更美观的输出。
但是,apt
至少在您想要解析其输出时,它还不应在脚本中使用,因为它仍在开发中,其输出格式可能仍会发生变化。Bash 的 tab-autocomplete 还不能与许多apt
命令配合使用。
您可以同时使用两者,无论哪种方式您都喜欢。