nginx + mrubyを動かそうとしたとき、CentOSではyumで入るrubyで動くが、EC2のamazon-linux "ami-cbf90ecb"ではrakeが動かない。ngx_mrubyをbuildしようとしたときのことだ。
[ec2-user@ip-10-1-1-67 ngx_mruby]$ ruby --version ruby 2.0.0p643 (2015-02-25) [x86_64-linux]
[ec2-user@ip-10-1-1-23 ~]$ rake -bash: rake: command not found
なんでないんや
[ec2-user@ip-10-1-1-23 ~]$ ls -la /usr/bin/rake lrwxrwxrwx 1 root root 22 Jul 15 09:55 /usr/bin/rake -> /etc/alternatives/rake
おっあるやん
[ec2-user@ip-10-1-1-23 ~]$ ls -la /etc/alternatives/rake lrwxrwxrwx 1 root root 16 Jul 15 09:55 /etc/alternatives/rake -> /usr/bin/rake2.0
ほう
[ec2-user@ip-10-1-1-23 ~]$ ls -la /usr/bin/rake2.0 ls: cannot access /usr/bin/rake2.0: No such file or directory
なるほど
で、なんか2.4はあるのね
[ec2-user@ip-10-1-1-23 ~]$ ls -la /usr/bin/rake2.4 -rwxr-xr-x 1 root root 1185 Aug 18 2017 /usr/bin/rake2.4
結論
symlinkはりなおそ
[ec2-user@ip-10-1-1-23 ~]$ sudo rm /etc/alternatives/rake [ec2-user@ip-10-1-1-23 ~]$ sudo ln -s /usr/bin/rake2.4 /etc/alternatives/rake [ec2-user@ip-10-1-1-23 ~]$ rake --version rake, version 12.0.0
/etc/alternative/rakeって何
せっかくなので軽くググる。
なるほどー、symlinkでバージョンを切り替えるのをサポートするalternativeというのがあって、なんことやらrakeは2.0の実態がなくなって2.4しかない状態になっていた感じね。
じゃalternative使って2.4向けてやればよかったのね
(再)結論
rubyを2.4に切り替えてやればいい
alternativesコマンドで確認したところ、rakeはない。
[ec2-user@ip-10-1-1-227 ~]$ sudo alternatives --display rake
rubyはなんやかんやでて、2.0と2.4をサポートしてそうな雰囲気。
[ec2-user@ip-10-1-1-227 ~]$ sudo alternatives --display ruby | grep ruby ruby - status is auto. link currently points to /usr/bin/ruby2.0 /usr/bin/ruby2.0 - priority 2000 slave ruby.pc: /usr/lib64/pkgconfig/ruby-2.0.pc slave ruby.1: /usr/share/man/man1/ruby2.0.1.gz /usr/bin/ruby2.4 - priority 243 slave ruby.pc: /usr/lib64/pkgconfig/ruby-2.4.pc slave ruby.1: /usr/share/man/man1/ruby2.4.1.gz Current `best' version is /usr/bin/ruby2.0.
切り替える。
[ec2-user@ip-10-1-1-227 ~]$ ruby -v ruby 2.0.0p643 (2015-02-25) [x86_64-linux] [ec2-user@ip-10-1-1-227 ~]$ sudo alternatives --config ruby There are 2 programs which provide 'ruby'. Selection Command ----------------------------------------------- *+ 1 /usr/bin/ruby2.0 2 /usr/bin/ruby2.4 Enter to keep the current selection[+], or type selection number: 2 [ec2-user@ip-10-1-1-227 ~]$ ruby -v ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux-gnu] [ec2-user@ip-10-1-1-227 ~]$ rake --version rake, version 12.0.0
おしまい。