Project

General

Profile

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

Jack Aponte, 03/29/2016 09:30 PM
Added Drush 6

1 1 Jack Aponte
h1. Installing Drush for working with Drupal 6-8 and Backdrop
2
3 6 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 Finally, because we're interacting with some remote servers that can't support versions of Drush above 6, we also need to be able to use Drush 6 on occasion.
4 1 Jack Aponte
5 6 Jack Aponte
Below is a solution that allows us to use Drush 6, 7 and 8 in the same environment.
6 1 Jack Aponte
7 6 Jack Aponte
h2. Install Drush 6, 7 and 8 for all users
8 1 Jack Aponte
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 6 Jack Aponte
If you also need to work with Drush 6--for example, when you need to run commands like @drush sql-sync@ against remote servers that can't run Drush 7 or later--you can install it in the same manner.
34 1 Jack Aponte
35 6 Jack Aponte
<pre>
36
git clone https://github.com/drush-ops/drush.git -b 6.6.0 /usr/local/src/drush6
37
cd /usr/local/src/drush6
38
composer install
39
ln -s /usr/local/src/drush6/drush /usr/bin/drush6
40
</pre>
41
42
You can now use the @drush6@, @drush7@ or @drush8@ commands to run each specific version of Drush.
43
44 1 Jack Aponte
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.
45
46
<pre>
47
ln -s /usr/local/src/drush8/drush /usr/bin/drushbd
48
</pre>
49
50
*EXTRA TIP:* To update version of Drush installed as outlined above, run the following commands within the @/usr/local/src/<drush-version>@ directory:
51
52
<pre>
53
git pull origin master
54
git checkout tags/7.2.0 -b 7.2.0
55
composer install
56
</pre>
57
58
Replace "7.2.0" with the most recent stable release of the Drush version you're updating.
59
60 5 Jack Aponte
h2. Install Backdrop Drush commands
61 4 Jack Aponte
62
In order for Drush to work with Backdrop, you must install the "Drush Backdrop commands":https://github.com/backdrop-contrib/drush within the Drush 8 installation itself.
63
64
Assuming that Drush 8 is installed in @/usr/local/src/drush8@, as specified above:
65
66
<pre>
67
git clone https://github.com/backdrop-contrib/drush.git /usr/local/src/drush8/commands/backdrop
68
</pre>
69
70 1 Jack Aponte
h2. Create script to automatically switch Drush versions based on git configuration setting
71
72
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.
73
74
The script, which lives at @/usr/bin/drush@ and is therefore called whenever someone runs the @drush@ command:
75
76
<pre>
77
#!/bin/bash
78
version=$(git config --get drush.version)
79
if [ "$version" = '8' ];
80
then
81
    drush8 "$@"
82
elif [ "$version" = 'backdrop' ];
83
then
84
    drushbd "$@"
85 6 Jack Aponte
elif [ "$version" = '6' ];
86
  then
87
  drush6 "$@"
88 1 Jack Aponte
else
89
    drush7 "$@"
90
fi
91
</pre>
92
93 2 Jack Aponte
h2. Set drush.version git variable on a per-project basis
94 1 Jack Aponte
95
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:
96
97
<pre>
98
$ drush --version
99
 Drush Version   :  7.2.0
100
$ git config drush.version 8
101
$ drush --version
102
 Drush Version   :  8.0.5
103
</pre>
104
105
For Backdrop, run @git config drush.version backdrop@.
106
107 2 Jack Aponte
h2. Update drush remote aliases to use correct Drush scripts
108 1 Jack Aponte
109
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>.
110
111
An example @aliases.drushrc.php@ file with <code>%drush-script</code> specified:
112
113
<pre>
114
$aliases['drupal8'] = array(
115
  'remote-host' => 'fake-dev-server.palantetech.coop',
116
  'remote-user' => 'jack',
117
  'root' => '/var/www/dev/drupal8',
118
  'uri' => 'drupal8.palantetech.coop',
119
  'path-aliases' => array(
120
    '%drush-script' => '/usr/bin/drush8',
121
  )
122
);
123
$aliases['backdrop'] = array(
124
  'remote-host' => 'fake-dev-server.palantetech.coop',
125
  'remote-user' => 'jack',
126
  'root' => '/var/www/dev/backdrop',
127
  'uri' => 'backdrop.palantetech.coop',
128
  'path-aliases' => array(
129
    '%drush-script' => '/usr/bin/drushbd',
130
  )
131
);
132
</pre>
Go to top