11
octobre
2023
Résoudre le problème «n'a pas pu trouver Command-not-found database»
16:44

Résoudre le problème «n'a pas pu trouver Command-not-found database»

11 octobre 2023 16:44

Le programme stub «commande introuvable» se déclenche lorsqu'un utilisateur saisit accidentellement un nom de commande inexistant, tel que « foobar », dans le terminal. Dans certains cas, ce programme ne fonctionne pas. Comment résoudre ce problème ?

Introduction

Comme vous le savez, les programmes sont contenus dans des paquets gérés par la commande apt, en fonction du contenu du fichier /etc/apt/sources.list et des fichiers *.list du sous-dossier sources.list.d. Lorsque la composition du dépôt change, la base de données des programmes "commande-introuvable", située dans le chemin /var/lib/commande-introuvable/, devrait être automatiquement mise à jour. Les symptômes du problème que j'ai rencontré sont les suivants :

1) Lors de l'exécution d'une commande incorrecte, un message s'affiche :
...
Impossible de trouver la base de données des programmes introuvables. Exécutez «sudo apt update» pour la remplir.
... : commande introuvable

2) Il n'existe aucune base de données pour la commande, ce qui est le cas :

ls -l /var/lib/command-not-found/

0 fichier

Cause

Après avoir exécuté l'utilitaire «apt-get update», un script Bash doit être exécuté : /etc/apt/apt.conf.d/50command-not-found. Linux LXLE ne possède pas de fichier de ce type, contrairement à Linux Mint. Les développeurs de LXLE ont-ils oublié d'inclure le fichier « 50command-not-found` » ?

Solution : Méthode 1

Copiez le fichier « /etc/apt/apt.conf.d/50command-not-found » de Linux Mint vers LXLE ou créez-le manuellement. script

Le code source est "50command-not-found" :
50command-not-found.zip

Ensuite, mettez à jour le cache en appelant apt update. Les fichiers de base de données SQLite pour le programme "command-not-found" seront également créés dans le répertoire /var/lib/command-not-found/. Les fichiers « commands.db » et « commands.db.metadata » sont créés par le script Python /usr/lib/cnf-update-db. (Python 2.7 ou supérieur doit être installé sur le système d'exploitation ; cette exigence est remplie sous Linux LXLE.)

Solution : Méthode 2

Après avoir mis à jour les paquets avec apt update, vous devez exécuter manuellement les deux commandes suivantes dans le terminal avec les privilèges sudo :

sudo rm -f /var/lib/command-not-found/.
sudo /usr/lib/cnf-update-db

Solution non fonctionnelle (issue d'Internet)

– Peut fonctionner pour d'autres distributions.

Réinstaller l'utilitaire :

sudo apt purge command-not-found
sudo apt install command-not-found
sudo apt update

Vérifier

Vérifiez la présence des fichiers «commands.db» et «commands.db.metadata»:

ls -l /var/lib/command-not-found/

Total 3156

  • -rw-r--r-- 1 root root 3223552 Oct 11 15:53 ​​​​commands.db
  • -rw-r--r-- 1 root root 3260 Oct 11 15:53 ​​​​commands.db.metadata
    Utiliser r@host:~$

Par exemple, exécutez la commande «appt»:

appt

La commande Appt est introuvable. Vous vouliez peut-être dire:
commande «ppt» depuis le fichier deb bsdgames (2.17-29)
commande «apt» depuis le fichier deb apt (2.4.10)
commande «aapt» depuis le fichier deb aapt (1:10.0.0+r36-3)
Essayez : sudo apt install

Le message « Base de données introuvable avec la commande. Exécutez « sudo apt update » pour la remplir. » ne s'affiche plus. Ce problème a été corrigé.