【问题标题】:Errno::EEXIST File Exists error when installing 'ferret' gem from local .gem file从本地 .gem 文件安装“ferret”gem 时 Errno::EEXIST 文件存在错误
【发布时间】:2011-05-29 16:30:44
【问题描述】:

我正在尝试在 RHEL zlinux(s390x 架构)机器上安装 ferret ruby​​ gem,并尝试在 patching it so that it will compile 之后安装 .gem 文件。

但即使尝试安装原始获取的 gem,它也会失败,如下所示:

[ me@s390x ]$ sudo gem fetch ferret
Downloaded ferret-0.11.6
[ me@s390x ]$ sudo gem install -lV ferret-0.11.6.gem 
Installing gem ferret-0.11.6
Using local gem /home/rubyusr/rubygems/gems/cache/ferret-0.11.6.gem
/home/rubyusr/rubygems/gems/gems/ferret-0.11.6/bin
ERROR:  While executing gem ... (Errno::EEXIST)
    File exists - /home/rubyusr/rubygems/gems/gems/ferret-0.11.6/bin

在运行此命令之前,上述与“ferret”相关的目录或文件都不存在。

同样奇怪的是/home/rubyusr/rubygems/gems/gems/ferret-0.11.6/bin 是一个目录,尽管这可能是一个正常的抱怨。

最后一个复杂的因素是,当我运行gem 命令时,我实际上正在运行一个 shell 脚本,它为我不寻常的 ruby​​gems 目录设置环境变量(到目前为止,我没有遇到任何问题)。这是我的gem shell 脚本:

#!/bin/bash

export GEM_HOME=/home/rubyusr/rubygems/gems
export GEM_PREFIX=/home/rubyusr/rubygems
export RUBYLIB=$GEM_PREFIX/lib:/usr/lib/ruby:/usr/lib/ruby/site_ruby:/usr/lib/site_ruby
export GEM_PATH=$GEM_HOME

OUR_GEM_COMMAND=$GEM_PREFIX/bin/gem

$OUR_GEM_COMMAND $@

编辑:

我忘了补充一下,正常运行gem install命令好像不会导致这个错误(但是ferret编译失败),报错:

posh.h:515:4: error: #error POSH cannot determine target CPU

【问题讨论】:

    标签: ruby linux rubygems rhel ferret


    【解决方案1】:

    Debian 中有一个错误要求添加对 arm64 的支持: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770922

    它需要在文件 ext/posh.h 中添加几行来添加对该 CPU 的支持:

    --- a/ext/posh.h
    +++ b/ext/posh.h
    @@ -512,6 +512,11 @@
    #  define POSH_CPU_STRING "PA-RISC"
    #endif
    
    +#if defined __aarch64__
    +#  define POSH_CPU_AARCH64 1
    +#  define POSH_CPU_STRING "AArch64"
    +#endif
    +
    #if !defined POSH_CPU_STRING
    #  error POSH cannot determine target CPU
    #  define POSH_CPU_STRING "Unknown" /* this is here for Doxygen's  benefit */
    

    添加对 s390 的支持是关于添加这些行:

    #if defined __s390__
    #  define POSH_CPU_S390 1
    #  define POSH_CPU_STRING "S/390"
    #endif
    

    如果您知道 S390/X 的对应值,可以在其中添加。

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      相关资源
      最近更新 更多