Japon, jeux vidéo, Drupal, ... : le blog d'un geek !
Mon blog et mes galeries photo maintenant sur un même site !
J'y parlerai de mes passions : Japon et jeux vidéo principalement, mais du reste aussi.

Utiliser Drush sous Windows

Pour mon premier post technique, je vais détailler la procédure que j'ai suivie pour faire fonctionner Drush sur mon poste de travail, qui tourne sous Windows XP Pro.

Drush, qu'est-ce que c'est ?

Drush (Drupal Shell) est un projet de la communauté Drupal, pas vraiment un module Drupal, qui expose une commande (à utiliser dans une console Shell sous Linux, ou DOS sous Windows) permettant d'exécuter certaines tâches courantes de l'administration ou du développement d'un site sous Drupal.

La configuration de Drush sous un environnement Linux est assez immédiate, et très bien documentée, mais si vient l'envie d'utiliser cet outil fantastique sous Windows, on se trouve confronté à une documentation plus succincte, et n'expliquant pas tous les pré-requis.

Le plus gros souci de l'utilisation de Drush sous Windows, c'est l'utilisation de commandes qui sont natives sous Linux, mais inexistantes en standard sous Windows (entre autres : wget, tar, gunzip, mais aussi, parce qu'elles ne sont pas forcément visibles par Drush, php, mysql ou mysqldump).

Je vais donc décrire dans les lignes qui suivent la procédure que j'ai suivie pour enfin faire fonctionner Drush sous Windows, OS qui m'est imposé sur mon poste de travail, fourni par mon employeur.

GnuWin32

