安装捆绑器时出现问题,表示已安装,但实际上并未安装

时间:2019-04-25 13:38:50

标签: ruby-on-rails ruby bundler rbenv

我正在建立一个新系统。我使用的是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上。

6 个答案:

答案 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环境变量

删除指向$PATHrubyirb的任何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

.binhome/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

,则Read the following information

最后一次错误的解决方法

此错误是由于安装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目录,然后再次使用brewthis guide安装rbenv

其他检查方式:

  1. 运行rbenv-doctor

    curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

  2. 删除~/.rbenv目录,再次运行rbenv init并安装所需版本的Ruby

  3. 检查which rubywhich gem指向~/.rbenv目录内的适当位置

注意事项:

  1. rbenvbrew以及gem不需要sudo,因此您永远不要将它们与它们一起使用
  2. 不要忘记在外壳初始化脚本中添加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的先前主要版本准备反向移植。当它们可用时,我们会通知您。