GNU/Linux >> Znalost Linux >  >> Linux

Jak deaktivovat VAROVÁNÍ:apt nemá stabilní rozhraní CLI...

Řešení 1:

Nejprve zvažte význam varování, které se snažíte skrýt. Teoreticky apt mohl by se zítra změnit na „distribuce“ místo „balíčky“ (protože „zatím „nemá stabilní rozhraní CLI“), což by zcela přerušilo váš kanál. Pravděpodobnější změnou by byla změna, která používá slovo „balíčky“ na více místech, což způsobí, že váš kanál bude vracet nadbytečné informace namísto pouze počtu balíčků, které hledáte.

Ale pravděpodobně se tím příliš netrápíte a reálně neexistuje žádný důvod, proč byste se tím měli znepokojovat. Rozhraní je již léta stabilní a pravděpodobně se v dohledné době nezmění. Jak tedy zajistíte, aby toto varování zmizelo?

Ve světě *nix má výstup na příkazový řádek obecně dvě varianty, stdout (standardní výstup) a stderr (standardní chyba). Dobře fungující programy posílají svůj normální výstup na stdout a všechna varování nebo chybová hlášení na stderr. Pokud tedy chcete, aby chyby/varování zmizely, můžete toho obvykle dosáhnout zahozením všech zpráv na stderr pomocí přesměrování výstupu 2>/dev/null . (V angličtině je to „přesměrování (> ) druhý výstupní kanál (2 , což je stderr) na /dev/null (který prostě zahodí vše, co tam bylo poslané)“.

Odpověď tedy zní:

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

Poznámka:V otázce je váš příkaz zobrazen jako # sudo apt... . # shell prompt znamená, že jste byli pravděpodobně přihlášeni jako root při použití tohoto příkazu. Pokud již jste root, nemusíte používat sudo .

Další informace o varování, které chcete ignorovat (z 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.

Řešení 2:

Můžete použít alternativu s následujícím příkazem

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

Výstup by měl být takto

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

-s znamená simulovat, recon nebo dry run

z apt-get manuálové stránky

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

Tato odpověď byla inspirována tímto blogem


Linux
  1. Jak si vyžádám soubor, ale neuložím jej pomocí Wget?

  2. Výzva Docker bash nezobrazuje barevný výstup

  3. Jak zakázat ipv6 na konkrétním rozhraní v linuxu?

  1. Jak zakázat/uzamknout nebo zakázat aktualizace balíčků pomocí nástroje Apt

  2. Jak funguje rozhraní zpětné smyčky

  3. GPG nemá dostatečnou entropii

  1. Jak zajistit, aby „datum“ vydalo čas z jiného časového pásma?

  2. Jak se program rozhodne, zda bude či nebude mít barevný výstup?

  3. "ocas -f | Iconv -fsjis” nevydává nic?