繁体   English   中英

无业游民-未安装Rails

[英]Vagrant - Rails Not Installed

最近,我不得不销毁并重新创建我的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中吗?

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 ,一切都会从头开始重建。 如果您已经安装并安装了东西,它们将不再在那里。

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

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

可能是此链接可帮助您使用Vagrant安装rvm。

RVM_Vagrant

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM