Updated almost 8 years ago by Jack Aponte
Palante has a few reasons to run different versions of Drush:
drush sql-sync
, we need to use Drush 6 locally, too.Below is a solution that allows us to use Drush 6, 7 and 8 in the same environment.
I've followed the "To install for all users on the server" instructions under "Composer - One Drush for all Projects" in the Drush 7 installation documentation, adapted for different versions of Drush.
Some of our clients' servers aren't capable of running anything newer than Drush 6. If you need to run commands like drush sql-sync
against those servers from your local or dev environment, you'll need Drush 6 installed. Run the following commands as root or using sudo
.
git clone https://github.com/drush-ops/drush.git -b 6.6.0 /usr/local/src/drush6 cd /usr/local/src/drush6 composer install ln -s /usr/local/src/drush6/drush /usr/bin/drush6
Quick adaptation for sites on May First/People Link (TODO: needs improvement!)
Primarily drawn from this MFPL ticket.
First, install Composer following these instructions.
Then to install Drush:
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc source ~/.bashrc cd ~/web.warresisters.org/bin php composer.phar global require drush/drush which drush
To install Drush 7, run the following commands as root or using sudo
.
git clone https://github.com/drush-ops/drush.git -b 7.3.0 /usr/local/src/drush7 cd /usr/local/src/drush7 composer install ln -s /usr/local/src/drush7/drush /usr/bin/drush7
Replace "7.3.0" with the tag of the most recent stable 7.x release (see https://github.com/drush-ops/drush/releases).
Then install Drush 8, again running these commands as root or using sudo
.
git clone https://github.com/drush-ops/drush.git -b 8.0.5 /usr/local/src/drush8 cd /usr/local/src/drush8 composer install ln -s /usr/local/src/drush8/drush /usr/bin/drush8
Replace "8.0.5" with the tag of the most recent stable 8.x release (see https://github.com/drush-ops/drush/releases)
You can now use the drush6
, drush7
or drush8
commands to run each specific version of Drush.
EXTRA TIP: To update a Drush installation installed in this manner, run the following commands within the /usr/local/src/<drush-version>
directory:
git pull origin master git checkout tags/<new version> -b <new version> composer install
Replace <new version>
with the most recent stable release of the Drush version you're updating.
In order for Drush to work with Backdrop, you must install the Drush Backdrop commands within the Drush 8 installation itself.
Assuming that Drush 8 is installed in /usr/local/src/drush8
, as specified above:
git clone https://github.com/backdrop-contrib/drush.git /usr/local/src/drush8/commands/backdrop
As per this excellent guide from Marc van Gend of Triquanta, I've set up a script to let us switch between versions of Drush on a project-by-project basis using git configuration settings.
The script, which lives at /usr/bin/drush
and is therefore called whenever someone runs the drush
command:
#!/bin/bash version=$(git config --get drush.version) if [ "$version" = '8' ]; then drush8 "$@" elif [ "$version" = '6' ]; then drush6 "$@" else drush7 "$@" fi
In this configuration, Drush 7 is the default version of Drush. For the script above to automatically switch to a non-default version of Drush for a given project, set the drush.version
value in the git repo for the project by running git config drush.version <version>
. For example:
$ drush --version Drush Version : 7.2.0 $ git config drush.version 8 $ drush --version Drush Version : 8.0.5
If you've got Drush site aliases set up for remote sites on servers where multiple versions of Drush are available, update your aliases.drushrc.php
file to include the specific drush script that should be used on the remote site. See the example.aliases.drushrc.php file if you need help creating your aliases.drushrc.php
file or learning about %drush-script
.
An example aliases.drushrc.php
file with %drush-script
specified:
$aliases['drupal8'] = array( 'remote-host' => 'fake-dev-server.palantetech.coop', 'remote-user' => 'jack', 'root' => '/var/www/dev/drupal8', 'uri' => 'drupal8.palantetech.coop', 'path-aliases' => array( '%drush-script' => '/usr/bin/drush8', ) ); $aliases['drupal7'] = array( 'remote-host' => 'fake-dev-server.palantetech.coop', 'remote-user' => 'jack', 'root' => '/var/www/dev/drupal7', 'uri' => 'drupal7.palantetech.coop', 'path-aliases' => array( '%drush-script' => '/usr/bin/drush7', ) );