Executando o Composer sem usar o sudo (tentei mudar de proprietário e permissões)

12

Toda vez que executo o compositor (por exemplo, sudo composer install, sudo composer self-updateetc.), preciso executar isso com o sudo, pois o proprietário do arquivo é root.

No entanto, toda vez que eu uso o compositor com sudo root possui a pasta do fornecedor e, em seguida, tenho que alterar o proprietário dessa pasta / privilégios de raiz para www-data.

Qual é a melhor maneira de corrigir isso para que eu não precise executar o sudo toda vez?

Alterar o proprietário de /usr/local/bin/composerroot para www-data?

Essa é a maneira ideal de lidar com isso para evitar ter que mudar de propriedade e atribuir permissão toda vez que uso o sudo composer install?

Editar: as permissões para o compositor estão atualmente -rwxr-xr-x. E tentei mudar o proprietário de /usr/local/bin/composerpara www-data:www-datacom permissões definidas para 775 e ainda não consigo executar o compositor sem executar sudo.

montar os turbilhões
fonte

Respostas:

8

Se "todo mundo" puder ler e executar o compositor, você não precisará usar o sudo:

sudo chmod 755 /var/local/bin/composer

Como você já executou o compositor pelo menos uma vez root, o diretório de cache do compositor agora é de propriedade do root e, portanto, não pode ser gravado pelo usuário normal.

sudo chown -R lamp:lamp /home/lamp/.composer

irá corrigir o proprietário do arquivo.

tkausl
fonte
Eu tentei isso e ainda não consigo executar composer self-updatesem usar o sudo. Preciso usar o 775?
rode os turbilhões
A atualização automática não funciona com o 755, mas isso importa? A atualização automática não é nada que você precisará executar todos os dias, basta atualizá-lo a cada 2 semanas, aproximadamente (com sudo, é claro).
tkausl
Tentei composer updatee isso também não funciona com essas permissões. Eu ainda tenho que usar o sudo primeiro. Este é o erro que recebofile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
montar os turbilhões
ooh, sim, você já usou o "sudo" para atualizar alguns de seus deps, acho que "/home/lamp/.composer/" pertence ao root, basta excluir esta pasta (é apenas um cache) e, em seguida, deve funcionar sem sudo. (Ou a propriedade mudança: chown -R lamp:lamp /home/lamp/.composer)
tkausl
Isso fez o truque, foi mudar o proprietário para lâmpada. Você pode atualizar sua resposta e eu a aceito? Obrigado takusl
ride the whirlwinds
5

Estou lidando com esse problema há semanas.

Eu acho que a solução é executar a auto-atualização do compositor com o -H

sudo -H composer self-update

Antes de fazer isso, remova os diretórios .composer na raiz e o diretório inicial do usuário que você deseja executar o compositor.

sudo rm -rf /root/.composer
sudo rm -rf /home/ubuntu/.composer

A execução da atualização automática do sudo compositor sem o sinalizador -H criará ~ / .composer pertencente ao root e evitará que outros comandos do compositor tenham erros de permissão.

composer config
composer install 

Na minha opinião, chamar a atualização automática do sudo composer não deve criar arquivos pertencentes à raiz no diretório inicial dos usuários atuais.

Observe que se você seguir estas instruções no Ubuntu 14.04, o compositor colocará o cache em:

 ~/.cache/composer

Ao invés de:

~/.composer/cache

Isso ocorre devido à variável de ambiente XDG_RUNTIME_DIR definida no Ubuntu 14.04, mas parece não estar definida no Ubuntu 12.04

Uma discussão relacionada aqui

Iterar
fonte
Isso não ajuda se você já estiver executando a versão mais atual do compositor. $ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
Cragmonkey
@Cragmonkey - Eu estava executando a versão mais recente do compositor, mas apenas remover a ~/.composerpasta parece resolver o problema.
Cyclonecode