Probleme mit Drush
Eingetragen von SaarlandToday (264)
am 29.04.2021 - 14:20 Uhr in
am 29.04.2021 - 14:20 Uhr in
Ich bekomme Drush nicht zum laufen :(
Ich versuche auf einem neuen Server drush zu installieren.
Ich gehe genau so vor wie es auf https://tubemint.com/installing-drush-with-composer/ beschrieben ist.
Composer funktioniert einwandfrei, aber wenn ich nach der Installation von Drush versuche drush aufzurufen erhalte ich immer die Meldung das drush nicht installiert ist.
Was mache ich falsch, bzw. wie kann ich drush zum laufen bringen
BS ist ubuntu 20.04 php 7.4.x
- Anmelden oder Registrieren um Kommentare zu schreiben
Du mußt dafür sorgen, daß
am 29.04.2021 - 21:36 Uhr
Du mußt dafür sorgen, daß Dein Suchpfad für Komandos ($PATH) auch das Verzeichis vendor/bin beinhaltet, in das der Composer drush ablegt. Bei mir ist das $HOME/vendor/bin.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Drush im Projekt installieren
am 24.05.2021 - 11:03 Uhr
Ab Drupal 8 und mit neueren Drush-Versionen ist es angeraten Drush direkt im Projekt d.h. über das composer.json zu installieren, mit dem auch das Drupal Projekt verwaltet wird. Siehe auch: https://www.drush.org/latest/install/
Und dann kann man Drush z.B. über das Web-Root-Verzeichnis relativ aus dem "außen" liegenden bin Verzeichnis (Composer default "vendor/bin") aufrufen mit
../vendor/bin/drush *command*
.Nachtrag: Ich habe gerade mal die Anleitung auf Tubemint überflogen, die offensichtlich ein globale Installation empfiehlt, welche aber von den Drush-Entwicklern nicht mehr empfohlen wird. Bezüglich alter Drupal 6 und 7 Projekte kann man Drush auch irgendwo installieren und nutzen. Hilfreich ist teilweise auch ein ~/bin Verzeichnis z.B. auch mit Symlink zu einer alternativen PHP Version, sofern auf einem System mehrere PHP Versionen im Einsatz sind.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Dafür kann man Drush Launcher einsetzen
am 25.05.2021 - 03:53 Uhr
Ab Drupal 8 und mit neueren Drush-Versionen ist es angeraten Drush direkt im Projekt d.h. über das composer.json zu installieren, mit dem auch das Drupal Projekt verwaltet wird. Siehe auch: https://www.drush.org/latest/install/
Und dann kann man Drush z.B. über das Web-Root-Verzeichnis relativ aus dem "außen" liegenden bin Verzeichnis (Composer default "vendor/bin") aufrufen mit
../vendor/bin/drush *command*
.https://github.com/drush-ops/drush-launcher#drush-launcher
Drupal === lesen!
==============
WP? Auch cool!
https://intempore.com.co
Man kann drush auch auf
am 26.05.2021 - 13:33 Uhr
Man kann drush auch auf projektbezogener Basis ohne den relativen Pfad- Bestandteil vendor/bin/drush mit einem Alias nutzen.
Dazu in den Projektordner wechseln und dann folgenden Befehl eingeben:
echo "alias drush='vendor/bin/drush'" >> .bashrc
Die Konfig noch laden mit:
source .bashrc
und fertig.
Edit: Pfad korrigiert
glycid schrieb Man kann drush
am 26.05.2021 - 03:22 Uhr
Man kann drush auch auf projektbezogener Basis ohne den relativen Pfad- Bestandteil vendor/bin/drush mit einem Alias nutzen.
Dazu in den Projektordner wechseln und dann folgenden Befehl eingeben:
echo "alias drush='~/vendor/bin/drush'" >> .bashrc
Die Konfig noch laden mit:
source .bashrc
und fertig.
Sehr cooler Tipp!
Drupal === lesen!
==============
WP? Auch cool!
https://intempore.com.co
Kleine Korrektur und zusätzliche Tipps für Drush cli aliase
am 26.05.2021 - 13:01 Uhr
Man kann drush auch auf projektbezogener Basis ohne den relativen Pfad- Bestandteil vendor/bin/drush mit einem Alias nutzen.
Dazu in den Projektordner wechseln und dann folgenden Befehl eingeben:
echo "alias drush='~/vendor/bin/drush'" >> .bashrc
Die .bashrc wird nicht in jedem Betriebssystem einfach so genutzt z.B. nicht unter Mac OS usw. Vor allem wird nicht überall per default die bash shell benutzt. Aber grundsätzlich sind aliase sehr nützlich und auch unter anderen Shells nutzbar. Allerdings würde ich nicht empfehlen diese einfach via "echo" Befehl in eine Config-Datei wie z.B. ".bashrc" hinein zu pushen.
Und nun zur Fehlerkorrektur: "~" steht für das Home-Verzeichnis und ist auch in der CLI Variable $HOME hinterlegt. Und das obige Beispiel zeigt damit wieder auf das vendor/bin im Home-Verzeichnis und ist nicht relativ. In der Logik der projektbezogenen installation brauchen wir ".." um in das nächst höhere Verzeichnis zu gelangen. Und da ich Tipp-Faul bin habe ich für diesen relativen Alias auch "dr" als cmd genutzt und lasse es in unseren Verwaltungs-Skripten auch automatisch in allen Systemen konfigurieren als:
alias dr='../vendor/bin/drush'
Dazu kommen dann bei uns noch diverse andere automatisch konfigurierte aliase auch mit komplett absoluten Pfaden zu Drush inkl. der Übergabe diverser Parameter wie "--root" und "--uri" und auch commands, da diverse Commands die Arbeits-Domain benötigen oder bequemer nutzbar sind wie z.B. das "uli" Command, das dann die komplette URL zum Onetime-Login-Link ausgibt.
# Nachträgliche Ergänzung zum Drush Launcher:
Den kenne ich aber habe teilweise auch schon Probleme damit gehabt. Selbst das "--root" flag in Drush macht manchmal Probleme so daß ich aktuell dazu tendiere, bei wichtigen Operationen (z.B. drush upbd) in Produktiv-Systemen, diese aus dem Web-Root heraus mit "dr" (siehe oben) auszuführen.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
C_Logemann schrieb Die
am 26.05.2021 - 13:33 Uhr
Die .bashrc wird nicht in jedem Betriebssystem einfach so genutzt z.B. nicht unter Mac OS
Natürlich nutzt die MacOS Shell .bashrc
Und nun zur Fehlerkorrektur: "~" steht für das Home-Verzeichnis
Ja, ist aus Versehen mit reingerutscht. Aber ganz ehrlich: Das ist doch jedem klar, dass, wenn ich in's Projektverzeichnis wechsel, der Pfad vendor/bin/drush sein muss. (und nicht ../vendor/bin/drush, weil das Projektverzeichnis in der Regel die oberste Ebene ist).
Alias-Vorschläge entsprechend Projekt, OS und User anpassen
am 26.05.2021 - 14:35 Uhr
Die .bashrc wird nicht in jedem Betriebssystem einfach so genutzt z.B. nicht unter Mac OS
Natürlich nutzt die MacOS Shell .bashrc
So natürlich ist das alles nicht. Mal davon abgesehen, daß bash schon seit längerem nicht mehr default shell unter macOS ist aber trotzdem installiert wird, gibt es hier (siehe z.B. diesen Link) wie auch in unterschiedlichen Linux-Versionen teilweise unterschiedliche Voreinstellungen, wann welche shell config files geladen werden. So daß ich da keinen universellen Tipp für abgegeben mag. Für bash lohnt sich auch mal ein Blick in "man bash".
Und nun zur Fehlerkorrektur: "~" steht für das Home-Verzeichnis
Ja, ist aus Versehen mit reingerutscht. Aber ganz ehrlich: Das ist doch jedem klar, dass, wenn ich in's Projektverzeichnis wechsel, der Pfad vendor/bin/drush sein muss. (und nicht ../vendor/bin/drush, weil das Projektverzeichnis in der Regel die oberste Ebene ist).
Soweit ich weiß, werden user spezifische shell configs automatisch nur erfasst beim nächsten Login/shell start, wenn sie im Home-Verzeichnis des Users liegen. Somit macht es wenig Sinn den Alias in einem .bashrc im Projekt Ordner zu kopieren. Sonst müsste man denke ich bei jeder Session ein "source .bashrc" ausführen. Bei Anpassungen braucht man in der aktuellen Session aber entweder ein bash neustart oder man lädt die Config neu mit "source ~/.bashrc".
Unabhängig davon benötigt Drush – wenn es nicht direkt innerhalb des Webroots (z.b. Folder "web") aufgerufen wird – ein "--root" (oder "-r") flag. Das lässt sich auch in einem alias unter bringen z.B.mit "
alias dr-web='vendor/bin/drush --root=web'
", um dann aus dem Projekt-Ordner heraus zu funktionieren. Allerdings kann es auch sein, daß via Composer ein anderes "bin"-Verzeichnis angeben wird ("vendor/bin" ist nur default). So war es z.B. in früheren Versionen der Thunder-Distribution. Thunder definiert im composer.json aber z.B. Immer noch den Folder "docroot" im Gegensatz zum inzwischen in Drupal Composer Projekten sonst üblichen "web".Das heißt, die Symlink-Vorschläge sollten entsprechend des Projekts und der konkreten Betriebs-System und konkreten User-Konfiguration angepasst werden.
--
Korrektur des Titels: Da stand fälschlicherweise "Symlink" obwohl ich "Alias" meinte.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen