GNU/Linux >> Tutoriels Linux >  >> Linux

Comment désactiver AVERTISSEMENT :apt n'a pas d'interface CLI stable...

Solution 1 :

Considérez d'abord la signification de l'avertissement que vous essayez de masquer. En théorie, apt pourrait changer demain en les appelant "distributions" au lieu de "packages" (parce qu'il "n'a pas encore d'interface CLI stable") et cela casserait complètement votre pipeline. Un changement plus probable serait celui qui utilise le mot "packages" à plusieurs endroits, ce qui obligerait votre pipeline à renvoyer des informations superflues au lieu du seul nombre de packages que vous recherchez.

Mais vous n'êtes probablement pas trop inquiet à ce sujet et, de manière réaliste, il n'y a aucune raison que vous le soyez. L'interface est stable depuis des années et ne changera probablement pas de sitôt. Alors, comment faire disparaître cet avertissement ?

Dans le monde *nix, la sortie vers la ligne de commande est généralement de deux types, stdout (sortie standard) et stderr (erreur standard). Les programmes qui se comportent bien envoient leur sortie normale à stdout et tous les avertissements ou messages d'erreur à stderr. Donc, si vous voulez que les erreurs/avertissements disparaissent, vous pouvez généralement y parvenir en jetant tous les messages sur stderr en utilisant la redirection de sortie 2>/dev/null . (En anglais, c'est "redirect (> ) le deuxième canal de sortie (2 , qui est stderr) à /dev/null (qui jette tout ce qui y est envoyé)".

La réponse est donc :

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

Remarque complémentaire :dans la question, votre commande est affichée sous la forme # sudo apt... . Le # L'invite du shell implique que vous étiez probablement connecté en tant que root lors de l'utilisation de cette commande. Si vous êtes déjà root, vous n'avez pas besoin d'utiliser sudo .

En savoir plus sur l'avertissement que vous souhaitez ignorer (à partir 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.

Solution 2 :

Vous pouvez utiliser une alternative avec la commande suivante

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

La sortie devrait ressembler à ceci

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

Le -s signifie simuler, recon ou essai à blanc

du apt-get pages de manuel

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

Cette réponse a été inspirée par ce blog


Linux
  1. Comment Gzip uniquement si Thesqldump ne génère pas d'erreur ?

  2. Linux - Ionice n'a aucun effet sur les écritures non synchronisées (c'est-à-dire les écritures normales) ?

  3. L'invite Docker bash n'affiche pas la sortie couleur

  4. Comment désactiver ipv6 sur une interface spécifique sous Linux ?

  5. dans la console Linux, comment NE PAS envelopper la sortie

Comment réparer l'erreur "Le référentiel n'a pas de fichier de version" dans Ubuntu

Comment réparer l'erreur "Le référentiel n'a pas de fichier de version" dans Ubuntu

Comment désactiver le Wi-Fi sur le système Linux :méthodes GUI et CLI

Comment puis-je demander un fichier mais ne pas l'enregistrer avec Wget ?

Comment fonctionne l'interface de bouclage

GPG n'a pas assez d'entropie