2015-03-17 3 views
0

Мне недавно пришлось уничтожить и воссоздать мой бродячий экземпляр. Теперь я не могу запустить команду rails, поскольку она говорит, что Rails не установлен. Когда я сделалVagrant - 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 ***** [email protected] 
' | 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) предполагая, что я должен быть установлен RVM, используя Sudo или как корень и необходимо удалить его, а затем снова получите rvm. Я пытался это сделать, но я не уверен, как это относится к коробке с бродягой и, во всяком случае, я, должно быть, сделал это неправильно, так как это не сработало.

Есть ли что-то, что нужно для исправления/добавления в файл provision.sh или в мой Vagrantfile?

ответ

0

Возможно, эта ссылка поможет вам установить rvm с помощью Vagrant.

RVM_Vagrant

+0

Спасибо. Я видел эту ссылку и пытался выполнить шаги, чтобы (повторно) установить RVM, но я получил подсказку о том, что существующие файлы будут перезаписаны. Я отказался, поскольку опасался, что это может привести к риску моего кода приложения. Возможно, я дам ему еще один шаг. – willcom

2

Vagrant запускает файл продовольствования как корень, так что вы бы действительно установили RVM как корень, если не указано иное *. Это было довольно запутанным для меня (также новичком), я бы установил вещи во время подготовки, и они «исчезли». Фактически, все они были установлены/установлены как root.

* Или вы вручную установили rvm, когда ssh'd в машину, на которую я коснусь ниже.

Вы можете переключить пользователя, используя su -c "source /home/vagrant/myapp/vagrant/user-config.sh" vagrant

То, что происходит в «» любая команда, которую вы хотите выполнить. В этом случае мы переходим к отдельному файлу оболочки user-config.sh, который содержит все команды, которые не должны запускаться с правами root, например, установка RVM.

Я также чувствую концептуальное недоразумение. Каждый раз, когда вы делаете vagrant destroy, ваш весь виртуальная машина уничтожена, жесткие диски и все. В следующий раз, когда вы сделаете vagrant up, все будет восстановлено с нуля. Если у вас есть ssh'd и установлены, они больше не будут там.

Это означает, что вся ваша установка и конфигурация входит в файл инициализации, и вы не должны устанавливать вещи вручную после факта. Вы должны быть в состоянии vagrant destroy в любое время.

Прочтите еще https://coderwall.com/p/uzkokw/configure-the-vagrant-login-user-during-provisioning-using-the-shell-provider, я надеюсь, что на этот раз это будет иметь больше смысла.

Смежные вопросы