Ejecución de Composer sin usar sudo (intentó cambiar el propietario y los permisos)

12

Cada vez que ejecuto Composer (por ejemplo, sudo composer install, sudo composer self-updateetc.) necesito ejecutar esto con sudo ya que el propietario del archivo es root.

Sin embargo, cada vez que uso el compositor con sudo root posee la carpeta del proveedor y luego tengo que cambiar el propietario de esa carpeta / privilegios de root a www-data.

¿Cuál es la mejor manera de arreglar esto para que no tenga que ejecutar sudo cada vez?

¿Cambiar el propietario de /usr/local/bin/composerroot a www-data?

¿Es esta la forma ideal de manejar esto para evitar tener que cambiar la propiedad y asignar permisos cada vez que uso sudo composer install?

Editar: los permisos para el compositor son actualmente -rwxr-xr-x. Y he intentado cambiar el propietario de /usr/local/bin/composerover www-data:www-datacon permisos establecidos en 775, y aún así no puedo ejecutar el compositor sin ejecutarlo sudo.

montar los torbellinos
fuente

Respuestas:

8

Si "todos" pueden leer y ejecutar el compositor, no necesita usar sudo:

sudo chmod 755 /var/local/bin/composer

Como ya ejecutó Composer al menos una vez root, el directorio de caché de compositores (por usuario) ahora es propiedad de root y, por lo tanto, su usuario normal no puede escribirlo.

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

corregirá el propietario del archivo.

tkausl
fuente
He intentado esto y todavía no puedo ejecutar composer self-updatesin usar sudo. ¿Necesito usar 775?
montar los torbellinos
Bueno, la actualización automática no funcionará con 755, pero ¿importa esto? la actualización automática no es nada que deba ejecutar todos los días, solo actualícela una vez cada 2 semanas más o menos (con sudo, por supuesto).
tkausl
Intenté composer updatey esto tampoco funciona con esos permisos. Todavía tengo que usar sudo primero. Este es el error que obtengofile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
andar en torbellino el
ooh, sí, ya usaste "sudo" para actualizar algunos de tus departamentos, creo que "/home/lamp/.composer/" es propiedad de root, simplemente elimina esta carpeta (es solo un caché), entonces debería funcionar sin sudo (O cambio de propiedad: chown -R lamp:lamp /home/lamp/.composer)
tkausl
Eso hizo el truco, fue cambiar el dueño a la lámpara. ¿Puedes actualizar tu respuesta y la aceptaré? Gracias takusl
montar los torbellinos
5

He estado lidiando con este problema durante semanas.

Creo que la solución es ejecutar la actualización automática del compositor con -H

sudo -H composer self-update

Antes de hacerlo, asegúrese de eliminar los directorios .composer en la raíz y el directorio de inicio del usuario que desea ejecutar Composer.

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

La ejecución de la actualización automática de sudo composer sin el indicador -H creará ~ / .composer que es propiedad de root y evitará que otros comandos de compositor tengan errores de permiso.

composer config
composer install 

En mi opinión, la actualización automática de sudo composer no debería crear archivos propiedad de root en el directorio de inicio de los usuarios actuales.

Tenga en cuenta que si sigue estas instrucciones en Ubuntu 14.04, el compositor colocará el caché en:

 ~/.cache/composer

Más bien que:

~/.composer/cache

Esto se debe a la variable de entorno XDG_RUNTIME_DIR definida en Ubuntu 14.04 pero no parece estar definida en Ubuntu 12.04

Una discusión relacionada aquí

Iterar
fuente
Esto no ayuda si ya está ejecutando la versión más reciente del compositor. $ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
Cragmonkey
@Cragmonkey: estaba ejecutando la última versión del compositor, pero solo eliminar la ~/.composercarpeta parece resolver el problema.
Código de ciclón del