我正在建立一个新系统。我使用的是rbenv而不是rvm,因为rvm更改了'cd'的定义,这简直就是邪恶。
我已经安装了所需版本的ruby和rails(我认为),但是捆绑程序会引起问题:
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上。
答案 0 :(得分:2)
http://www.jisf.or.jp/en/statistics/production/documents/product_s_1902.xls:
~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin
通过称为“重新哈希处理”的过程,rbenv在该目录中维护垫片,以匹配每个已安装的Ruby版本(irb,gem,rake,rails,ruby等)中的每个Ruby命令。
垫片是轻量级的可执行文件,它们仅将您的命令传递给rbenv。因此,在安装了rbenv的情况下,运行rake时,操作系统将执行以下操作:
- 在
PATH
中搜索名为rake的可执行文件- 在
PATH
的开头找到名为rake的rbenv填充物- 运行名为
rake
的填充程序,然后将命令传递给rbenv
您搞砸了rbenv
安装。
1)rbenv works by inserting a directory of shims at the front of your PATH
2)Remove ruby installation outside rbenv
3)从$PATH
或~/.bash_profile
清除~/.bashrc
环境变量
删除指向$PATH
,ruby
,irb
的任何gem
引用或包括这些bin可执行文件的任何文件夹。考虑对您的$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
时,将执行rvm implode
而不是被rbenv拦截,因为您将ruby安装在rbenv之外。
根据您的反馈进行更新
the ruby
gem command,因此从您的~/.bash_profile
或~/.bashrc
中删除以下行
PATH="$PATH:$(ruby -e 'puts Gem.user_dir')/bin"
或将/Users/brianp/.gem/ruby/2.5.0/bin
添加到您的$PATH
,然后添加You must have followed this step when installing ruby 2.5.0 without rbenv的任何其他行。
uninstall ruby with apt,此外,还要始终使用gem env检查宝石的安装位置:
$ gem env home
# => ~/.rbenv/versions/<ruby-version>/lib/ruby/gems/...
如果终端中任何地方的位置都不在~/.rbenv/
下,则说明您将宝石安装在错误的位置。
上次度假胜地
使用rm -rf ~/.gem
删除gem文件夹,如果无法从/Users/brianp/.gem/ruby/2.5.0/bin
删除$PATH
最后一次错误的解决方法
此错误是由于安装a similar approach to this post
引起的 can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
您需要删除bundler 2.0
并安装1.9.0
答案 1 :(得分:0)
使用rbenv
是在Mac上管理ruby
安装的一个不错的选择,但是看来您完成了rbenv/gem/rails/bundler
中断的安装和权限的工作。它不值得修复,因此我建议您摆脱rbenv
,删除~/.rbenv
目录,然后再次使用brew
和this guide安装rbenv
其他检查方式:
运行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
答案 2 :(得分:0)
你可以尝试吗?
gem install bundler --user-install
答案 3 :(得分:0)
似乎是文件夹上的权限问题。
权限被拒绝@ 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。
答案 4 :(得分:0)
警告:不安全的世界可写目录/ Users / brianp / work处于PATH模式040777
看起来像访问权限问题。试试这个:
sudo chmod 755 /Users/brianp/work
答案 5 :(得分:0)
尝试删除Gemfile.lock
,然后尝试再次安装和使用捆绑程序-我刚刚在Github上发现了that:
Bundler 2引入了一项新功能,它将根据锁定文件自动在Bundler v1和v2之间切换。[...]如果这样做,可以通过安装在锁定文件中声明的Bundler版本来解决。此错误已在RubyGems 3.0.0中修复,但现在正在为RubyGems的先前主要版本准备反向移植。当它们可用时,我们会通知您。