【问题标题】:Error Installing Atomic安装原子时出错
【发布时间】:2013-08-17 17:46:53
【问题描述】:

我正在尝试使用 bundle install 将 gems 安装到我的新 Ruby 项目中。我在我的 OS X 10.8.4 机器上使用 rbenv 设置了 Ruby 的版本。我收到以下错误:

An error occurred while installing atomic (1.1.13), and Bundler cannot continue.
Make sure that `gem install atomic -v '1.1.13'` succeeds before bundling.
Kikime:jazzcatalog curt$ gem install atomic
Building native extensions.  This could take a while...
Successfully installed atomic-1.1.13
1 gem installed
Kikime:jazzcatalog curt$ rbenv rehash
Kikime:jazzcatalog curt$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.1.0) 
Using i18n (0.6.5) 
Using minitest (4.7.5) 
Using multi_json (1.7.9) 
Installing atomic (1.1.13) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/Users/curt/.rbenv/versions/2.0.0-p247/bin/ruby extconf.rb 
/Users/curt/.rbenv/versions/2.0.0-p247/bin/ruby: invalid option -R  (-h will show valid       options) (RuntimeError)


Gem files will remain installed in /Volumes/Data     RAID/htdocs/jazzcatalog/vendor/bundle/gems/atomic-1.1.13 for inspection.
Results logged to /Volumes/Data RAID/htdocs/jazzcatalog/vendor/bundle/gems/atomic- 1.1.13/ext/gem_make.out

An error occurred while installing atomic (1.1.13), and Bundler cannot continue.
Make sure that `gem install atomic -v '1.1.13'` succeeds before bundling.

前两行是第一次尝试输出的结尾。如您所见,然后我按要求成功安装了 atomic。然后我再次尝试并得到同样的错误。我在安装 atomic 时看到了一些错误,但没有一个像这样。选项-R似乎有问题。由于我一开始没有输入,所以不知道在哪里改。

更新

我开始将 rbenv 设置为版本 2.0.0-p0 并运行 rails new jazz catalog -d mysql。它在同一个地方死了这个错误:

Installing atomic (1.1.13)

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/Users/curt/.rbenv/versions/2.0.0-p0/bin/ruby extconf.rb 
creating Makefile

make
compiling atomic_reference.c
 atomic_reference.c:50:9: warning: implicit declaration of function  'OSAtomicCompareAndSwap64' is invalid in C99 [-Wimplicit-function-declaration]
