Linux
command
Troubleshooting

パッケージ更新インストール後にコマンドが実行できない場合の対処

More than 1 year has passed since last update.

新規インストール時と更新インストール時でインストール先が異なる場合、更新インストール完了後にコマンドが実行できなくなることがある。
新規インストールと更新インストール時でインストール方法が異なる場合等に発生する可能性がある。

例: pip

pip を更新した後、↓のようなエラーが発生するになった。

# pip
-bash: /usr/bin/pip: そのようなファイルやディレクトリはありません

やったこと

  • 環境: debian
  • インストール方法:
    • 新規インストール時: aptpython-pip パッケージからインストール
    • 更新インストール時: pip install pip --update で pipを更新インストールした

原因

コマンドパスのハッシュが更新後のパスを追随できていない。

詳細

更新後も pip のファイル自体は存在する。

# type -a pip
pip は /usr/local/bin/pip です

pipコマンドを実行するとどこを見るようになっているかは、
typeコマンドをオプション無しで実行すればわかる。

# type pip
pip はハッシュされています (/usr/bin/pip)

更新後には存在しない(削除してしまった)、更新前の参照先を見ている。

# ls -l /usr/bin/pip
ls: /usr/bin/pip にアクセスできません: そのようなファイルやディレクトリはありません

対策

コマンドパスのハッシュを更新する。
そのために、以下のコマンドを実行する。

# hash -r
# 
# pip --version
pip 7.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

直った。