GNU/Linux >> Linux Esercitazione >  >> Linux

Come disabilitare ATTENZIONE:apt non ha un'interfaccia CLI stabile...

Soluzione 1:

Innanzitutto, considera il significato dell'avvertimento che stai cercando di nascondere. In teoria, apt potrebbe cambiare domani chiamandole "distribuzioni" invece di "pacchetti" (perché "non ha ancora un'interfaccia CLI stabile") e questo interromperebbe completamente la tua pipeline. Una modifica più probabile sarebbe quella che utilizza la parola "pacchetti" in più punti, facendo sì che la tua pipeline restituisca informazioni estranee invece del solo numero di pacchetti che stai cercando.

Ma probabilmente non sei troppo preoccupato per questo e, realisticamente, non c'è motivo per cui dovresti esserlo. L'interfaccia è rimasta stabile per anni e probabilmente non cambierà presto. Allora come fai a far sparire quell'avvertimento?

Nel mondo *nix, l'output sulla riga di comando è generalmente di due versioni, stdout (output standard) e stderr (errore standard). I programmi ben educati inviano il loro output normale a stdout e qualsiasi avviso o messaggio di errore a stderr. Quindi, se vuoi che gli errori/avvisi scompaiano, di solito puoi farlo eliminando tutti i messaggi su stderr usando il reindirizzamento dell'output 2>/dev/null . (In inglese, è "reindirizzamento (> ) il secondo canale di uscita (2 , che è stderr) a /dev/null (che semplicemente butta via tutto ciò che è stato inviato lì)".

La risposta, quindi, è:

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

Nota a margine:nella domanda, il tuo comando è mostrato come # sudo apt... . Il # il prompt della shell implica che probabilmente eri connesso come root quando hai usato quel comando. Se sei già root, non è necessario utilizzare sudo .

Maggiori informazioni sull'avviso che vuoi ignorare (da 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.

Soluzione 2:

Puoi usare un'alternativa con il seguente comando

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

L'output dovrebbe essere così

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

Il -s significa simulazione, ricognizione o prova

dal apt-get pagine man

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

Questa risposta è stata ispirata da questo blog


Linux
  1. Come disabilitare/bloccare o inserire nella blacklist gli aggiornamenti dei pacchetti utilizzando lo strumento Apt

  2. Come fare in modo che "data" produca l'ora da un fuso orario diverso?

  3. Come fa un programma a decidere se avere o meno stampe a colori?

  4. Come Grep Lines che non iniziano con "#" o ";"?

  5. “coda -f | Iconv -fsjis” non genera nulla?

Come risolvere l'errore "Il repository non ha un file di rilascio" in Ubuntu

Come risolvere l'errore "Il repository non ha un file di rilascio" in Ubuntu

Come disabilitare il WiFi su un sistema Linux:metodi GUI e CLI

Come disabilitare ipv6 su un'interfaccia specifica in Linux?

Come può sembrare che un processo abbia un nome diverso nell'output di ps?

Come funziona l'interfaccia di loopback