我正在建立一个新系统。我使用rbenv而不是rvm,因为rvm改变了'cd'的定义,这只是邪恶的。
我已经安装了所需的ruby和rails版本(我认为),但是Bundler导致了问题:
turlingdrome$ gem install bundler
ERROR: While executing gem ... (Errno::EACCES)
Permission denied @ rb_sysopen - /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bundler-2.0.1/CHANGELOG.md
turlingdrome$ sudo gem install bundler
/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash/rubygems_plugin.rb:6: warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Done installing documentation for bundler after 3 seconds
1 gem installed
turlingdrome$ sudo gem uninstall bundler
Gem 'bundler' is not installed
turlingdrome$ bundler install
Traceback (most recent call last):
2: from /Users/brianp/.rbenv/versions/2.5.3/bin/bundler:23:in `<main>'
1: from /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
所以,我尝试过使用sudo一次,现在我认为权限是超级用户...所以我使用的是sudo。没什么大不了。
安装似乎工作。
当我尝试卸载时,它说它没有安装。
当我尝试运行它时,它找到了一个可执行文件,但后来说它找不到可执行文件。
我正在使用ruby 2.5.3和rails(我认为)5.2.3。
Rails崩溃:
turlingdrome$ rails -v
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/railties-5.2.3/lib/rails/app_loader.rb:53: warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Traceback (most recent call last):
4: from bin/rails:3:in `<main>'
3: from bin/rails:3:in `require_relative'
2: from /Users/brianp/work/online-reporting/config/boot.rb:6:in `<top (required)>'
1: from /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- bundler/setup (LoadError)
我认为是同样的问题。
万一这很重要,我在Mac上。
rbenv works by inserting a directory of shims at the front of your PATH:
~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin
通过一个名为rehashing的进程,rbenv在该目录中维护填充程序,以匹配每个已安装的Ruby-irb,gem,rake,rails,ruby等版本的每个Ruby命令。
垫片是轻量级可执行文件,只需将命令传递给rbenv即可。因此,安装rbenv后,当您运行rake时,您的操作系统将执行以下操作:
- 在
PATH
中搜索名为rake的可执行文件- 在
PATH
的开头找到名为rake的rbenv垫片- 运行名为
rake
的垫片,然后将命令传递给rbenv
你弄乱了你的rbenv
安装。
1)Remove ruby installation outside rbenv
3)从$PATH
或~/.bash_profile
清理你的~/.bashrc
env变量
删除任何指向$PATH
,ruby
,irb
或任何文件夹(包括那些bin可执行文件)的gem
引用。考虑评论你的$PATH
中的任何bash_profile
声明
# export PATH="$HOME/etc/bin:$PATH"
# leave the statement below
# export PATH="$HOME/.rbenv/bin:$PATH
$PATH
变量包括一个文件夹列表:
echo $PATH
home/fabrizio/.rbenv/shims:/opt/android-studio/bin:~/.scripts/bin
如果你在终端上运行gem
.bin
或home/fabrizio/.rbenv/shims
中包含的任何/opt/android-studio/bin
可执行文件都可以从终端中的任何位置执行。当你运行gem
时,执行the ruby
gem command而不是从rbenv截获,因为你在rbenv之外安装了ruby。
根据您的反馈进行更新
You must have followed this step when installing ruby 2.5.0 without rbenv所以从你的~/.bash_profile
或~/.bashrc
删除以下行
PATH="$PATH:$(ruby -e 'puts Gem.user_dir')/bin"
或任何其他线将/Users/brianp/.gem/ruby/2.5.0/bin
添加到您的$PATH
,然后uninstall ruby with apt。
Read the following information,另外总是使用gem env检查宝石的安装位置:
$ gem env home
# => ~/.rbenv/versions/<ruby-version>/lib/ruby/gems/...
如果终端中任何地方的位置不在~/.rbenv/
下,那么您将在错误的位置安装宝石。
最后一招
如果你不能从你的rm -rf ~/.gem
删除a similar approach to this post,请用/Users/brianp/.gem/ruby/2.5.0/bin
,$PATH
删除gem文件夹
解决您的最后一次错误
此错误是由安装bundler 2.0
引起的
can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
你需要删除bundler 2.0
并安装1.9.0
使用rbenv
是在Mac上管理ruby
安装的一个很好的选择,但似乎你完成了一系列破碎的rbenv/gem/rails/bundler
安装和权限。它是不值得修复它,所以我建议只是摆脱rbenv
,删除~/.rbenv
目录并使用rbenv
再次安装brew
与this guide。
其他检查方法:
rbenv-doctor
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
~/.rbenv
目录,再次运行rbenv init
并安装所需的Ruby版本which ruby
和which gem
是否指向~/.rbenv
目录中的适当位置注意事项:
rbenv
和brew
,以及gem
不需要sudo
,所以你永远不要用它们eval "$(rbenv init -)"
,例如echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
你能试试吗?
gem install bundler --user-install
警告:不安全的世界可写dir / Users / brianp /在PATH中工作,模式040777
看起来像访问权限的问题。试试这个:
sudo chmod 755 /Users/brianp/work
似乎是文件夹上的权限问题。
许可被拒绝@ rb_sysopen - /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bundler-2.0.1/CHANGELOG.md
我尝试使用chmod 755 /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/
更改上述文件/文件夹的权限
有几个帖子处理类似的主题,例如this。
尝试删除Gemfile.lock
and尝试再次安装和使用bundler - 我刚刚在Github上找到了that:
Bundler 2引入了一个新功能,它将根据lockfile自动在Bundler v1和v2之间切换[...]如果这样做,可以通过安装在lockfile中声明的Bundler版本来修复它。这个错误在RubyGems 3.0.0中得到修复,但现在正在为以前的主要版本的RubyGems准备好后端。我们会在有空的时候通知您。