新的Rails项目:“bundle install”无法在Gemfile中安装rails

5
我已经安装了一个新的Rails项目,步骤如下:
$ rails new site

然后它会执行并到达:

bundle install

但是当它试图安装一个依赖时,我收到了这个错误。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 
checking for libkern/OSAtomic.h... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling atomic_reference.c
atomic_reference.c:57:59: warning: incompatible pointer types passing 'void **' to      parameter of type 'volatile int64_t *' (aka 'volatile long long *') [-Wincompatible-pointer-types]
if (OSAtomicCompareAndSwap64(expect_value, new_value, &DATA_PTR(self))) {
                                                      ^~~~~~~~~~~~~~~
/usr/include/libkern/OSAtomic.h:507:93: note: passing argument to parameter '__theValue'   here
bool    OSAtomicCompareAndSwap64( int64_t __oldValue, int64_t __newValue, volatile int64_t   *__theValue );
                                                                                        ^
1 warning generated.
linking shared-object atomic_reference.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [atomic_reference.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/mikeguppy/.bundler/tmp/26234/gems/atomic-1.1.16 for inspection.
Results logged to /Users/mikeguppy/.bundler/tmp/26234/extensions/universal-darwin-13/2.0.0/atomic-1.1.16/gem_make.out
An error occurred while installing atomic (1.1.16), and Bundler cannot continue.
Make sure that `gem install atomic -v '1.1.16'` succeeds before bundling.

我随后尝试独立安装原子(atomic):

gem install atomic

又没有运气了。

我在 Mac OS 10.9.2 上运行 Ruby 2.0。


非常感谢您的任何帮助!


你的 Rails 版本是什么?rails -v - Leonel Galán
@Leito 我按照下面的答案卸载了Atomic,但现在我没有安装Rails了:/所以我无法使用-v了。 - moreguppy
@Leito 现在我无法安装Rails。 - moreguppy
我相信现在问题已经不同了。为了让我们能够帮助您,您需要提供更多信息(不要只说“不起作用”/“我不能”)。在评论中聊天是不鼓励的,因此请发布有关安装Rails的新问题或创建一个聊天室,以便我们可以进一步讨论。 - Leonel Galán
9个回答

4
我成功地使用了以下命令: sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install rails 这个命令是用于安装Rails的。

2

我曾经遇到过同样的问题,解决方法是安装RVM,然后安装Ruby 2.1.1(比Mavericks自带的2.0版本更高)...

rvm get stable
rvm reinstall 2.1.1

(使用最新版本,对我来说是2.1.1)

...然后运行rvm use 2.1.1确保我已经切换到使用该版本。

之后,我的gem安装顺利进行。


1
这似乎是与捆绑在Mavericks中的系统Ruby(2.0.0p247)相关的问题,请参阅此处有关错误的详细信息:https://bugs.ruby-lang.org/issues/9624 我通过安装rbenv(或如果您喜欢,则为RVM)并安装Ruby 2.1.1来解决了这个问题,以便不会影响系统Ruby版本。 在安装atomic gem时仍会收到警告,但至少不会失败。
rbenv在这里:https://github.com/sstephenson/rbenv

1
哦,只是为了明确起见,这不仅适用于使用Mavericks的Ruby版本,而且还涉及到该版本和Xcode 5.1更新的组合。新的Ruby 2.1.x只是不使用非法命令行选项。 - jwswart
胡子拉碴的 Ruby 程序员可能会想要查看 https://github.com/postmodern/chruby + https://github.com/postmodern/ruby-install。 - user246672

1

当我安装rails时,遇到了同样的问题。

我的ruby版本是1.9.3 p448,操作系统是OS X Mavericks(10.9.2)。

以下是我尝试过的方法,并且它起作用了。

$ gem install rails --version 4.0.4

[ref] http://ruby.railstutorial.org/chapters/beginning#top


1
好的,我决定试一试,它成功安装了,谢谢! - Ultimation

0

如果您使用错误版本的Ruby进行捆绑,则可能会出现此错误。检查Gemfile中的Ruby版本,然后检查ruby -v的输出。如果存在版本不匹配,请使用rvm确保您正在使用相同版本的Ruby,然后重新捆绑。

我遇到了这个确切的错误,并通过更改我使用的Ruby版本来修复它。


0

这些方法都对我没用。我自己想出了一个解决方案。问题出在json版本低于2.0的情况下。当我尝试升级json时,我收到了有关rails和sdoc依赖项问题的错误消息。以下是我最终采取的措施:

  1. 打开您的Gemfile文件。
  2. 注释掉sdoc和rails的行。
  3. 添加此行:gem 'json','> 2'
  4. 运行bundle install命令。

对我有用。


0

通过rvm在Maverick上安装Ruby 2.1.5,无问题地安装了atomic 1.1.16。


0

首先卸载任何现有的atomic gem

gem uninstall atomic

然后使用以下方式重新安装它

gem install atomic -v '1.1.16'

接下来尝试创建一个新的Rails应用程序

rails new projectname

我不知道你目前使用的是哪个版本的Rails。有时,重新安装到一个稳定版本似乎会有所帮助。如果上述步骤没有解决问题,你也可以尝试这样做。


0

我最近遇到了类似的问题,原因是Xcode自动更新到了5.1版本。这个版本存在一个与gcc相关的错误/问题。

关键在于这里:

-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning)

遗憾的是,我不得不降级 Xcode - 可以在这里下载。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接