在 Ruby 安装期间,RVM 在交互式提示中要求用户名

Posted

技术标签:

【中文标题】在 Ruby 安装期间,RVM 在交互式提示中要求用户名【英文标题】:RVM demands username in interactive prompt during Ruby install 【发布时间】:2016-07-11 10:13:36 【问题描述】:

我正在尝试使用 Ansible 安装 RVM,以便在远程 (RedHat 6.x) 系统上安装 Ruby 的更新版本。我尝试了两个独立的 Ansible-RVM 剧本(rvm/rvm1-ansible 和 newmen/ansible-rvm),但它们都表现出相同的行为:它们都达到了剧本指示 RVM 安装 Ruby 的步骤,然后停止直到我取消该过程:

TASK: [ansible-rvm | installing Ruby as root]
*********************************
<HOST.DOMAIN.xyz>
<HOST.DOMAIN.xyz>
<HOST.DOMAIN.xyz> IdentityFile=/Users/USER/.ssh/private-key-file ConnectTimeout=10 PasswordAuthentication=no KbdInteractiveAuthentication=no ControlPath=/Users/USER/.ansible/cp/ansible-ssh-%h-%p-%r PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey ControlMaster=auto ControlPersist=60s
<HOST.DOMAIN.xyz>
<HOST.DOMAIN.xyz> IdentityFile=/Users/USER/.ssh/private-key-file ConnectTimeout=10 'sudo -k && sudo -H -S -p "[sudo via ansible, key=KEY] password: " -u root /bin/sh -c '"'"'echo SUDO-SUCCESS-KEY; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/USER/.ansible/tmp/ansible-tmp-dir/command; rm -rf /home/USER/.ansible/tmp/ansible-tmp-dir/ >/dev/null 2>&1'"'"'' PasswordAuthentication=no KbdInteractiveAuthentication=no ControlPath=/Users/USER/.ansible/cp/ansible-ssh-%h-%p-%r PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey ControlMaster=auto ControlPersist=60s
^CERROR: interrupted

原因似乎是 RVM 需要某种登录信息。当我通过 SSH 连接到有问题的主机以手动运行 RVM 时,我会收到提示 Username::

$ rvm install ruby-2.2.2
Searching for binary rubies, this might take some time.
No binary rubies available for: redhat/6/x86_64/ruby-2.2.2.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for redhat.
Enabling optional repository
Username: ^C
User interrupted process.

无论rvm命令是否在sudo下运行,都会出现上述情况。

我找不到任何关于 RVM 请求的登录名/用户名的文档,也找不到任何关于我可以应用以禁用交互性的标志或配置的说明;事实上,我还没有找到任何与 RVM 结合使用的登录提示。有没有人遇到过这个问题?

【问题讨论】:

您是要在系统范围内安装 RVM 还是本地用户?系统范围需要sudo 访问权限。你在使用 RVM 维护者推荐的installation commands 吗?在过去与他们的对话中,他们推荐了安装 RVM 的用户本地版本。 我对 CentOS7 上的 rvm_io.rvm1-ruby 没有任何问题。我首先必须创建 /usr/local/bin 才能让它工作。从来没有问过我的用户名。 【参考方案1】:

原因是rvm正在尝试安装系统要求,需要输入sudo密码。

我已经在我的 rvm1-ansible here 的分支中修复了这个commit

在 Ubuntu 中为我工作。

---
- name: Configure servers with ruby support for single user
  hosts: newservers
  become: yes

  roles:
    -  role: rvm_io.ruby,
        tags: ruby,
        rvm1_rubies: [2.3.3],
        rvm1_user: 'sudouser',
        rvm1_install_flags: '--auto-dotfiles --user-install',
        rvm1_install_path: '/home/ ansible_user /.rvm',
      

使用 sudo 用户启动任务:

ansible-playbook -i hosts.ini ruby_script.yml --user sudouser --ask-sudo-pass

【讨论】:

以上是关于在 Ruby 安装期间,RVM 在交互式提示中要求用户名的主要内容,如果未能解决你的问题,请参考以下文章

deepin15.11使用RVM安装ruby

mac下升级ruby环境版本

centos 6.x安装rvm 配置 Ruby开发环境

如何在不为 RVM 用户授予 sudo 访问权限的情况下安装 RVM 系统要求

Deepin下安装ruby开发环境

如何使用 RVM 更新 Ruby 解释器?