Mac OS Mojave 10.14.3上安装rbenv 2.6.1失败。

5

问题

我正在尝试在Mac OS Mojave 10.14.3上下载Ruby 2.6.1,但我始终无法成功构建,也不确定错误在哪里。

请帮忙!完全迷茫 :(

当前设置:.

> rbenv install --version
ruby-build 20190130
> llvm-gcc --version
Apple LLVM version 10.0.0 (clang-1000.11.45.5)     
Target: x86_64-apple-darwin18.2.0     
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
> xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

尝试修复

我已经尝试过取消设置RUBY_CFLAGS,删除/重新下载命令行工具/rbenv/rvm,将我的开发人员目录更改为/Library/Developer/CommandLineTools。真的不知道接下来该怎么办。


代码

我已经尝试过以下两种方法:

rbenv install 2.6.1

并且

CC=gcc rbenv install 2.6.1

结果

期望结果:ruby构建成功。
实际结果:

BUILD FAILED (OS X 10.14.3 using ruby-build 20190130)
Inspect or clean up the working tree at /var/folders/0k/yx4v818d37v50bw7xmr8bvlh0000gn/T/ruby-build.20190210231226.58235
Results logged to /var/folders/0k/yx4v818d37v50bw7xmr8bvlh0000gn/T/ruby-build.20190210231226.58235.log
Last 10 log lines:
transform_mjit_header: SKIPPED to transform __inline_isnand
transform_mjit_header: SKIPPED to transform __inline_isnanf
transform_mjit_header: SKIPPED to transform __inline_isinfl
transform_mjit_header: SKIPPED to transform __inline_isinfd
transform_mjit_header: SKIPPED to transform __inline_isinff
transform_mjit_header: SKIPPED to transform __inline_isfinitel
transform_mjit_header: SKIPPED to transform __inline_isfinited
transform_mjit_header: SKIPPED to transform __inline_isfinitef
transform_mjit_header: SKIPPED to transform __sputc
ln -sf ../../../.ext/include/x86_64-darwin18/rb_mjit_min_header-2.6.1.h include/ruby-2.6.0/x86_64-darwin18/rb_mjit_min_header-2.6.1.h

从配置摘要开始的Ruby构建日志:


   Configuration summary for ruby version 2.6.1

   * Installation prefix: /Users/michelleslee/.rbenv/versions/2.6.1
   * exec prefix:         ${prefix}
   * arch:                x86_64-darwin18
   * site arch:           ${arch}
   * RUBY_BASE_NAME:      ruby
   * ruby lib prefix:     ${libdir}/${RUBY_BASE_NAME}
   * site libraries path: ${rubylibprefix}/${sitearch}
   * vendor path:         ${rubylibprefix}/vendor_ruby
   * target OS:           darwin18
   * compiler:            $(CC_WRAPPER) gcc
   * with pthread:        yes
   * enable shared libs:  no
   * dynamic library ext: bundle
   * CFLAGS:              ${optflags} ${debugflags} ${warnflags}
   * LDFLAGS:             -L. \
                          -L/Users/michelleslee/.rbenv/versions/2.6.1/lib \
                          -Wl,-pie -Wl,-headerpad_max_install_names \
                          -Wl,-dead_strip_dylibs -fstack-protector-strong \
                          -L/usr/local/lib
   * DLDFLAGS:            -L/Users/michelleslee/.rbenv/versions/2.6.1/lib \
                          -Wl,-pie -Wl,-headerpad_max_install_names \
                          -Wl,-dead_strip_dylibs \
                          -Wl,-undefined,dynamic_lookup \
                          -Wl,-multiply_defined,suppress
   * optflags:            -O3
   * debugflags:          -ggdb3
   * warnflags:           -Wall -Wextra -Wdeclaration-after-statement \
                          -Wdeprecated-declarations -Wdivision-by-zero \
                          -Wimplicit-function-declaration -Wimplicit-int \
                          -Wpointer-arith -Wshorten-64-to-32 \
                          -Wwrite-strings -Wmissing-noreturn \
                          -Wno-constant-logical-operand -Wno-long-long \
                          -Wno-missing-field-initializers \
                          -Wno-overlength-strings -Wno-parentheses-equality \
                          -Wno-self-assign -Wno-tautological-compare \
                          -Wno-unused-parameter -Wno-unused-value \
                          -Wunused-variable -Wextra-tokens
   * strip command:       /anaconda3/bin/x86_64-apple-darwin13.4.0-strip -A \
                          -n
   * install doc:         yes
   * JIT support:         yes
   * man page type:       doc

---
    BASERUBY = /usr/bin/ruby --disable=gems
    CC = ./tool/darwin-cc gcc
    LD = /anaconda3/bin/x86_64-apple-darwin13.4.0-ld
    LDSHARED = ./tool/darwin-cc gcc -dynamiclib
    CFLAGS = -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe  
    XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE -DCANONICALIZATION_FOR_MATHN
    CPPFLAGS = -I/Users/michelleslee/.rbenv/versions/2.6.1/include -D_FORTIFY_SOURCE=2 -mmacosx-version-min=10.9 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT   -I. -I.ext/include/x86_64-darwin18 -I./include -I. -I./enc/unicode/11.0.0 
    DLDFLAGS = -L/Users/michelleslee/.rbenv/versions/2.6.1/lib -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -fstack-protector-strong -Wl,-pie -framework Security -framework Foundation  
    SOLIBS = -lpthread -ldl -lobjc
    LANG = 
    LC_ALL = 
    LC_CTYPE = UTF-8
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
compiling ./main.c
compiling dmydln.c
compiling miniinit.c
compiling dmyext.c
compiling miniprelude.c
translating probes probes.d
compiling ast.c
compiling bignum.c
compiling class.c
compiling compar.c
. ./vm_opts.h
compiling compile.c
compiling complex.c
compiling cont.c
compiling debug.c
compiling debug_counter.c
compiling dir.c
compiling dln_find.c
compiling encoding.c
compiling enum.c
compiling enumerator.c
compiling error.c
compiling eval.c
compiling file.c
compiling gc.c
compiling hash.c
compiling inits.c
compiling io.c
compiling iseq.c
compiling load.c
compiling marshal.c
file.c:2679:6: warning: 'utimensat' is only available on macOS 10.13 or newer [-Wunguarded-availability-new]
        if (utimensat(AT_FDCWD, path, tsp, flags) < 0) {
            ^~~~~~~~~
/usr/include/sys/stat.h:374:5: note: 'utimensat' has been explicitly marked partial here
int     utimensat(int __fd, const char *__path, const struct timespec __times[2],
        ^
file.c:2679:6: note: enclose 'utimensat' in a __builtin_available check to silence this warning
        if (utimensat(AT_FDCWD, path, tsp, flags) < 0) {
            ^~~~~~~~~
1 warning generated.
compiling math.c
making mjit_config.h
compiling mjit_compile.c
compiling node.c
compiling numeric.c
compiling object.c
compiling pack.c
compiling parse.c
compiling proc.c
compiling process.c
compiling random.c
compiling range.c
compiling rational.c
compiling re.c
compiling regcomp.c
compiling regenc.c
compiling regerror.c
compiling regexec.c
compiling regparse.c
compiling regsyntax.c
compiling ruby.c
compiling safe.c
compiling signal.c
compiling sprintf.c
compiling st.c
compiling strftime.c
compiling string.c
compiling struct.c
compiling symbol.c
compiling thread.c
compiling time.c
compiling transcode.c
compiling transient_heap.c
compiling util.c
compiling variable.c
./revision.h unchanged
compiling vm.c
compiling vm_backtrace.c
compiling vm_dump.c
compiling vm_trace.c
compiling ./missing/explicit_bzero.c
compiling ./missing/setproctitle.c
compiling addr2line.c
compiling dmyenc.c
compiling dln.c
compiling localeinit.c
compiling prelude.c
config.status: creating ruby-runner.h
compiling array.c
compiling mjit.c
assembling coroutine/amd64/Context.S
compiling enc/ascii.c
compiling enc/us_ascii.c
compiling enc/unicode.c
compiling enc/utf_8.c
compiling enc/trans/newline.c
compiling version.c
building rb_mjit_header.h
linking miniruby
rb_mjit_header.h updated
warning: no debug symbols in executable (-arch x86_64)
warning: no debug symbols in executable (-arch x86_64)
generating encdb.h
building .ext/include/x86_64-darwin18/rb_mjit_min_header-2.6.1.h
./miniruby -I./lib -I. -I.ext/common  ./tool/transform_mjit_header.rb "./tool/darwin-cc gcc " rb_mjit_header.h .ext/include/x86_64-darwin18/rb_mjit_min_header-2.6.1.h
encdb.h updated
./tool/ifchange "--timestamp=.rbconfig.time" rbconfig.rb rbconfig.tmp
rbconfig.rb updated
generating enc.mk
creating verconf.h
verconf.h updated
compiling loadpath.c
making srcs under enc
linking static-library libruby.2.6-static.a
/anaconda3/bin/x86_64-apple-darwin13.4.0-ar: illegal option -- n
usage:  ar -d [-TLsv] archive file ...
    ar -m [-TLsv] archive file ...
    ar -m [-abiTLsv] position archive file ...
    ar -p [-TLsv] archive [file ...]
    ar -q [-cTLsv] archive file ...
    ar -r [-cuTLsv] archive file ...
    ar -r [-abciuTLsv] position archive file ...
    ar -t [-TLsv] archive [file ...]
    ar -x [-ouTLsv] archive [file ...]
make: *** [Makefile:286: libruby.2.6-static.a] Error 1
make: *** Waiting for unfinished jobs....
make[1]: Entering directory '/private/var/folders/0k/yx4v818d37v50bw7xmr8bvlh0000gn/T/ruby-build.20190210231226.58235/ruby-2.6.1'
make[1]: Nothing to be done for 'srcs'.
make[1]: Leaving directory '/private/var/folders/0k/yx4v818d37v50bw7xmr8bvlh0000gn/T/ruby-build.20190210231226.58235/ruby-2.6.1'

Transforming external functions to static:
transform_mjit_header: making external definition of 'Init_vm_stack_canary' static inline
transform_mjit_header: making external definition of 'rb_vm_opt_struct_aset' static inline
transform_mjit_header: making external definition of 'rb_vm_opt_struct_aref' static inline
transform_mjit_header: making external definition of 'rb_eql_opt' static inline
transform_mjit_header: changing definition of 'rb_equal_opt' to declaration
transform_mjit_header: changing definition of 'rb_vm_search_method_slowpath' to declaration
transform_mjit_header: making external definition of 'rb_vm_rewrite_cref' static inline
transform_mjit_header: making external definition of 'rb_vm_push_frame' static inline
transform_mjit_header: making external definition of 'rb_vm_block_ep_update' static inline
transform_mjit_header: making external definition of 'rb_vm_cref_new_toplevel' static inline
transform_mjit_header: making external definition of 'rb_vm_frame_block_handler' static inline
transform_mjit_header: making external definition of 'rb_vm_ep_local_ep' static inline
transform_mjit_header: making declaration of 'rb_vm_rewrite_cref' static inline
transform_mjit_header: making declaration of 'rb_vm_frame_block_handler' static inline
transform_mjit_header: making declaration of 'rb_vm_block_ep_update' static inline
transform_mjit_header: making declaration of 'rb_vm_ep_local_ep' static inline
transform_mjit_header: SKIPPED to transform __sigbits
transform_mjit_header: making declaration of 'Init_vm_stack_canary' static inline
transform_mjit_header: making declaration of 'rb_eql_opt' static inline
transform_mjit_header: SKIPPED to transform __sincospi
transform_mjit_header: SKIPPED to transform __sincospif
transform_mjit_header: SKIPPED to transform __sincos
transform_mjit_header: SKIPPED to transform __sincosf
transform_mjit_header: SKIPPED to transform __inline_isnormall
transform_mjit_header: SKIPPED to transform __inline_isnormald
transform_mjit_header: SKIPPED to transform __inline_isnormalf
transform_mjit_header: SKIPPED to transform __inline_signbitl
transform_mjit_header: SKIPPED to transform __inline_signbitd
transform_mjit_header: SKIPPED to transform __inline_signbitf
transform_mjit_header: SKIPPED to transform __inline_isnanl
transform_mjit_header: SKIPPED to transform __inline_isnand
transform_mjit_header: SKIPPED to transform __inline_isnanf
transform_mjit_header: SKIPPED to transform __inline_isinfl
transform_mjit_header: SKIPPED to transform __inline_isinfd
transform_mjit_header: SKIPPED to transform __inline_isinff
transform_mjit_header: SKIPPED to transform __inline_isfinitel
transform_mjit_header: SKIPPED to transform __inline_isfinited
transform_mjit_header: SKIPPED to transform __inline_isfinitef
transform_mjit_header: SKIPPED to transform __sputc
ln -sf ../../../.ext/include/x86_64-darwin18/rb_mjit_min_header-2.6.1.h include/ruby-2.6.0/x86_64-darwin18/rb_mjit_min_header-2.6.1.h

你可以尝试更新或重新安装rbenv。 - Paul Byrne
@PaulByrne,我试过了,但是还是出现了同样的错误。不过还是谢谢你的建议! - Michelle S Lee
2个回答

8
阻止构建成功完成的错误是:
/anaconda3/bin/x86_64-apple-darwin13.4.0-ar: illegal option -- n
usage:  ar -d [-TLsv] archive file ...

所以您正在使用acanconda的压缩工具,而不是macOS提供的工具。为了解决这个问题,您需要切换到macOS提供的编译工具。
您可以通过从PATH中删除acanconda并重新加载终端来实现这一点。
我不确定确切的步骤,但我认为这样做应该有效:
  • 进入您的/home/<user>/.bashrc文件,将anaconda从PATH中移除,保存文件
  • 重新加载终端(通过重启或执行source ~/.bashrc
  • rbenv install 2.1.6
目标是在Ruby构建日���中没有与anaconda相关的工具,而是使用系统提供的工具。

非常感谢!!!我从我的.bash_profile中删除了Anaconda路径,一切都完美地运行了!我已经苦思冥想了两天,再次感谢你! - Michelle S Lee
可以工作 :) 我不使用 rbenv,而是使用 ruby-install,它也很有帮助。 - Artur79

-1

因为我遇到了相同的BUILD RESULT(日志中最后10行完全相同),所以最终来到了这里,因此发布了这篇文章。

在我的情况下(因此,不同的问题,相同的症状),当我切换到Mojave后,我忘记了升级MacPort。有关MacPort的迁移过程在此处描述:https://trac.macports.org/wiki/Migration(需要一段时间)。

这是我的两分钱意见。


就像你所说的那样,这并没有解决这里的问题。 - RalfFriedl

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