anyenv→goenv→golang入れようとしたときのこと。
anyenvが動かない
riywo/anyenv: all in one for **env
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
ってやるじゃないすか?
/home/<ユーザー名>/.anyenv/bin/anyenv: 行 1: ../libexec/anyenv: No such file or directory
っていうエラーが出る。eval "$(anyenv init -)"
ができてない。
ここでanyenv
コマンドで実行されてるファイルは.anyenv/bin/anyenv
のはずなので、中身を見てみる。
anyenv/anyenv at master ・ riywo/anyenv
../libexec/anyenv
実際の処理としては.anyenv/libexec/anyenv
が呼ばれてるらしい。
じゃあ絶対パスに書き換えたらどうなん。
-../libexec/anyenv
+~/.anyenv/libexec/anyenv
すると、なんかヘルプメッセージが出てくる。おかしい。
anyenv
Usage: anyenv <command> [<args>]
Some useful anyenv commands are:
commands List all available anyenv commands
local Show the local application-specific Any version
global Show the global Any version
install Install a **env
uninstall Uninstall a specific **anv
version Show the current Any version and its origin
versions List all Any versions available to **env
See `anyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/riywo/anyenv#readme
anyenc install goenv
とかanyenv version
とかやっても同じメッセージしか出ない。
goenvも動かない
ここでいったん諦めて直接goenvを入れてみたのだが、まさかの全く同じ症状が発生。やってらんない。
シンボリックリンクで解決
色々ぐぐっていたらヒントを見つけた。
Macでrbenvをgit-cloneしたときに、シンボリックリンクがおかしくなっていた件 - ゆっくり備忘録
これ、bin/anyenvを「libexec/anyenvを実行するスクリプト」じゃなくて、「libexec/anyenvそのもののシンボリックリンク」にしたらどうなの?
$ cd ~/.anyenv
$ mv bin/anyenv bin/anyenv_old #bin/anyenvをリネーム
$ ln -s $(pwd)/libexec/anyenv $(pwd)/bin/anyenv #シンボリックリンク
$ exec $SHELL -l #.bash_profileでanyenv初期化処理を実行
$ anyenv install goenv
/tmp/goenv.20170417194201.11480 ~/.anyenv
Cloning https://github.com/kaneshin/goenv.git...
Cloning into 'goenv'...
remote: Counting objects: 210, done.
remote: Total 210 (delta 0), reused 0 (delta 0), pack-reused 210
Receiving objects: 100% (210/210), 30.20 KiB | 0 bytes/s, done.
Resolving deltas: 100% (131/131), done.
~/.anyenv
Install goenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
……いけるやん!
goenvでループ
$ exec $SHELL -l
/home/<ユーザー名>/.anyenv/envs/goenv/bin/goenv: 行 1: ./../libexec/goenv: No such file or directory
そりゃgoenv直接入れてダメだったんだから同じ症状出るよね!!!!
$ cd .anyenv/
$ mv envs/goenv/bin/goenv envs/goenv/bin/goenv_old
$ ln -s $(pwd)/envs/goenv/libexec/goenv $(pwd)/envs/goenv/bin/goenv
$ anyenv versions
goenv:
goenv: couldn't find any version specified for use
解決はしたけど
はたして問題は那辺にありや。明らかに環境起因だからissueとか送る気しないですし。