Project

General

Profile

Installing Drush for working with Drupal 6-8 and Backdrop » History » Version 3

Jack Aponte, 03/29/2016 01:01 AM

1 1 Jack Aponte
h1. Installing Drush for working with Drupal 6-8 and Backdrop
2
3 3 Jack Aponte
Because Palante is still supporting a number of Drupal 6 sites, and we've fallen victim to the "weird gotcha where Drush destroys your git repo and other non-Drupal files":https://github.com/drush-ops/drush/issues/1581 that seems to happen more often with Drush 8 than other versions, we've decided to stick with Drush 7 as the default version in use at Palante. But since we are beginning to build Drupal 8 sites, we also need Drush 8 installed; Drush 8 is also better for Backdrop, which we're also working with, because with the "Backdrop Drush commands":https://github.com/backdrop-contrib/drush installed with Drush 7, "Drush stops working with Drupal 7.":https://github.com/backdrop-contrib/drush/issues/9
4 1 Jack Aponte
5
Therefore, when we're working with Drupal 6 or 7, we want to use Drush 7; when we're using Drupal 8 or Backdrop, we want to use Drush 8.
6
7
h2. Install Drush 7 and Drush 8 for all users
8
9
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:":http://docs.drush.org/en/7.x/install/.
10
11
To install Drush 7, run the following commands as root or using @sudo@.
12
13
<pre>
14
git clone https://github.com/drush-ops/drush.git -b 7.2.0 /usr/local/src/drush7
15
cd /usr/local/src/drush7
16
composer install
17
ln -s /usr/local/src/drush7/drush /usr/bin/drush7
18
</pre>
19
20
Replace "7.2.0" with the tag of the most recent stable 7.x release (see https://github.com/drush-ops/drush/releases).
21
22
Then install Drush 8, again running these commands as root or using @sudo@.
23
24
<pre>
25
git clone https://github.com/drush-ops/drush.git -b 8.0.5 /usr/local/src/drush8
26
cd /usr/local/src/drush8
27
composer install
28
ln -s /usr/local/src/drush8/drush /usr/bin/drush8
29
</pre>
30
31
Replace "8.0.5" with the tag of the most recent stable 8.x release (see https://github.com/drush-ops/drush/releases)
32
33
You can now run @drush7@ or @drush8@ to use each specific version of Drush.
34
35
Because I currently want to use Drush 8 when working with Backdrop, I'll also create a @drushbd@ alias pointing to Drush 8; later, if Backdrop needs to use a _different_ version of Drush, I can change where the @drushbd@ alias points and continue to use that command.
36
37
<pre>
38
ln -s /usr/local/src/drush8/drush /usr/bin/drushbd
39
</pre>
40
41
*EXTRA TIP:* To update version of Drush installed as outlined above, run the following commands within the @/usr/local/src/<drush-version>@ directory:
42
43
<pre>
44
git pull origin master
45
git checkout tags/7.2.0 -b 7.2.0
46
composer install
47
</pre>
48
49
Replace "7.2.0" with the most recent stable release of the Drush version you're updating.
50
51
h2. Create script to automatically switch Drush versions based on git configuration setting
52
53
As per "this excellent guide from Marc van Gend of Triquanta":https://www.triquanta.nl/blog/automatically-switch-drush-versions-project, I've set up a script to let us switch between versions of Drush on a project-by-project basis using git configuration settings.
54
55
The script, which lives at @/usr/bin/drush@ and is therefore called whenever someone runs the @drush@ command:
56
57
<pre>
58
#!/bin/bash
59
version=$(git config --get drush.version)
60
if [ "$version" = '8' ];
61
then
62
    drush8 "$@"
63
elif [ "$version" = 'backdrop' ];
64
then
65
    drushbd "$@"
66
else
67
    drush7 "$@"
68
fi
69
</pre>
70
71 2 Jack Aponte
h2. Set drush.version git variable on a per-project basis
72 1 Jack Aponte
73
For the script to automatically switch to the right version of Drush when working with Drupal 8 or Backdrop, set the @drush.version@ value in the git repo for the project by running @git config drush.version <version>@. For example:
74
75
<pre>
76
$ drush --version
77
 Drush Version   :  7.2.0
78
$ git config drush.version 8
79
$ drush --version
80
 Drush Version   :  8.0.5
81
</pre>
82
83
For Backdrop, run @git config drush.version backdrop@.
84
85 2 Jack Aponte
h2. Update drush remote aliases to use correct Drush scripts
86 1 Jack Aponte
87
If you've got aliases set up for remote sites, 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":https://github.com/drush-ops/drush/blob/master/examples/example.aliases.drushrc.php file if you need help creating your @aliases.drushrc.php@ file or learning about <code>%drush-script</code>.
88
89
An example @aliases.drushrc.php@ file with <code>%drush-script</code> specified:
90
91
<pre>
92
$aliases['drupal8'] = array(
93
  'remote-host' => 'fake-dev-server.palantetech.coop',
94
  'remote-user' => 'jack',
95
  'root' => '/var/www/dev/drupal8',
96
  'uri' => 'drupal8.palantetech.coop',
97
  'path-aliases' => array(
98
    '%drush-script' => '/usr/bin/drush8',
99
  )
100
);
101
$aliases['backdrop'] = array(
102
  'remote-host' => 'fake-dev-server.palantetech.coop',
103
  'remote-user' => 'jack',
104
  'root' => '/var/www/dev/backdrop',
105
  'uri' => 'backdrop.palantetech.coop',
106
  'path-aliases' => array(
107
    '%drush-script' => '/usr/bin/drushbd',
108
  )
109
);
110
</pre>
Go to top