Ir al contenido

Problemas recurrentes

ghcup: antivirus en Windows rompe la instalación de msys2

Sección titulada «ghcup: antivirus en Windows rompe la instalación de msys2»

Si en la instalación de ghcup el componente msys2 se rompe con un mensaje de error similar a éste:

msys2 revocación denegada

desactivá temporariamente tu antivirus de Windows.

Existe una página específica de Troubleshooting donde vas a encontrar que puede haber problemas

  • si tenés Windows Defender activado (o algún otro antivirus)
  • si tu máquina utiliza un proxy, o una máquina que pueda bloquearte puertos o páginas (tenelo en cuenta si estás utilizando una máquina de tu trabajo)
  • si alguno de los certificados que tenés instalado para acceder a páginas https está vencido o incorrectamente instalado

Luego de correr el comando curl de instalación de ghcup pasa una de estas dos cosas:

  • No reconoce curl
  • O bien tira el error
"ghcup --metadata-fetching-mode=Strict --cache install ghc recommended" failed!

La forma de resolverlo es instalar los prerrequisitos que figuran acá:

Por ejemplo, en Ubuntu 24.04, hay que correr

Ventana de terminal
sudo apt install build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5

Si tenés configurada una terminal que no acepta caracteres unicode, tenés que exportar esta variable:

Ventana de terminal
export LC_ALL=C.UTF-8

(incorporalo a tu .bashrc o script favorito cada vez que inicies la consola)

Al ejecutar el comando stack recibo un mensaje de error

Sección titulada «Al ejecutar el comando stack recibo un mensaje de error»

Si ejecutás este comando

Ventana de terminal
stack new proyecto-test https://github.com/uqbar-project/pdepreludat/releases/download/latest/pdepreludat.hsfiles

y recibís un mensaje de error similar a

RedownloadInvalidResponse Request {
host = "raw.githubusercontent.com"
port = 443
secure = True
...

revisá la versión de stack que tenés instalada (siempre en la consola o en el Git Bash).

Ventana de terminal
stack --version

Deberías ver la versión 2.5.1 ó superior, si tenés una versión anterior ejecutá el siguiente comando:

Ventana de terminal
stack upgrade

De esta manera tendrás la última versión de stack instalada en tu máquina.

Permission denied al ejecutar un comando stack en Windows

Sección titulada «Permission denied al ejecutar un comando stack en Windows»

Si al intentar ejecutar stack build, stack test o cualquier otro comando stack te aparece un mensaje de error del tipo Permission denied

antivirus

  • revisá que no tengas caracteres especiales en el path de tu proyecto. Por ejemplo (espacios, eñes, °, tildes, &, etc.). Si te encontrás en Windows y en particular es tu carpeta de usuario la que contiene uno de estos caracteres especiales, el error que podés encontrar es del tipo lexical error in pragma at character. En este caso es necesario crear un nuevo usuario del sistema para que genere una nueva carpeta de usuario sin estos elementos. Además tenés que reinstalar el entorno para este útimo.

  • revisá si está corriendo de fondo tu antivirus de Windows, si es así deshabilitalo o configurá para que no haga chequeos en la carpeta donde tenés tus proyectos Haskell.

El antivirus también puede causar que el comando stack build/test tarde (porque analiza los archivos que genera stack). Lo recomendable es desactivarlo al menos para la carpeta del proyecto donde estés.

  • por último, si ninguna de las opciones anteriores te funciona y seguís recibiendo un Permission Denied, iniciá la sesión de Git Bash como Administrador

Espacio insuficiente en disco para ejecutar stack ghci/test

Sección titulada «Espacio insuficiente en disco para ejecutar stack ghci/test»

Si tenés muy poco espacio en el directorio /tmp (espacio temporal de memoria swap), fijate este artículo que te dice cómo resolverlo.

Haskell: cannot find -ltinfo al hacer stack build en ubuntu

Sección titulada «Haskell: cannot find -ltinfo al hacer stack build en ubuntu»

Si al hacer stack build / stack ghci / stack test te aparece el siguiente mensaje:

ExecutionFailure [PrettyException (CabalExitedUnsuccessfully (ExitFailure 1)
(PackageIdentifier {pkgName = PackageName "hspec-core", pkgVersion = mkVersion [2,9,7]})
"/home/..../.stack/setup-exe-cache/x86_64-linux/Cabal-simple_SvXsv1f__3.6.3.0_ghc-9.2.5"
["--verbose=1","--builddir=.stack-work/dist/x86_64-linux/Cabal-3.6.3.0","build",
"--ghc-options"," -fdiagnostics-color=always"] Nothing [])]

ltinfo

Según la ayuda de stack overflow, deberías ejecutar este comando:

Ventana de terminal
sudo apt install libtinfo-dev

[S-7282] Stack failed to execute the build plan. /// Failed to load interface for Text.Pretty.Simple.Internal.Color

Sección titulada «[S-7282] Stack failed to execute the build plan. /// Failed to load interface for Text.Pretty.Simple.Internal.Color»

Si se cortó la instalación a la mitad por algún error (desconexión a internet, corte de luz, etc) puede que stack muestre este error al intentar correr stack test de nuevo:

Error al instalar dependencias de stack por librerias que quedaron instaladas a la mitad

Si tenes este problema, podés correr lo siguiente para eliminar completamente la librería que esta causando el problema, que es la que se menciona acá:

There are files missing in the nombre de la libreria package, try running ‘ghc-pck check’.

La forma de arreglar el problema es:

Ventana de terminal
stack exec -- ghc-pkg unregister --force pretty-simple-4.1.2.0

lo cual va a eliminar esa biblioteca. Y luego, se puede continuar la instalación con:

Ventana de terminal
stack test

Si en el Visual Studio Code te aparece el mensaje: Could not find module 'PdePreludat' en una ventana similar a la siguiente

vsc en carpeta padre

fijate que tenés que levantar Visual Studio Code en la carpeta de tu proyecto Haskell (en el caso de la imagen, en proyecto-test).