Ошибка при отправке команд Drush на удаленный хост


У меня установлен Drush 5.2 в моей локальной системе разработки и на моем удаленном хосте, на котором есть промежуточные и производственные площадки. У меня есть псевдонимы для всех трех сайтов, и я могу без проблем использовать rsync и sql-sync в обеих системах.

Из того, что я понимаю, я также должен иметь возможность выдавать команды удаленной системе, такие как

drush @stage vset preprocess_css 0

Всякий раз, когда я пытаюсь сделать что-то подобное, это терпит неудачу. Например, если я запущу drush -d @stage status, я получу:

Bootstrap to phase 0. [0 sec, 3.7 MB]                                [bootstrap]
Drush bootstrap phase : _drush_bootstrap_drush() [0.01 sec, 3.93 MB] [bootstrap]
Loaded alias @stage from file /path/to/local/drupal/sites/all/drush/aliases.drushrc.php [0.01 sec, 3.94 MB]                          [notice]
Cache HIT cid: 5.2-commandfiles-0-c87dbef8e3e302e07ccdc024aee7fbbd [0.16 sec, 3.95 MB]                                                                      [debug]
Begin redispatch via invoke process [0.19 sec, 8.77 MB]                                                                                                    [notice]
Backend invoke: ssh -o PasswordAuthentication=no [email protected] 'drush  --invoke --debug                                                 [command]
--root=/path/to/remote/drupal/ --uri=http://stage.mysite.com --verbose status 2>&1' 2>&1 [0.23 sec, 8.8 MB]
executing ssh -o PasswordAuthentication=no [email protected] 'drush  --invoke --debug --root=/path/to/remote/drupal/      [notice]
--uri=http://stage.mysite.com --verbose status 2>&1' 2>&1 [0.23 sec, 8.8 MB]
Calling proc_open(ssh -o PasswordAuthentication=no [email protected] 'drush  --invoke --debug --root=/path/to/remote/drupal/ --uri=http://stage.mysite.com --verbose status 2>&1' 2>&1);
bash: drush: command not found
Invoke process is complete [1.34 sec, 8.79 MB]  
Author: handsofaten, 2012-06-25

1 answers

Для того, чтобы удаленные команды работали, вы должны убедиться, что drush находится на вашем ПУТИ. Это часто делается путем добавления чего-то вроде следующего в строку, которую bash отправит при запуске:

export PATH=$PATH:$HOME/local/drupal/drush

Многие люди помещают такую строку в свой файл ~/.bashrc, но обратите внимание, что во многих системах этот файл начинается со строки, подобной следующей:

[ -z "$PS1" ] && return

Это означает, что все, что находится ниже строки выше, будет выполняться только при интерактивном запуске bash; если вы разместите drush на своем ПУТИ после этого момента, вы сможете запускать drush при входе на удаленную машину, но не при попытке удаленного вызова drush (например, через drush, как показано выше).

Существует множество решений этой проблемы.

  1. Проложите свой ПУТЬ до того, как.bashrc выйдет из игры.

  2. Создайте символическую ссылку на исполняемый файл drush из каталога, который всегда находится на вашем ПУТИ (например, sudo ln -s /path/to/drush /bin)

  3. Установите %drush-скрипт, как описано в примеры. псевдонимы.drushrc.php.

 5
Author: greg_1_anderson, 2012-06-25 21:53:28