11
Oktober
2023
Решение проблемы "Could not find command-not-found database"
16:44

Решение проблемы "Could not find command-not-found database"

11 Oktober 2023 16:44

Утилита command-not-found срабатывает, когда пользователь ошибочно вводит в терминале имя несуществующей команды, например "foobar". В некоторых случаях программа command-not-found не работает. Как исправить?

Введение

Как известно, программы содержатся в пакетах, а пакетами управляет команда apt на основе данных файла /etc/apt/sources.list и подкаталога sources.list.d. При изменении состава репозиториев, должна автоматически обновляться база программы "command-not-found", которая находится по пути /var/lib/command-not-found/. Симптомы проблемы, с которой я столкнулся, следующие:

1) при выполнении некорректной команды выводится сообщение
...
Could not find command-not-found database. Run 'sudo apt update' to populate it.
... : команда не найдена

2) Не существует база данных для команды, о чем говорит вывод

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

0 файлов

Причина

После того как отработала команда apt-get update, должен отрабатывать Bash-скрипт /etc/apt/apt.conf.d/50command-not-found. В LXLE не такого файла, а в Linux Mint есть. Разработчики LXLE забыли положить файл 50command-not-found?

Решение: способ №1

Скопировать файл /etc/apt/apt.conf.d/50command-not-found с Linux Mint на LXLE или создать вручную.
скрипт

Исходный текст 50command-not-found:
50command-not-found.zip

После этого, обновить кеш APT UPDATE, будут созданы и файлы базы данных SQLite для программы "command-not-found" в каталоге /var/lib/command-not-found/ . Файлы "commands.db" и "commans.db.metadata" создаются Python скриптом /usr/lib/cnf-update-db. (Для этого в системе должен быть установлен Python 2.7 и выше - условие в LxLE выполнено).

Решение: способ №2

После обновления пакетов APT UPDATE нужно вручную выполнить следующие 2 команды в терминале с правами sudo:

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

Не работающее решение (из Интернет)

  • может подойти для других дистрибутивов

Переустановка утилиты:
sudo apt purge command-not-found
sudo apt install command-not-found
sudo apt update

Проверка

Проверить наличие файлов commands.db и commands.db.metadata:

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

итого 3156
-rw-r--r-- 1 root root 3223552 окт 11 15:53 commands.db
-rw-r--r-- 1 root root 3260 окт 11 15:53 commands.db.metadata
user@host:~$

Выполнить "неверную" команду, например, "appt":

appt

Команда «appt» не найдена. Возможно, вы имели в виду:
command 'ppt' from deb bsdgames (2.17-29)
command 'apt' from deb apt (2.4.10)
command 'aapt' from deb aapt (1:10.0.0+r36-3)
Try: sudo apt install

Сообщение "Could not find command-not-found database. Run 'sudo apt update' to populate it." больше не выводится.