我正在尝试在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脚本,它为我不寻常的rubygems目录设置了环境变量(到目前为止我没有遇到任何问题) 。这是我的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
答案 0 :(得分: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的相应值,你可以在那里添加它们。