
我有一個軟體包(在本例中為 Docker),Ubuntu 存儲庫中的可用版本太舊,因此我將 Docker 存儲庫添加到我的 apt 源中並從那裡安裝了該軟體包。
現在,對於我的普通用戶,當我嘗試運行它時,命令未找到處理程序將啟動:
user@host:~$ docker
The program 'docker.io' is currently not installed. You can install it by typing:
sudo apt-get install docker.io
雖然二進位檔案在我的路徑中,但沒問題:
user@host:~$ which docker
/usr/bin/docker
我確實有執行權限:
user@host:~$ /usr/bin/docker
Usage: docker [OPTIONS] COMMAND [arg...]
A self-sufficient runtime for linux containers.
....
我嘗試過hash -r
,我嘗試運行一個新的登入 shell,但無濟於事:命令未找到處理程序仍然啟動。
為什麼它會這樣?是因為Ubuntu儲存庫中的套件被調用docker.io
,但Docker儲存庫中的套件被調用了docker
?
我可以在不完全刪除的情況下解決這個問題command-not-found
嗎?
編輯:我如何從 docker 儲存庫安裝最新版本:
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:我忘了提及:我檢查了 /usr/bin/docker 不是包裝腳本:
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
答案1
通常這是別名的問題,例如。 bashrc/zshrc 中的 alias docker=docker.io... 另外值得檢查的是版本 A 和版本 B 沒有安裝在一起,這通常會導致套件和命名衝突。