-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Installing Vagrant from Source
Installing Vagrant from source is only recommended for Advanced users with Ruby experience! We recommend downloading a pre-compiled Vagrant from https://www.vagrantup.com/downloads.html instead.
You can install from source to get the bleeding edge of Vagrant. Please note that installing Vagrant from source is rather difficult, especially if you do not have experience in Ruby.
First, you must have a modern Ruby (>= 2.0) in order to develop on Vagrant. This guide will not discuss how to install and manage Ruby. However, beware of the following pitfalls:
- Do NOT use the system Ruby - use a Ruby version manager like rvm, chruby, etc
- Ensure you have the latest version of Rubygems
- Ensure you have installed a version of Bundler that is compatible with Vagrant*
* The bundler constraint is a floating requirement in Vagrant. You will need to inspect the vagrant.gemspec
to determine the version when you are compiling from source. For example, if the gemspec says < 0.10.0
, you will need to install a version of Bundler that is lower than 0.10.0:
gem install bundler --version '< 0.10.0'
Clone Vagrant's repository from GitHub into the directory where you keep code on your machine:
$ git clone https://github.com/mitchellh/vagrant.git
Next, cd
into that path. All commands will be run from this path:
$ cd /path/to/your/vagrant/clone
Run the bundle
command to install the requirements:
$ bundle install
You can now run Vagrant by running bundle exec vagrant
from inside that directory.
In order to use your locally-installed version of Vagrant in other projects, you will need to create a binstub and add it to your path.
First, run the following command from the Vagrant repo:
$ bundle --binstubs exec
This will generate files in exec/
, including vagrant
. You can now specify the full path to the exec/vagrant
anywhere on your operating system:
$ /path/to/vagrant/exec/vagrant init -m hashicorp/precise64
Note that you will receive warnings that running Vagrant like this is not supported. It's true. It's not. You should listen to those warnings.
If you do not want to specify the full path to Vagrant (i.e. you just want to run vagrant
), you can create a symbolic link to your exec:
$ ln -sf /path/to/vagrant/exec/vagrant /usr/local/bin/vagrant
When you want to switch back to the official Vagrant version, simply remove the symlink.