Как исправить команду не найденные базы данных?

Моя недавно установленная система Ubuntu в настоящее время испытывает проблемы с хуком command-not-found:

josh@sirius:~$ invalid-command
Unable to open binary database /usr/share/command-not-found/programs.d/i386-main.db: File read error
Unable to open binary database /usr/share/command-not-found/programs.d/i386-multiverse.db: File read error
Unable to open binary database /usr/share/command-not-found/programs.d/i386-restricted.db: File read error
Unable to open binary database /usr/share/command-not-found/programs.d/i386-universe.db: File read error
invalid-command: command not found

Я попытался переустановить и dpkg-reconfigure оба command-not-found{,-data}, но, похоже, они не исправили это. Безопасно ли удалять эти файлы или мне нужно запустить какую-нибудь программу для их воссоздания? Я должен добавить, что изначально это была 32-разрядная установка, которую я переустановил с 64-разрядной версией без форматирования диска.

0
задан 26 July 2013 в 00:59

2 ответа

Файлы базы данных для 64-битной версии называются amd64-*.db, а файлы 32-битной версии - i386-*.db. Очевидно, у вас установлен 32-битный пакет, когда у вас должен был быть 64-битный пакет.

Что это значит?

apt-cache policy command-not-found{,-data}
0
ответ дан 26 July 2013 в 00:59

В 20.04.4 LTS мне помогло следующее:

$ sudo apt install --reinstall command-not-found

Пакета -data больше нет.

Я получил что-то вроде:

$ kbounce
Sorry, command-not-found has crashed! Please file a bug report at:
https://bugs.launchpad.net/command-not-found/+filebug
Please include the following information with the report:

command-not-found version: 0.3
Python version: 3.8.5 final 0
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal
Exception information:

unable to open database file
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/CommandNotFound/util.py", line 23, in crash_guard
    callback()
  File "/usr/lib/command-not-found", line 90, in main
    cnf = CommandNotFound.CommandNotFound(options.data_dir)
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 79, in __init__
    self.db = SqliteDatabase(dbpath)
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 12, in __init__
    self.con = sqlite3.connect(filename)
sqlite3.OperationalError: unable to open database file

Прямо сейчас я получаю:

$ kbounce

Command 'kbounce' not found, but can be installed with:

sudo apt install kbounce

Редактировать 2020-12-16

Проблема вернулась после перезагрузки. Я отлаживал /usr/lib/python3/dist-packages/CommandNotFound/db/db.py и обнаружил следующее:

$ ls /var/lib/command-not-found/ -l
total 3076
-rw-r----- 1 root root 3141632 gru 16 08:17 commands.db
-rw-r----- 1 root root    3253 gru 16 08:17 commands.db.metadata

Итак, БД есть, но права доступа неправильные.

Поэтому я выполнил:

$ sudo chmod -R o+r /var/lib/command-not-found/

Теперь все снова работает.

5
ответ дан 14 December 2020 в 14:10

Другие вопросы по тегам:

Похожие вопросы: