问题安装bundler,说安装,但实际上并没有安装

问题描述 投票:1回答:6

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

ruby-on-rails ruby bundler rbenv
6个回答
2
投票

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

2)rvm implode

3)从$PATH~/.bash_profile清理你的~/.bashrc env变量

删除任何指向$PATHrubyirb或任何文件夹(包括那些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

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


0
投票

使用rbenv是在Mac上管理ruby安装的一个很好的选择,但似乎你完成了一系列破碎的rbenv/gem/rails/bundler安装和权限。它是不值得修复它,所以我建议只是摆脱rbenv,删除~/.rbenv目录并使用rbenv再次安装brewthis guide

其他检查方法:

  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. 不要忘记在shell init脚本中添加eval "$(rbenv init -)",例如echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

0
投票

你能试试吗?

gem install bundler --user-install

0
投票

警告:不安全的世界可写dir / Users / brianp /在PATH中工作,模式040777

看起来像访问权限的问题。试试这个:

sudo chmod 755 /Users/brianp/work

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


0
投票

尝试删除Gemfile.lockand尝试再次安装和使用bundler - 我刚刚在Github上找到了that

Bundler 2引入了一个新功能,它将根据lockfile自动在Bundler v1和v2之间切换[...]如果这样做,可以通过安装在lockfile中声明的Bundler版本来修复它。这个错误在RubyGems 3.0.0中得到修复,但现在正在为以前的主要版本的RubyGems准备好后端。我们会在有空的时候通知您。

© www.soinside.com 2019 - 2024. All rights reserved.