zsh: /usr/local/bin/lolcat: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: no such file or directory
关键词: macos
zsh
lolcat
ruby
一、环境
macOS Catalina 10.15.6
目前用的终端是zsh,之前用的是bash,在系统升级后自动换成了zsh也就一直用着了。我在Mojave的时候安装了lolcat,现在发现不能用了, lolcat --help
的错误就是标题
二、后记写在前
在我成功安装了lolcat之后删除再执行 gem install lolcat
,发现成功安装上了,个人感觉应该是ruby版本的问题
三、解决方案
直接执行 gem install lolcat -n /usr/local/bin
,如果不行再一步一步往下看
重新安装 gem install lolcat
发现新错误
ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
更新一下 sudo gem update --system
https://blog.csdn.net/u013712343/article/details/106274756/ 说明可能是系统升级的问题,但是继续报错
ERROR: While executing gem … (Errno::EPERM)
Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/gem
版本有点低 ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
更新ruby brew install ruby
By default, binaries installed by gem will be placed into:
/usr/local/lib/ruby/gems/3.1.0/bin
You may want to add this to your PATH.
ruby is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble.
If you need to have ruby first in your PATH, run:
echo ‘export PATH=“/usr/local/opt/ruby/bin:$PATH”’ >> ~/.zshrc
For compilers to find ruby you may need to set:
export LDFLAGS=“-L/usr/local/opt/ruby/lib”
export CPPFLAGS=“-I/usr/local/opt/ruby/include”
根据提示依次执行
cd
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
先删一下 gem uninstall lolcat
,输入 y
(这步应该是选做的,不删也无所谓)
Remove executables:
lolcat
in addition to the gem? [Yn] y
Removing lolcat
Successfully uninstalled lolcat-100.0.1
重新安装 gem install lolcat -n /usr/local/bin
看看有没成功 lolcat --version ; lolcat --help
lolcat 100.0.1 ©2011 moe@busyloop.net
四、总结
https://linux.cn/article-5798-1.html 我在没有更新ruby的时候试过这篇博客的方法,没试通