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-found
vollstä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.