首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac M1上安装ruby和ruby-install会导致错误

在Mac M1上安装ruby和ruby-install会导致错误
EN

Stack Overflow用户
提问于 2021-03-16 04:41:42
回答 2查看 2K关注 0票数 4

在mac M1上使用ruby-install安装ruby2.6.6或2.7.2时,会出现以下错误。Ruby 3.0.0运行良好,但是任何较旧的版本都会在readline中出错,并且不允许安装ruby。

代码语言:javascript
复制
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));
EN

回答 2

Stack Overflow用户

发布于 2021-04-14 22:59:54

我已经能够安装作为x86_64代码和3.0.1作为arm64代码。我使用rvm,但这应该适用于其他东西。

  1. 我用的是iTerm2,已经复制了2份。我使用Get Info将一个应用程序更改为使用Rosetta。我甚至在某个地方找到了x86应用程序的蓝色图标。

  1. 我有两个版本的自制软件。一个在/opt/homebrew/bin/brew中,另一个在/usr/local/bin/brew.

  1. 我的.zshrc配置文件中有两组导出。我使用该体系结构为shell选择正确的体系结构。

代码语言:javascript
复制
alias abrew="/opt/homebrew/bin/brew"

alias i="arch -x86_64"
alias ibrew="arch -x86_64  /usr/local/bin/brew"
alias irvm="arch -x86_64 rvm"

# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"

_ARCH=$(arch)
PROMPT="$_ARCH $PROMPT"

# Requires iterm2
if [[ "$_ARCH" == "i386" ]]; then
  echo -ne "\033]1337;SetColors=bg=000FC5\007"
  #usr/local is X_86
  export PATH="/usr/local/bin:$PATH"
  export PATH="/usr/local/opt:$PATH"
fi

if [[ "$_ARCH" == "arm64" ]]; then
  #usr/local is X_86
  export PATH="/opt/homebrew/bin:$PATH"
  export PATH="/opt/homebrew/opt:$PATH"
fi

这样,我就可以在x86 shell中编译2.6.6 (我假设是2.7.2),在arm64 shell中分别编译3.0.1。

我的rvm列表如下所示:

代码语言:javascript
复制
   ruby-2.4.6 [ x86_64 ]
   ruby-2.4.9 [ x86_64 ]
 * ruby-2.6.5 [ x86_64 ]
   ruby-2.6.6 [ x86_64 ]
   ruby-2.7.0 [ x86_64 ]
   ruby-2.7.2 [ x86_64 ]
=> ruby-3.0.1 [ arm64 ]

另外,我有时仍然会遇到让rails正确链接到mysql的问题。ruby / rails / mysql似乎都必须采用相同的架构。还在追查那辆车。

票数 1
EN

Stack Overflow用户

发布于 2021-04-25 10:21:14

我终于在m1芯片macbook pro上安装了老版本的ruby,包括2.6.6,步骤如下:

首先,我必须使用以下命令重新安装rbenv、ruby-build和readline:

代码语言:javascript
复制
brew reinstall rbenv ruby-build readline

其次,使用CONFIGURE_OPTS破坏了我的OpenSSL构建。请改用RUBY_CONFIGURE_OPTS。我使用的是hombrew,并且必须使用以下标志:

代码语言:javascript
复制
RUBY_CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`"

第三,设置以下内容,以允许make命令中的警告不会停止构建:

代码语言:javascript
复制
RUBY_CFLAGS="-Wno-error=implicit-function-declaration"

第四,确保在通过rbenv安装时设置了arch标志:

代码语言:javascript
复制
arch -x86_84

第五,确保您的自制路径设置正确:

代码语言:javascript
复制
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/opt:$PATH"

成功安装ruby 2.6.6的最后一个命令是:

代码语言:javascript
复制
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/opt:$PATH"
RUBY_CFLAGS="-Wno-error=implicit-function-declaration" RUBY_CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`" sudo arch -x86_64 rbenv install --verbose 2.6.6

我使用sudo将mkdir权限授予脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66645381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档