Ruby“gem”命令失败,Permission denied @ rb_sysopen

agyaoht7  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(437)

我的"宝石"命令似乎有什么东西坏了。这是我在运行"宝石"时得到的
/usr/local/lib/site_ruby/2.3.0/rubygems/stub_specification. rb:114:in data' from /usr/local/lib/site_ruby/2.3.0/rubygems/stub_specification.rb:204:in open 'from/usr/local/lib/site_ruby/2.3.0/rubygems/stub_specification. rb:114:in data' from /usr/local/lib/site_ruby/2.3.0/rubygems/stub_specification.rb:204:in valid?/usr/local/lib/site_ruby/2.3.0/rubygems/specification. rb:七百七十四:在/usr/local/lib/site_ruby/2.3.0/rubygems/specification的select' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:774:in gemspec_stubs_in '中。rb:798:在block in map_stubs' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:795:in中,每个都来自/usr/local/lib/site_ruby/2.3.0/rubygems/specification。rb:795:在/usr/local/lib/site_ruby/2.3.0/rubygems/specification中的flat_map' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:795:in map_stubs中。rb:788:在/usr/local/lib/site_ruby/2.3.0/rubygems/specification的installed_stubs' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:826:in stubs中。rb:第七百四十七章:在/usr/local/lib/site_ruby/2.3.0/rubygems的_all' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:1131:in latest_specs'中。rb:第五百四十六章:在/usr/local/lib/site_ruby/2.3.0/rubygems/gem_runner的find_latest_files' from /usr/local/lib/site_ruby/2.3.0/rubygems.rb:1111:in load_plugins中。rb:八十六:/usr/local/lib/site_ruby/2.3.0/rubygems/core_ext/kernel_require. rb:五十四:在require' from /usr/bin/gem:9:in '中
但是,如果我执行"sudo gem"命令,该命令会运行得很好。
更大的问题是我不能使用"bundle"来安装新的gem(eidogg.,fastlane)。请注意,我使用"bundle update"通过Gemfile安装gem。而失败的堆栈跟踪与上面发布的完全相同。
如何解决此问题?谢谢你,谢谢

cl25kdpy

cl25kdpy1#

当你在没有sudo的情况下运行时,你会得到这个错误,因为你在你的计算机上使用的是一些人所说的“系统”ruby;它是macOS自带的默认Ruby。如果你运行which ruby,它很可能指向/usr/bin/ruby(如果你没有安装rvmrbenv,或其他ruby版本管理器)。
默认情况下,系统ruby(包括系统gembundler命令)指向需要安装sudo的文件位置。
我建议你不要运行sudo来安装gems;相反,安装一个ruby版本管理器,比如rvm(最流行的),rbenv(也是一个流行的选择),或者asdf(我喜欢的版本管理器,因为它管理的不仅仅是ruby,如果你愿意的话)
一旦你按照说明安装了ruby版本管理器,你应该可以安装一个更新的ruby版本(系统ruby是2.3.7,最新的是2.6.0)。版本管理器还将为您的gembundle命令设置合理的路径,指向您在不使用sudo的情况下具有写入权限的路径
ruby版本管理器被强烈推荐 * 用于本地开发 *,因为它不会干扰任何可能依赖于系统ruby版本的系统依赖项,并且版本管理器允许你安装多个ruby版本,并在不同的项目中在它们之间切换。

相关问题