11
Oktober
2023
Das Problem lösen "Konnte CO nicht findenmmand-not-found database"
16:44

Das Problem lösen "Konnte CO nicht findenmmand-not-found database"

11 Oktober 2023 16:44

Das Stub-Programm „Befehl nicht gefunden“ wird ausgelöst, wenn ein Benutzer versehentlich einen nicht vorhandenen Befehlsnamen wie „foobar“ in das Terminal eingibt. In manchen Fällen funktioniert das Programm „Befehl nicht gefunden“ nicht. Wie kann ich das Problem beheben?

Einführung

Wie Sie wissen, sind die Programme in Paketen enthalten, die vom Befehl apt basierend auf dem Inhalt der Datei /etc/apt/sources.list und der Dateien *.list im Unterordner sources.list.d verwaltet werden. Bei Änderungen der Repository-Zusammensetzung sollte die "command-not-found"-Programmdatenbank, die sich im Pfad /var/lib/command-not-found/ befindet, automatisch aktualisiert werden. Die Symptome des Problems, das ich festgestellt habe, sind die folgenden:

1) Bei der Ausführung eines falschen Befehls wird eine Meldung angezeigt
...
Could not find command-not-found database. Run 'sudo apt update' to populate it.
... : command not found

2) Es gibt keine Datenbank für den Befehl, was die Tatsache ist:

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

0 Dateien

Ursache

Nachdem der Aufruf des Dienstprogramms „apt-get update“ funktioniert hat, muss ein Bash-Skript ausgeführt werden: /etc/apt/apt.conf.d/50command-not-found. Linux LXLE verfügt nicht über eine solche Datei, Linux Mint jedoch schon. Haben die LXLE-Entwickler vergessen, die Datei „50command-not-found`“ einzubinden?

Lösung: Methode Nr. 1

Kopieren Sie die Datei „/etc/apt/apt.conf.d/50command-not-found“ von Linux Mint nach LXLE oder erstellen Sie sie manuell.
script

Der Quelltext lautet „50command-not-found“:
50command-not-found.zip

Aktualisieren Sie anschließend den Cache mit dem Aufruf von apt update. Es werden außerdem SQLite-Datenbankdateien für das Programm "command-not-found" im Verzeichnis /var/lib/command-not-found/ erstellt. Die Dateien "commands.db" und "commands.db.metadata" werden vom Python-Skript /usr/lib/cnf-update-db erstellt. (Hierzu muss Python 2.7 oder höher auf dem Betriebssystem installiert sein – die Voraussetzung in Linux LXLE ist erfüllt.)

Lösung: Methode Nr. 2

Nach der Aktualisierung der Pakete apt update müssen Sie die folgenden zwei Befehle manuell im Terminal mit sudo-Rechten ausführen:

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

Nicht funktionierende Lösung (aus dem Internet)

– kann für andere Distributionen geeignet sein.

Neuinstallation des Dienstprogramms:

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

Prüfung

Überprüfen Sie das Vorhandensein der Dateien „commands.db“ und „commands.db.metadata“:

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

Gesamt 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
    Verwendenr@host:~$

Führen Sie zum Beispiel das "falsche" Team "Appt" aus:

appt

Der Appt-Befehl wurde nicht gefunden. Möglicherweise meinten Sie:
Befehl „ppt“ von deb bsdgames (2.17-29)
Befehl „apt“ von deb apt (2.4.10)
Befehl „aapt“ von deb aapt (1:10.0.0+r36-3)
Versuchen Sie: sudo apt install

Die Meldung „Datenbank mit Befehl nicht gefunden. Führen Sie ‚sudo apt update‘ aus, um sie zu füllen.“ wird nicht mehr angezeigt. Das ist behoben.