Warum wird der Handler „Befehl nicht gefunden“ für einen vorhandenen Befehl ausgelöst?

Warum wird der Handler „Befehl nicht gefunden“ für einen vorhandenen Befehl ausgelöst?

Ich hatte ein Paket (in diesem Fall Docker), für das die in den Ubuntu-Repos verfügbare Version zu alt war, also habe ich das Docker-Repo zu meinen Apt-Quellen hinzugefügt und das Paket von dort installiert.

Wenn ich es jetzt mit meinem normalen Benutzer versuche, wird der Befehl-nicht-gefunden-Handler aktiviert:

user@host:~$ docker
The program 'docker.io' is currently not installed. You can install it by typing:
sudo apt-get install docker.io

Obwohl die Binärdatei durchaus auf meinem Weg liegt:

user@host:~$ which docker
/usr/bin/docker

Und ich habe Ausführungsberechtigung dafür:

user@host:~$ /usr/bin/docker
Usage: docker [OPTIONS] COMMAND [arg...]

A self-sufficient runtime for linux containers.
....

Ich habe versucht hash -r, eine neue Login-Shell auszuführen, aber ohne Erfolg: Der Handler „Befehl nicht gefunden“ wird immer noch aktiviert.

Warum verhält es sich so? Liegt es daran, dass das Paket in den Ubuntu-Repos aufgerufen wird docker.io, das Paket in den Docker-Repos aber einfach aufgerufen wird docker?

Kann ich dieses Problem beheben, ohne es command-not-foundvollständig zu entfernen?

BEARBEITEN: So habe ich die aktuelle Version aus den Docker-Repos installiert:

sudo -i
apt-get purge docker.io
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
echo "deb https://get.docker.com/ubuntu docker main" >/etc/apt/sources.list.d/docker.list
apt-get update
apt-get install docker

EDIT2: Ich habe vergessen zu erwähnen: Ich habe überprüft, dass /usr/bin/docker kein Wrapper-Skript ist:

user@host:~$ file /usr/bin/docker
/usr/bin/docker:  ELF 64-bit LSB  executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=a5773ec80f810b977dc93bb10b4c6c6b8c2b1abd, not stripped

Antwort1

Oft handelt es sich um ein Problem mit Aliasen, z. B. Alias ​​docker=docker.io in Ihrer bashrc/zshrc... Außerdem lohnt es sich zu überprüfen, dass Version A und Version B NICHT zusammen installiert sind, da dies häufig zu Paket- und Namenskonflikten führt.

verwandte Informationen