GnuWin32 est le portage sous Windows d'un ensemble d'utilitaires Unix/Linux (dont patch, diff, ls, less, etc.).
GetGnuWin32 est un utilitaire permettant de télécharger puis configurer une distribution de GnuWin32.

  • Téléchargez GetGnuWin32.
  • Installez-le dans C:\Program Files\.
  • Ouvrez une ligne de commande, puis exécutez, ligne par ligne :
    cd "C:\Program Files\GetGnuWin32"
    SET GNUWIN32_MIRROR="ovh"
    download
    install

    Choisissez le serveur miroir en fonction de votre localisation (voir le fichier Readme.txt pour la liste).

  • Si le programme le nécessite, validez les options par défaut (nouvelles versions de paquets, répertoire d'installation).
  • Exécutez ensuite :
    update-links.bat
    cd gnuwin32\bin
    mv tar.exe tar.exe.old
    cp bsdtar.exe tar.exe

    On remplace l'exécutable tar standard par celui de BSD, qui est, paraît-il plus fiable (personnellement, c'est le seul que j'ai réussi à faire fonctionner).

Pour avoir accès aux commandes offertes par GnuWin32, il suffit à présent d'ouvrir une commande MS-DOS puis de lancer le script C:\Program Files\GetGnuWin32\gnuwin32\bin\set_gnuwin32.bat, qui positionne les variables d'environnement (l'option /u permet de faire un "unset").

Drush

  • Téléchargez la dernière version stable de Drush.
  • Décompressez-la où vous voulez (exemple: D:\drush).
  • Créez dans le répertoire de drush un fichier set_gnuwin32.bat (D:\drush\set_gnuwin32.bat), contenant :
    @call "C:\Program Files\GetGnuWin32\gnuwin32\bin\set_gnuwin32.bat" %1 %2 %3 %4 %5 %6 %7 %8 %9

    Ce fichier batch n'est qu'un intermédiaire vers le vrai set_gnuwin32.bat.

  • Créez dans le répertoire de drush un fichier gnudrush.bat (D:\drush\gnudrush.bat),contenant :
    @call set_gnuwin32 /s Drush
    @call drush %1 %2 %3 %4 %5 %6 %7 %8 %9
    @call set_gnuwin32 /u /s

    Ce script se comporte comme Drush, mais en se positionnant dans un environnement GnuWin32.

  • Rajoutez dans la variable d'environnement PATH les chemins vers drush, et vers les exécutables php et mysql. J'ai utilisé ceux de mon XAMPP. (Exemple : D:\xampp\mysql\bin;D:\xampp\php;D:\drush; )

C'est terminé ! Dorénavant :

  • la commande set_gnuwin32 permet de construire un environnement GnuWin32 (avec toutes les commandes Shell fournies par GnuWin32), n'importe où dans une console MS-DOS.
  • la commande gnudrush permet d'exécuter Drush dans n'importe quelle console MS-DOS (et fonctionne comme Drush).
  • la commande drush fonctionne dans un environnement GnuWin32.

Afin d'améliorer la lisibilité de la sortie de Drush, on pourra, au préalable, positionner la variable d'environnement COLUMNS à une valeur inférieure ou égale au nombre de colonnes de la console MS-DOS:

SET COLUMNS=79

(On pourra même le rajouter dans gnudrush.bat: "@SET COLUMNS=79" au début du fichier.)

N'hésitez pas à me faire part de vos retours, ou même à poser des questions, via le lien "Ajouter un commentaire" en bas de page.

Addendum : avec certaines versions de XAMPP, vous risquez de ne plus pouvoir démarrer Pidgin (voire d'autres applications) après avoir rajouté PHP dans le path et redémarré l'ordinateur.
L'explication est la suivante : dans XAMPP 1.7.1 (et d'autres avant), xampp\php contient une librairie aspell-15.dll (qui sert à la correction orthographique).
Pidgin utilise cette librairie, mais normalement à un autre emplacement, dans une autre version.
Or, si xampp\php est dans le path, Pidgin trouve cette librairie à cet endroit et du coup plante avec l'erreur suivante :

L'exception Instruction privilégiée.
(0xc0000096) s'est produite dans l'application à l'emplacement 0x013fcef6.

L'emplacement peut différer, mais le code d'exception est généralement celui-là (constaté à plusieurs reprises).

Pour corriger ce problème, il faut forcer Pidgin à charger la bonne librairie, par exemple, en rajoutant dans la variable d'environnement PATH, prioritaire au chemin xampp\php (donc plus à gauche dans la chaîne), le chemin vers cette bonne librairie Aspell (C:\Program Files\Aspell\bin par défaut).

Commentaires

autocompletion

Merci de ce post ! Ca marche nickel. Les commandes Unix marche tres bien sous windowa, parcontre l autocompletion marche pas aussi bien que sous Linux. Si il y a plusieurs choix avec l autocompletion windows se prend pas la tete il propose directement le premier en ordre alphabetique. Peux-etre aurais tu une solution a ce probleme ?

Pas de solution, non, je ne

Pas de solution, non, je ne me suis jamais posé la question de l'autocomplétion, du moment que ce que je cherchais à obtenir fonctionnait. :)
Qui plus est, je n'ai pas touché à un Windows depuis plusieurs mois...

Merci de la reponse trop

Merci de la reponse trop rapide ! J'avoue etre assez content de windows 7 qui est tres stable(sur ma machine en tout cas), tres rapide dans tous les domaines. Maintenant je trouve qu un serveur de dev en local sous windows (xampplite) est plutot lent dans l utilisation drupal, l'affichage de la liste des modules par exemple prend une plombe a s'ouvrir. Trouves-tu que sous Linux Drupal se comporte mieux en local ?
Mon but serait de trouver une install sur laquelle drush/drupal fonctionne rapidement. Qu'est-ce qu on perd comme temps dans le chargement des pages !

Bonjour Je developpe une

Bonjour

Je developpe une petite appli web et pour la partie sauvegarde j'ai besoin du mysqldump avec gzip sous windows.
J'ai fait l'install comme tu l'as indiqué mais pour moi ça coince au niveau du lancement du script set_gnuwin32.bat
il me dit que " 'c:\Program' n'est pas reconnu en tant que commande interne" .
Peux tu me donner un coup de main?
merci beaucoup d'avance

Il te manque sûrement des

Il te manque sûrement des guillemets autour du chemin vers le fichier set_gnuwin32. La ligne de commande n'apprécie pas les espaces (forcément, ça sépare deux arguments). Alors rajoute des guillemets, ça devrait marcher. ;)

Merci de m'avoir répondu Ca y

Merci de m'avoir répondu
Ca y est ça fonctionne!
Merci pour ce tutoriel c'est exactement ce que je cherchais.
Bon vent pour la suite de tes projets.

Merci d'avoir partagé tes

Merci d'avoir partagé tes recherches ! ton article m'a été très utile !!