es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ghcup install: Se denegó el permiso para escribir en el directorio ~/.ghcup/cache.

Estoy intentando instalar ghcup en Ubuntu con:

curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

usando las opciones predeterminadas (agregar al .bashrc, no instalar HLS, no instalar Stack).

El problema es que estoy recibiendo un error de “permiso denegado” cuando el script intenta escribir el archivo ghcup-0.0.6.yaml.tmp en el directorio ~/.ghcup/cache y no estoy seguro de por qué.

Los permisos en el directorio son 1775 (drwxrwxr-x). Al actualizarlos a 1777 (drwxrwxrwt) y volver a ejecutar el comando curl, obtengo el mismo error. El propietario del directorio soy yo (no root), y estoy ejecutando el comando curl sin sudo según las instrucciones de instalación de ghcup.

Salida completa del comando:

“`
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 24.3M 100 24.3M 0 0 5782k 0 0:00:04 0:00:04 –:–:– 5783k
[ Info ] downloading: https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.6.yaml as file /home/austin/.ghcup/cache/ghcup-0.0.6.yaml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0Advertencia: no se pudo crear el archivo
Advertencia: /home/austin/.ghcup/cache/ghcup-0.0.6.yaml.tmp: Permiso denegado
0 134k 0 858 0 0 8429 0 0:00:16 –:–:– 0:00:16 8495
curl: (23) Error al escribir la salida en el destino
[ Advertencia ] No se pudo obtener la información de descarga, intentando la versión en caché (esto puede no ser reciente)
[ … ] Si este problema persiste, considere cambiar el descargador a través de:
[ … ] ghcup config set downloader Wget
[ Error ] La decodificación JSON falló con: Excepción YAML:
[ … ] Archivo YAML no encontrado: /home/austin/.ghcup/cache/ghcup-0.0.6.yaml
[ … ] Considere eliminar /home/austin/.ghcup/cache/ghcup-0.0.6.yaml manualmente.
[ … ]
“ghcup upgrade” ha fallado.

¡Me encantaría una explicación de lo que está sucediendo y cómo resolverlo para poder empezar a aprender Haskell! Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error “permission denied” ocurre cuando el usuario que ejecuta el comando curl no tiene permisos de escritura en el directorio de destino, en este caso, /home/austin/.ghcup/cache/. Aunque los permisos del directorio están configurados como drwxrwxr-x, lo que significa que el propietario y el grupo tienen permisos de lectura, escritura y ejecución, los demás usuarios solo tienen permisos de lectura y ejecución.

    Para resolver este problema, puedes intentar cambiar el propietario del directorio .ghcup y su contenido al usuario que ejecuta el comando curl, usando el siguiente comando:

    sudo chown -R austin:austin ~/.ghcup/
    

    Este comando cambia el propietario y grupo del directorio .ghcup y todos sus contenidos al usuario austin. Después de ejecutar este comando, intenta volver a ejecutar el comando curl y verifica si se resuelve el problema de permisos.

    Si el problema persiste, puedes intentar crear manualmente el directorio ~/.ghcup/cache/ y otorgar permisos de escritura al usuario que ejecuta el comando curl:

    mkdir -p ~/.ghcup/cache/
    chmod u+w ~/.ghcup/cache/
    

    Después de ejecutar estos comandos, intenta nuevamente ejecutar el comando curl y verifica si funciona.

    ¡Espero que esto te ayude a comenzar a aprender Haskell!

Comments are closed.