在mac M1上使用ruby-install安装ruby 2.6.6或2.7.2时,出现以下错误。Ruby 3.0.0运行良好,但是任何旧版本都会在readline中出错,并且不允许安装Ruby。
readline.c:1905:37: error: use of undeclared identifier 'username_completion_function'; did you mean 'rl_username_completion_function'?
rl_username_completion_function);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rl_username_completion_function
readline.c:79:42: note: expanded from macro 'rl_username_completion_function'
# define rl_username_completion_function username_completion_function
^
/opt/homebrew/opt/readline/include/readline/readline.h:485:14: note: 'rl_username_completion_function' declared here
extern char *rl_username_completion_function PARAMS((const char *, int));
字符串
7条答案
按热度按时间yzckvree1#
我终于在m1芯片的macbook pro上安装了旧版本的ruby,包括2.6.6,步骤如下:
首先,我必须重新安装rbenv,ruby-build和readline:
字符串
其次,使用
CONFIGURE_OPTS
破坏了我的OpenSSL构建。使用RUBY_CONFIGURE_OPTS
。我使用的是Hombrew,必须使用以下标志:型
第三,设置以下内容以允许make命令中的警告不停止构建:
型
第四,确保在通过rbenv安装时设置了arch标志:
型
第五,确保您的自制程序路径设置正确:
型
成功安装ruby 2.6.6的最后一个命令是:
型
我使用sudo为脚本给予mkdir权限。
rlcwz9us2#
这对我很有效:
字符串
所以我必须指定架构(
arch -x86_64
)和/usr/local/opt
下的openssl版本。在我的例子中,我已经安装了几个版本的openssl,我只是选择了最新的。在其他情况下,您可能需要自己下载并编译它t8e9dugd3#
我已经能够安装作为x86_64代码和3.0.1作为arm 64代码。我使用rvm,但这应该与其他事情。
1.我使用iTerm 2并制作了2份副本。一个是我使用Get Info将一个应用程序更改为使用Rosetta。在某个地方,我甚至发现了一个蓝色图标的x86应用程序。
x1c 0d1x的数据
1.我有两个版本的Homebrew。一个在/opt/homebrew/bin/brew,另一个在/usr/local/bin/brew。
1.我有2套出口在我的.zshrc配置文件。我使用体系结构为shell选择正确的对象。
字符串
有了这个,我可以在x86 shell中编译2.6.6(我假设是2.7.2),并在arm 64 shell中单独编译3.0.1。
我的rvm列表看起来像:
型
PS我仍然有麻烦,有时让Rails正确链接到mysql。ruby / rails / mysql似乎都必须是相同的架构。还在追查
t9eec4r04#
您可以使用Rbenv
RUBY_CFLAGS="-w" rbenv install 2.6.6
06odsfpq5#
对于M1用户,架构为
arm64
。启用Rosetta后,默认为x86_64
,这会导致兼容性问题。使用rvm install命令内联添加arch:字符串
vc6uscn96#
复制终端并命名它的东西我把终端罗斯
终端设备>右键单击>获取信息>使用Rosetta检查打开
Open Terminal Ros > Run
install "ruby-2.7.2"
然后运行
rvm use 2.7.2 --default
的数据
ua4mk5z47#
这就是M1的工作原理。我有Rosetta 2。
1.确保你有最新的rbenv,openssl,readline,libyaml和ruby-build
最后运行以下命令:
字符串