GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo deshabilitar ADVERTENCIA:apt no tiene una interfaz CLI estable...

Solución 1:

Primero, considere el significado de la advertencia que está tratando de ocultar. En teoría, apt podría cambiar mañana para llamarlos "distribuciones" en lugar de "paquetes" (porque "todavía no tiene una interfaz CLI estable") y esto interrumpiría por completo su canalización. Un cambio más probable sería uno que use la palabra "paquetes" en varios lugares, lo que hace que su canalización devuelva información superflua en lugar de solo el número de paquetes que está buscando.

Pero probablemente no esté demasiado preocupado por eso y, siendo realistas, no hay razón para que lo esté. La interfaz se ha mantenido estable durante años y probablemente no cambiará en el corto plazo. Entonces, ¿cómo haces que esa advertencia desaparezca?

En el mundo *nix, la salida a la línea de comando es generalmente de dos tipos, stdout (salida estándar) y stderr (error estándar). Los programas que se comportan bien envían su salida normal a stdout y cualquier advertencia o mensaje de error a stderr. Por lo tanto, si desea que desaparezcan los errores/advertencias, generalmente puede lograrlo descartando cualquier mensaje en stderr usando la redirección de salida 2>/dev/null . (En inglés, eso es "redirect (> ) el segundo canal de salida (2 , que es stderr) a /dev/null (que simplemente tira todo lo que se envía allí)".

La respuesta, entonces, es:

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

Nota al margen:en la pregunta, su comando se muestra como # sudo apt... . El # El indicador de shell implica que probablemente haya iniciado sesión como root cuando usó ese comando. Si ya eres root, no necesitas usar sudo .

Más información sobre la advertencia que desea ignorar (de 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.

Solución 2:

Puede usar una alternativa con el siguiente comando

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

La salida debería ser así

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

El -s significa simular, reconocer o ejecutar en seco

del apt-get páginas de manual

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

Esta respuesta fue inspirada por este blog


Linux
  1. ¿Cómo hacer que `date` genere la hora de una zona horaria diferente?

  2. ¿Cómo decide un programa si tiene o no una salida en color?

  3. Linux - Ldd no encuentra la ruta, ¿cómo agregar?

  4. El indicador de bash de Docker no muestra la salida de color

  5. en la consola de Linux, cómo NO envolver la salida

Cómo corregir el error 'El repositorio no tiene un archivo de lanzamiento' en Ubuntu

Cómo solucionar el error "El repositorio no tiene un archivo de versión" en Ubuntu

Cómo deshabilitar WiFi en el sistema Linux:métodos GUI y CLI

¿Cómo deshabilitar ipv6 en una interfaz específica en linux?

¿Cómo funciona la interfaz de bucle invertido?

GPG no tiene suficiente entropía