apt upgradeでpyenv: xxxx: command not foundが出たときの対処法
command not found
いつも通りapt upgrade
しようとしたらiconv
コマンドが見つからなくて失敗したのでその対処法。
iconvに限らずコマンドが見つからない系の問題には似たような対処法ができると思う。
コマンドが使えるかどうか確認してみる
普通にターミナルからコマンドを使ってみて使えるかどうかを確認してみる。 今回の場合はpyenvのコマンドが見つからないエラーが出た。 もし探しているのがそのコマンドでいいなら、pyenvで環境を切り替えれば解決するはず(pyenv自体もう非推奨というか、別の方法が推奨されているので乗り換えた方がいいらしい)。
正しくないコマンドが使われている場合
今回の場合は探しているiconvはpythonのコマンドではなかったはずなので、他にiconvが存在していないかどうかを調べる。
whereis iconv
やlocate iconv
を使えば、名前や正規表現でファイルを探せる。
whereis
は実行ファイルやソースファイル、マニュアルを探すので、コマンドを探したいときはこっちの方がいい。
locate
は全ファイルから探索する(あらかじめ作成したデータベースから検索するので高速に動く)ので、どこにあるか分からない場合に使える。
見つけたiconvコマンドをフルパスで実行すると正常に動作したため、どうやら参照するコマンドが違うようである。 この辺はpyenvの問題かもしれない、現在の環境で存在しないコマンドでもサジェストを出すために補足するようになっているらしく、シェルが実行ファイルのパス探索を止めてしまう。 pyenvのパスはPATHの後半に登録すべきかもしれない。
解決策は簡単で、pyenvより先に本来の実行ファイルが参照できるようにしてやればいい。
iconv
が/usr/bin
に存在しているなら、PATH="/usr/bin/:$PATH"とすれば本来の
iconv`コマンドが先に参照される。
コマンド自体がなかった場合
インストールしよう。