首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何禁用“警告: apt没有稳定的CLI接口.”

如何禁用“警告: apt没有稳定的CLI接口.”
EN

Server Fault用户
提问于 2019-03-13 02:30:18
回答 1查看 90.2K关注 0票数 33

我正在编写一个脚本,它将输出apt的可升级包的数量。然而,它也不断地给我这个警告:

代码语言:javascript
运行
复制
# sudo apt update | grep packages | cut -d '.' -f 1

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

All packages are up to date

我希望它只是输出:

代码语言:javascript
运行
复制
All packages are up to date

代码语言:javascript
运行
复制
35 packages can be updated

有什么办法可以禁用这个警告吗?我将在来自cron作业的不一致通知中使用这个返回的字符串以及一些额外的信息,它非常糟糕地破坏了我的输出。

我已经看过了,但没有一个对我有用:

https://askubuntu.com/questions/49958/how-to-find-the-number-of-packages-needing-update-from-the-command-line

https://unix.stackexchange.com/questions/19470/list-available-updates-but-do-not-install-them

https://askubuntu.com/questions/269606/apt-get-count-the-number-of-updates-available

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-03-13 08:30:27

首先,考虑一下你试图隐藏的警告的含义。理论上,apt可能会在明天更改为“分发”,而不是“包”(因为它“还没有一个稳定的CLI接口”),这将完全破坏您的管道。更有可能的变化是在多个地方使用“包”这个词,导致管道返回无关的信息,而不是只返回要查找的包计数。

但你可能不太担心,而且,实际上,你没有理由这样做。这个界面已经稳定了好几年了,而且可能不会很快改变。那你是怎么让这个警告消失的呢?

在*nix世界中,对命令行的输出通常有两种形式: stdout (标准输出)和stderr (标准错误)。行为良好的程序将其正常输出发送到stdout,并将任何警告或错误消息发送给stderr。因此,如果您希望错误/警告消失,通常可以通过使用输出重定向2>/dev/null在stderr上丢弃任何消息来实现这一点。(在英语中,这是“重定向(>) -第二个输出通道(2,即stderr) -到/dev/null (只会丢弃发送到那里的所有内容)”。

因此,答案是:

代码语言:javascript
运行
复制
$ sudo apt update 2>/dev/null | grep packages | cut -d '.' -f 1
4 packages can be upgraded

附带注意:在问题中,您的命令显示为# sudo apt...# shell提示符意味着在使用该命令时您可能是以root身份登录的。如果您已经是root用户,则不需要使用sudo

关于您想忽略的警告的更多信息(来自man apt):

代码语言:javascript
运行
复制
SCRIPT USAGE
       The apt(8) commandline is designed as a end-user tool and it may change
       the output between versions. While it tries to not break backward
       compatibility there is no guarantee for it either. All features of
       apt(8) are available in apt-cache(8) and apt-get(8) via APT options.
       Please prefer using these commands in your scripts.
票数 28
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/958003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档