在 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 在交互式提示中要求用户名的主要内容,如果未能解决你的问题,请参考以下文章