if (OSAtomicCompareAndSwap64(expect_value, new_value, &DATA_PTR(self))) {
    ^
1 warning generated.
linking shared-object atomic_reference.bundle

make install
/usr/bin/install -c -m 0755 atomic_reference.bundle /Volumes/Data   RAID/htdocs/jazzcatalog/vendor/bundle/gems/atomic-1.1.13/lib
usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
           [-o owner] file1 file2
   install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
           [-o owner] file1 ... fileN directory
   install -d [-v] [-g group] [-m mode] [-o owner] directory ...
make: *** [install-so] Error 64


Gem files will remain installed in /Volumes/Data     RAID/htdocs/jazzcatalog/vendor/bundle/gems/atomic-1.1.13 for inspection.
Results logged to /Volumes/Data RAID/htdocs/jazzcatalog/vendor/bundle/gems/atomic- 1.1.13/ext/gem_make.out
An error occurred while installing atomic (1.1.13), and Bundler cannot continue.
Make sure that `gem install atomic -v '1.1.13'` succeeds before bundling.

已解决 叹息 - 不处理路径中的空格

【问题讨论】:

    标签: ruby bundler rbenv


    【解决方案1】:

    我遇到了这个问题。事实证明这是由安装 Mac OS 10.9 (Mavericks) 引起的,因为 Mavericks 有一个独立于 Xcode 的新的独立命令行工具。为了解决这个问题,我删除了 /Applications/Xcode,然后通过以下方式安装了独立的命令行工具:

    注意:第一行可能不需要,见下面的 cmets

    sudo rm -rf /Applications/Xcode
    xcode-select --install
    

    然后在 OSX 弹出窗口中点击“安装”

    来源: http://www.computersnyou.com/2025/2013/06/install-command-line-tools-in-osx-10-9-mavericks-how-to/

    【讨论】:

    • 您可能必须同意新的许可协议。我 rand sudo gcc -v 以确保我拥有 4.2 版,然后它提示我同意许可协议。 'gem update' 在那之后起作用了。
    • @BlakeErickson 我认为我在完成这些步骤时不必签署任何协议。也许我以前签过。
    • 同上必须运行 sudo gcc -v 以接受许可协议。被困了几个小时,你们救了我。谢谢。
    • 我实际上不必删除 Xcode 来使其工作。第二个命令就足够了。我不明白删除 Xcode 的意义...安装命令行工具就足够了。
    • 只运行第二行也对我有用。奇怪的是,当您运行 xcode-select --help 时,--install 甚至没有被列为选项。
    【解决方案2】:

    对于那些通过谷歌搜索到达此页面的人,我在 mac 上以这种方式安装 atomic (1.1.13) 时解决了类似的问题:

        sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
    

    这似乎是因为 Xcode 更新冲突。

    【讨论】:

    • 感谢您提供解决方案。这不是一个容易调试的问题。
    • 升级到 Mavericks 后,我不得不重新创建此链接。我的旧 simplink 是 /usr/bin/llvm-gcc-4.2,我不得不更改它,使其指向 /usr/bin/llvm-gcc(注意缺少 4.2 后缀)。
    【解决方案3】:

    错误消息并没有提供任何关于真正问题的线索。 Bundler 或其调用的组件无法正确处理包含空格的目录名称。就我而言,是 .../Data RAID/... 导致了问题。一旦我将项目移动到路径中没有空格的不同驱动器,一切正常。看来问题可能只是宝石的位置。在较早的尝试中,我创建了一个项目,其中 gem 不位于包含空格的路径中,但该项目位于。就我而言,它没有任何问题。还要注意 gem install atomic 是成功的。

    【讨论】:

    • 这听起来像这个问题:bugs.ruby-lang.org/issues/show/3024 虽然说它已在 2.0.0 中修复。
    • 可能类似。我的问题是 Rails,它是一个单独的应用程序。我不知道这两个开发组之间的联系紧密,或者代码是否在应用程序之间共享。
    • 此类问题应该有 StackWTF 版本。非常感谢你@curt
    【解决方案4】:

    如果您尝试在 Mac/OSX 上安装 Atomic(或包更新 - 在 atomic 上失败) - 您将需要为您使用的任何操作系统版本安装或更新 XCode 命令行工具。

    如上所述,但我觉得这个答案有点深奥。 Atomic 需要这些工具来处理多线程。

    【讨论】:

      【解决方案5】:

      我收到了相同的错误消息,它似乎是由我的 Gemfile 中的一条(看似无害但错误的)引起的。如果正确使用(在使用 RVM 的系统上),这两行应该能够使用正确版本的 Ruby 和所需的 gemset。

      ruby '2.0.0'
      #ruby-gemset=railstut_rails_4_0 ; ruby-2.0.0-p247@railstut_rails_4_0
      

      我的印象是我只是在第二行添加了一个评论 - 但是 RVM(按设计/按预期)创建了一个名为 "*railstut_rails_4_0 ; ruby​​-2.0.0-p247@railstut_rails_4_0* 的新 gemset " 有空格和特殊字符。每次我运行 bundle install 时——即使在我更改了 Gemfile 中的名称之后——RVM 也会加载当前错误的 gemset。为了解决,我做了以下事情:

      1. $ rvm 使用 ruby​​-2.0.0-p247@railstut_rails_4_0
      2. 更新 Gemfile:以下前两行用于 RVM 设置;后跟评论供个人参考:

        红宝石'2.0.0'
        #ruby-gemset=railstut_rails_4_0
        #ruby-2.0.0-p247@railstut_rails_4_0

      3. 捆绑安装 -- 不生产

      4. 捆绑更新
      5. 捆绑安装

      【讨论】:

        【解决方案6】:

        对于那些通过谷歌搜索到这里的人:我遇到了与 atomic 1.1.14 类似的东西。

        就我而言,它实际上是 Avast(防病毒程序),它不允许我执行特定于原子的文件。

        通过从 Avast 中排除文件,然后再次运行 gem install atomic -v '1.1.14' 解决了这个问题。

        【讨论】:

          【解决方案7】:

          我使用的是 Mac OS Lion,为了解决这个问题,我安装了新的命令行工具。 步骤:打开 XCode -> 下载 -> 安装命令行工具。 就这样吧。

          【讨论】:

            【解决方案8】:

            这 100% 与路径中的空格有关。它吐出的错误显示了尝试的安装路径。恼人的错误。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-11-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-09-30
              相关资源
              最近更新 更多