GNU/Linux >> Linux の 問題 >  >> Linux

警告を無効にする方法:apt には安定した CLI インターフェイスがありません...

解決策 1:

まず、隠そうとしている警告の意味を考えてみましょう。理論的には apt 明日、それらを「パッケージ」ではなく「ディストリビューション」と呼ぶように変更する可能性があります (「安定した CLI インターフェースがまだないため」)。これにより、パイプラインが完全に壊れます。より可能性の高い変更は、複数の場所で「パッケージ」という単語を使用するものであり、パイプラインは、探しているパッケージ数だけではなく、無関係な情報を返します。

しかし、あなたはおそらくそれについてあまり心配していませんし、現実的には、そうすべき理由はありません.インターフェイスは何年もの間安定しており、おそらくすぐに変更されることはありません。では、その警告を消すにはどうすればよいでしょうか?

*nix の世界では、コマンド ラインへの出力は通常、stdout (標準出力) と stderr (標準エラー) の 2 種類です。行儀の良いプログラムは、通常の出力を stdout に送り、警告やエラー メッセージを stderr に送ります。したがって、エラー/警告を消したい場合は、通常、出力リダイレクト 2>/dev/null を使用して stderr のメッセージを破棄することでこれを実現できます。 . (英語では「リダイレクト (>) ) 2 番目の出力チャネル (2 、stderr) から /dev/null へ (そこに送信されたものはすべて破棄されます)".

答えは次のとおりです。

$ sudo apt update 2>/dev/null | grep packages | cut -d '.' -f 1
4 packages can be upgraded

補足:質問では、コマンドは # sudo apt... として表示されます . # シェル プロンプトは、そのコマンドを使用するときに root としてログインした可能性があることを意味します。すでに root になっている場合は、sudo を使用する必要はありません .

無視したい警告の詳細 (man apt から) ):

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.

解決策 2:

次のコマンドで別の方法を使用できます

sudo apt-get -s upgrade | grep -P "\d\K upgraded"

出力は次のようになります

6 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

-s シミュレート、偵察、予行演習を意味します

apt-get から マニュアルページ

       -s, --simulate, --just-print, --dry-run, --recon, --no-act
           No action; perform a simulation of events that would occur based on
           the current system state but do not actually change the system.
           Locking will be disabled (Debug::NoLocking) so the system state
           could change while apt-get is running. Simulations can also be
           executed by non-root users which might not have read access to all
           apt configuration distorting the simulation. A notice expressing
           this warning is also shown by default for non-root users
           (APT::Get::Show-User-Simulation-Note). Configuration Item:
           APT::Get::Simulate.

この回答はこのブログに触発されました


Linux
  1. プログラムは、カラー出力を使用するかどうかをどのように決定しますか?

  2. 「tail-f| Iconv -fsjis」は何も出力しませんか?

  3. Linux コンソールで、出力をラップしない方法

  1. プロセスがps出力で異なる名前を持っているように見えるのはなぜですか?

  2. ldd でパスが見つからない、追加方法

  3. GPG には十分なエントロピーがありません

  1. AptToolを使用してパッケージアップデートを無効化/ロックまたはブラックリストに登録する方法

  2. `date`に別のタイムゾーンからの時間を出力させるにはどうすればよいですか?

  3. Thesqldumpでエラーが発生しない場合にのみGzipで圧縮するにはどうすればよいですか?