【问题标题】:Vagrant - Rails Not InstalledVagrant - 未安装 Rails
【发布时间】:2015-03-17 22:49:13
【问题描述】:

我最近不得不销毁并重新创建我的 Vagrant 实例。现在我不能运行任何 rails 命令,因为它说 Rails 没有安装。当我这样做时

Vagrant Up

我收到以下错误

default: /tmp/vagrant-shell: line 1: /home/vagrant/.rvm/scripts/rvm: No such file or directory

以下 SSH 命令以非零退出状态响应。 Vagrant 假设这意味着命令失败!

我的 Provision.sh 文件包含以下内容:

echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main "     | sudo tee -a /etc/apt/sources.list.d/pgdg.list
sudo wget --quiet -O -     https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get remove postgresql-client-9.1 postgresql-client-common         postgresql-client postgresql-common -y
sudo apt-get install postgresql-9.3 postgresql-client-9.3 libpq-dev     curl git build-essential libxslt-dev libxml2-dev -y
wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
curl -sSL https://get.rvm.io | bash -s stable --ruby
cat << EOF | sudo tee -a /home/vagrant/.bashrc
cd /vagrant
EOF

echo '# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust'     | sudo tee /etc/postgresql/9.3/main/pg_hba.conf

echo 'machine api.heroku.com
  login *****
  password ****
machine code.heroku.com
  login *****
  password *****
' | tee /home/vagrant/.netrc


echo 'ssh-rsa ***** vagrant@precise32
' | tee /home/vagrant/.ssh/id_*****.pub
chmod 0600 /home/vagrant/.netrc

sudo -u postgres psql -c "create user ***** createdb createuser     password '*****';"
    sudo /etc/init.d/postgresql restart

我已经看到一些答案(不是特定于 Vagrant),表明我必须使用 sudo 或作为 root 安装了 rvm,需要将其删除,然后再次获取 rvm。我曾尝试这样做,但我不确定它如何应用于流浪盒子,无论如何我一定是做错了,因为它没有奏效。

我需要更正/添加到我的 provision.sh 文件或我的 Vagrantfile 中吗?

【问题讨论】:

    标签: ruby-on-rails rvm vagrant


    【解决方案1】:

    Vagrant 以 root 身份运行配置文件,因此您确实会以 root 身份安装 rvm,除非您另有指定*。这对我来说也很困惑(也是一个新手),我会在配置期间安装东西,它们会“消失”。事实上,它们都被安装/设置为 root。

    *或者,您在 ssh 进入机器时手动安装了 rvm,我将在下面详细介绍。

    您可以使用su -c "source /home/vagrant/myapp/vagrant/user-config.sh" vagrant切换您的用户

    “”中的内容是您要执行的任何命令。在这种情况下,我们将切换到一个单独的 shell 文件 user-config.sh,其中包含不应以 root 身份运行的所有命令,例如安装 RVM。

    我也感觉到某种概念上的误解。每次您执行vagrant destroy 时,您的整个 虚拟机都会被破坏,硬盘驱动器等等。下次您执行vagrant up 时,一切都会从头开始重建。如果你有 ssh 并安装了东西,它们将不再存在。

    这意味着您的所有安装和配置都进入了配置文件,您不应该事后手动安装。您应该可以随时vagrant destroy

    再次阅读https://coderwall.com/p/uzkokw/configure-the-vagrant-login-user-during-provisioning-using-the-shell-provider,我希望这一次更有意义。

    【讨论】:

      【解决方案2】:

      这个链接可能会帮助您使用 Vagrant 安装 rvm。

      RVM_Vagrant

      【讨论】:

      • 谢谢。我已经看到该链接并尝试按照步骤(重新)安装 RVM,但我收到提示,提示现有文件将被覆盖。我退出了,因为我担心这可能会使我的应用程序代码面临风险。也许我会再试一次。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多