在Mac OS X 10.8.2上安装Ruby

35

我参考了在Mac OS Lion上安装Ruby on Rails并按照Alain Beauvois的回答操作,几乎所有步骤都完成了。唯一不同的是我使用的是1.9.3而不是1.9.2。

我已经创建了.bash_profile文件,并通过open -e .bash_profile确认它存在,并添加了Alain Beauvois所述的行。

但现在出现了问题,我得到了这个错误:

Error running 'make', please read /usr/local/rvm/log/ruby-1.9.3-p374/make.log
There has been an error while running make. Halting the installation.
被引用的日志包含了这些内容:
[2013-02-02 21:41:52] make
    CC = clang
    LD = ld
    LDSHARED = clang -dynamic -bundle
    CFLAGS = -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -pipe 
    XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
    CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/rvm/usr/include -I. -I.ext/include/x86_64-darwin12.2.1 -I./include -I.
    DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace  
    SOLIBS = 
compiling regparse.c
regparse.c:582:15: error: implicit conversion loses integer precision: 'st_index_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
    return t->num_entries;
    ~~~~~~ ~~~^~~~~~~~~~~
1 error generated.
make: *** [regparse.o] Error 1

我甚至尝试过

rvm -install ruby-1.9.3-p374

但仍然会得到相同的错误。在到达这一部分之前,我确实遇到了一些奇怪的错误,但在我在它前面添加了sudo后重新运行它,它就成功了。据我所知,sudo = 用su权限/特权执行某些操作,对吗?


1
你读过 /usr/local/rvm/log/ruby-1.9.3-p374/make.log 这个文件吗? - Gumbo
1
rvm install 1.9.3 怎么样?只需输入版本号即可。 - utwang
@DuaneAdam:是的。不要尝试安装最新的补丁版本。请尝试安装1.9.3-p362。 - Linuxios
@DuaneAdam:嗯,如果你可以接受使用1.9.2而不是1.9.3的话,尝试安装192-p290。 - Linuxios
@DuaneAdam 如果你是以root身份安装的,那么直接删除/usr/local/rvm目录;否则删除$HOME/.rvm目录,然后使用我之前提到的安装程序即可。 - saihgala
显示剩余12条评论
9个回答

31

我遇到了完全相同的错误,但我使用的是brew而不是MacPorts。我需要做的只有:

brew update
brew tap homebrew/dupes
brew install apple-gcc42
rvm get stable
rvm install 1.9.3-p374

我不需要像某些指示所说的那样设置CC环境变量。希望对你有所帮助!


谢谢,这很有帮助 - 我没有意识到MacPorts和brew做了相同的一般事情,并且无法弄清楚为什么“port”命令不起作用。我仍然不确定为什么port不起作用,但我很高兴它没有,因为我的工作使用homebrew。 - Ethel Evans
提醒自己,看起来我可能没有接受Xcode命令行工具,所以我必须运行xcodebuild -license,然后阅读“rvm要求”,发现我需要brew install autoconf automake apple-gcc42 libtool pkg-config openssl readline libyaml sqlite libxml2 libxslt libksba - nevieandphil

20

如果你使用 rbenv 和 ruby-build 而不是 rvm,你需要执行以下操作:

env CC=gcc rbenv install 1.9.3-p392

如果这不奏效,尝试这个:

# this export must be done before every new ruby build
export CC=gcc
# use the version you wish to install
rbenv install 1.9.3-p392

如果不起作用,您需要首先安装gcc:

brew update
brew tap homebrew/dupes
# install apple-gcc, only once needed
brew install apple-gcc42
直到红宝石开发人员构建了与clang兼容的版本,您必须在每次构建新的红宝石版本之前导出CC变量。
直到ruby团队构建了一个与clang兼容的ruby版本之前,你需要在每次构建新的ruby版本之前导出CC变量。

1
在安装 rbenv 1.9.3-p385 之前,您实际上只需要运行 export CC=gcc - michael
是的,只需要运行导出命令,我想gcc已经包含在Xcode中了。 - Cool Guy Yo
1
这就是我所需要的。我使用fish shell,所以我的命令看起来像env CC=gcc rbenv install 1.9.3-p392 - kmcphillips

18

刚刚发现了这个,我认为这就是你需要做的。

首先,如果你还没有下载,请下载MacPorts并安装它。然后运行以下两个命令:

sudo port selfupdate
sudo port install apple-gcc42

要获取真正的UNIX GCC。然后,要安装1.9.3版本,请运行:

CC=/opt/local/bin/gcc-apple-4.2 rvm install ruby-1.9.3-p194 --enable-shared --without-tk --without-tcl

这将告诉rvm在不需要X11(在OSX 10.8中被省略)的情况下使用UNIX GCC安装Ruby,而不需要Tk或Tcl。如果您想要像readline支持、OpenSSL等功能,请查看上面链接的gist。


现在卡在了“尝试获取livm-3/1-3.1_6.darwin”,我猜测正在下载一个大文件。 - Nil
看起来下载需要很长时间,而我现在需要去睡觉了。明天一早会回复你的。我会让它在晚上下载。 - Nil
一切都完成了,下载花了一些时间。我如何知道它是否已正确安装或配置?谢谢。 - Nil
天才啊!它真的管用!如果没有Stack Overflow,我们该怎么办呢?我在El Capitan上与Ruby和Homebrew更新斗争了很久,这是谜题中的最后一块拼图。 - ED-209
@Tokn:很高兴答案对您有所帮助! - Linuxios

3
这在使用rbenv的OSX 10.8.2和XCode 4.6中也能正常运行。
$ export CC=gcc
$ rbenv install 1.9.3-p385 -v

但是也有用的是知道,如果苹果在未来更改了Xcode的命令行工具,homebrew可以安装另一个版本的gcc。


1

只是为了给列表添加另一个答案……我正在使用ruby-install,这是对我有效的方法:

CC=/usr/local/bin/gcc-4.2 ruby-install ruby 1.9.3-p0

在执行这个答案中概述的brew任务后,这对我有用。 - Paul Fioravanti

1

我刚刚进行了以下操作(在安装XCode命令行工具后):

$ export CC=gcc
$ rvm install 1.9.3

虽然它显示“Ruby 'ruby-1.9.3-p374'是使用clang构建的 - 但它不是(完全)被支持的,会有错误。” - 但它还是可以工作的。


1

这对我来说也起作用了,使用的是ruby-1.9.3-p385版本,没有安装homebrew或Macports。

export CC=gcc
rvm install 1.9.3

完成任务后,出现了“Ruby 'ruby-1.9.3-p385'是使用clang构建的,但它不被(完全)支持,可能会出现错误。”的提示信息。

0

我尝试了apple-gcc42CC=/usr/bin/gcc,但都没有成功,所以我不确定它们是否必要。我正在使用rbenv管理器,这是在安装1.9.3-p385时对我有用的方法。

brew install readline
CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" rbenv install 1.9.3-p385

这个博客上找到了它


0
记录一下:我用的是rbenv、ruby 1.9.3-p385、gcc48(brew install gcc48)在Darwin Kernel Version 15.2.0上工作良好。(编译过程中有很多警告,但我忽略了它们,ruby目前工作正常)。
只需在执行rbenv install 1.9.3-p385之前设置CC=gcc-4.8。

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