Installing Drush for working with Drupal 6-8 and Backdrop » History » Version 1
Jack Aponte, 03/29/2016 12:59 AM
First version of new Drush documentation
1 | 1 | Jack Aponte | h1. Installing Drush for working with Drupal 6-8 and Backdrop |
---|---|---|---|
2 | |||
3 | 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" installed with Drush 7, "Drush stops working with Drupal 7.":https://github.com/backdrop-contrib/drush/issues/9 |
||
4 | |||
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 | h3. Set drush.version git variable on a per-project basis |
||
72 | |||
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 | h3. Update drush remote aliases to use correct Drush scripts |
||
86 | |||
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> |