GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So deaktivieren Sie WARNUNG:apt hat keine stabile CLI-Schnittstelle ...

Lösung 1:

Betrachten Sie zunächst die Bedeutung der Warnung, die Sie zu verbergen versuchen. Theoretisch apt könnte sich morgen ändern, sie "Distributionen" statt "Pakete" zu nennen (weil es "noch keine stabile CLI-Schnittstelle hat"), und dies würde Ihre Pipeline vollständig zerstören. Eine wahrscheinlichere Änderung wäre eine, die das Wort "Pakete" an mehreren Stellen verwendet, wodurch Ihre Pipeline irrelevante Informationen zurückgibt, anstatt nur die Paketanzahl, nach der Sie suchen.

Aber Sie machen sich darüber wahrscheinlich keine allzu großen Sorgen, und realistisch gesehen gibt es keinen Grund, warum Sie es sein sollten. Die Schnittstelle ist seit Jahren stabil und wird sich wahrscheinlich in absehbarer Zeit nicht ändern. Wie lässt sich diese Warnung also verschwinden?

In der *nix-Welt hat die Ausgabe auf der Kommandozeile im Allgemeinen zwei Varianten, stdout (Standardausgabe) und stderr (Standardfehler). Wohlerzogene Programme senden ihre normale Ausgabe an stdout und alle Warnungen oder Fehlermeldungen an stderr. Wenn Sie also möchten, dass Fehler/Warnungen verschwinden, können Sie dies normalerweise erreichen, indem Sie alle Nachrichten auf stderr mit der Ausgabeumleitung 2>/dev/null wegwerfen . (Auf Englisch ist das „redirect (> ) den zweiten Ausgangskanal (2 , was stderr ist) zu /dev/null (was alles dorthin Gesendete einfach wegwirft)".

Die Antwort lautet dann:

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

Nebenbemerkung:In der Frage wird Ihr Befehl als # sudo apt... angezeigt . Die # Shell-Eingabeaufforderung impliziert, dass Sie wahrscheinlich als root angemeldet waren, als Sie diesen Befehl verwendeten. Wenn Sie bereits root sind, müssen Sie sudo nicht verwenden .

Mehr zu der Warnung, die Sie ignorieren möchten (ab 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.

Lösung 2:

Sie können eine Alternative mit dem folgenden Befehl

verwenden

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

Die Ausgabe sollte so aussehen

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

Die -s bedeutet simulieren, aufklären oder Probelauf

aus dem apt-get Manpages

       -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.

Diese Antwort wurde von diesem Blog inspiriert


Linux
  1. So deaktivieren/sperren oder sperren Sie Paketaktualisierungen mit dem Apt-Tool

  2. Wie entscheidet ein Programm, ob es eine farbige Ausgabe haben soll oder nicht?

  3. Wie Grep-Zeilen, die nicht mit „#“ oder „;“ beginnen?

  4. „Schwanz -f | Iconv -fsjis“ gibt nichts aus?

  5. Wie kann ein Prozess in der ps-Ausgabe einen anderen Namen haben?

So beheben Sie den Fehler „Repository hat keine Release-Datei“ in Ubuntu

So beheben Sie den Fehler „Das Repository hat keine Release-Datei“ in Ubuntu

So deaktivieren Sie WiFi auf einem Linux-System:GUI- und CLI-Methoden

in der Linux-Konsole, wie man die Ausgabe NICHT umschließt

ldd findet keinen Pfad, wie man hinzufügt

Wie funktioniert die Loopback-Schnittstelle?