Vagrant/VirtualBox VM provisioning: rbenv installs successfully but subsequent uses in script fail

前端 未结 3 976
南笙
南笙 2020-12-25 08:56

I am using Vagrant + VirtualBox to set up a virtual machine for my Rails app. I am working on cleaning up a .sh provisioning script that is referenced in

3条回答
  •  一个人的身影
    2020-12-25 09:34

    There another Solution to install rbenv within Vagrant Provisioning process different than both @Casper and @Diego D solutions.

    Using Next Commands before using rbenv commands

    export PATH="$HOME/.rbenv/bin:$PATH"
    export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"
    eval "$(rbenv init -)"
    

    Then run rbenv install commands without sudo -H -u vagrant bash -i -c

    Bootstrap.sh File

    #!/usr/bin/env bash
    
    sudo apt-get update
    echo "========================= install dependencies for install rbenv ==========================="
    sudo apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
    echo "========================= install rbenv =========================================="
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >>  ~/.bashrc
    echo 'eval "$(rbenv init -)"' >>  ~/.bashrc
    echo "========================= install ruby build plugin for rbenv ======================="
    git clone https://github.com/rbenv/ruby-build.git  ~/.rbenv/plugins/ruby-build
    echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
    echo "========================= install ruby v2.5.0 =========================================="
    export PATH="$HOME/.rbenv/bin:$PATH"
    export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"
    eval "$(rbenv init -)"
    rbenv install 2.5.0
    rbenv global 2.5.0
    ruby -v
    gem -v
    echo "========================= install bundler dependencies manager for ruby ====================="
    gem install bundler
    rbenv rehash
    
    

    Then VagrantFile file will include vagrant provisioning line

    deploy_config.vm.provision :shell, privileged: false, path: "bootstrap.sh"
    

    Source for my Answer from Gits by @creisor

提交回复
热议问题