Quanto à solução alternativa, para usar o arquivo JSON que não está em ~/.composer/composer.json , o caminho do fornecedor pode ser especificado em config / vendor-dir , por exemplo:
{
"config": {
"vendor-dir": "~/.composer/vendor"
},
"require": {
"drush/drush": "dev-master"
}
}
que deve instalar drush em ~/.composer/vendor/drush/drush/drush , então a alteração apropriada na variável PATH precisa ser feita, por exemplo
ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc
Para torná-lo global (executando como root ), acho que /var/lib/vendor pode ser usado para vendor-dir e acrescentar o caminho adequado à variável PATH em um dos arquivos globais, como /etc/bash.bashrc ou /etc/profile , como alternativa, especifique bin-dir no arquivo JSON, por exemplo:
{
"config": {
"vendor-dir": "/var/lib/vendor",
"bin-dir": "/usr/local/bin"
},
"require": {
"drush/drush": "dev-master"
}
}
que instalará drush globalmente com uma dor de cabeça mínima, pois /usr/local/bin já deve estar no PATH.
Ou se você não quiser codificar o caminho no arquivo JSON (para que ele possa ser compartilhado entre diferentes serviços), existe uma maneira muito mais simples, como sugerido por jonhattan , por exemplo:
-
Caminho da VM (como 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
-
Travis CI:
COMPOSER_BIN_DIR=~/bin composer -nqq install --no-interaction --optimize-autoloader --prefer-source
Em vez de install , você também pode usar update .