Что касается обходного пути, для использования файла JSON, которого нет в ~/.composer/composer.json
, путь поставщика можно указать в config
/vendor-dir
, например:
{
"config": {
"vendor-dir": "~/.composer/vendor"
},
"require": {
"drush/drush": "dev-master"
}
}
который должен установить drush
в ~/.composer/vendor/drush/drush/drush
, тогда необходимо внести соответствующие изменения в переменную PATH, например
ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc
Чтобы сделать его глобальным (запустив с root
), я думаю, что /var/lib/vendor
можно использовать для vendor-dir
, и либо добавить правильный путь к переменной PATH в одном из глобальных файлов, таких как /etc/bash.bashrc
или /etc/profile
, либо указать bin-dir
в файле JSON, например:
{
"config": {
"vendor-dir": "/var/lib/vendor",
"bin-dir": "/usr/local/bin"
},
"require": {
"drush/drush": "dev-master"
}
}
который установит drush
глобально с минимальной головной болью, так как /usr/local/bin
уже должен быть в PATH.
Или, если вы не хотите жестко задавать путь в файле JSON (чтобы его можно было использовать между разными службами), есть еще более простой способ, предложенный, например, jonhattan :
Способ VM (как root):
COMPOSER_HOME=/var/lib/composer COMPOSER_BIN_DIR=/usr/local/bin COMPOSER_VENDOR_DIR=/var/lib/composer/vendor composer -nqq install --no-interaction --optimize-autoloader
Трэвис CI путь:
COMPOSER_BIN_DIR=~/bin composer -nqq install --no-interaction --optimize-autoloader --prefer-source
Вместо install
вы также можете использовать update
.