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
.