O que é um bom método para resolver problemas de instalação da cabala?

6

Eu usei o gerenciador de pacotes cabal para programas Haskell para instalar bibliotecas e novos projetos que eu clonei de alguns repositórios. Mais frequentemente do que não, eu continuo correndo em problemas. A maioria dos projetos faz com que instalá-los pareça super fácil, mas no meu caso isso nem sempre é verdade - às vezes eles são muito difíceis de serem executados. Alguns são tão difíceis, na verdade, que perdi o interesse no projeto apenas por não conseguir instalá-lo.

Então, em vez de reclamar, gostaria de perguntar o que devo fazer para melhorar essa situação. Eu gostaria de usar meu problema mais recente como exemplo.

Estou interessado em experimentar o projeto Gitit . É um wiki pessoal de aparência promissora que é executado em vários sistemas de controle de versão.

Então, aqui está o que eu fiz:

  • Clone de Github
  • execute cabal install no diretório do projeto, como eu disse na página de instalação do projeto:

    mika@eka:~/git/gitit$ ls
    BLUETRIP-LICENSE  CHANGES  HCAR-gitit.tex  LICENSE  Network  README.markdown  RELANN-0.6.1  Setup.lhs  TANGOICONS  YUI-LICENSE  data  expireGititCache.hs  gitit.cabal  gitit.hs  plugins
    mika@eka:~/git/gitit$ cabal install
    Resolving dependencies...
    cabal: cannot configure happstack-server-7.0.7. It requires base64-bytestring
    ==1.0.*
    For the dependency on base64-bytestring ==1.0.* there are these packages:
    base64-bytestring-1.0.0.0. However none of them are available.
    base64-bytestring-1.0.0.0 was excluded because gitit-0.10 requires
    base64-bytestring ==0.1.*
    mika@eka:~/git/gitit$ 
    
  • Então, agora estou pensando: bem, instalarei o happstack-server sozinho, talvez isso funcione:

    mika@eka:~/git/gitit$ cabal install happstack-server
    Resolving dependencies...
    Warning: happstack-server.cabal: Ignoring unknown section type: test-suite
    Configuring happstack-server-7.0.7...
    cabal: At least the following dependencies are missing:
    blaze-html ==0.5.*,
    hslogger >=1.0.2,
    monad-control ==0.3.*,
    network >=2.2.3,
    sendfile >=0.7.1 && <0.8,
    system-filepath >=0.3.1,
    text >=0.10 && <0.12,
    threads >=0.5,
    transformers-base ==0.4.*
    cabal: Error: some packages failed to install:
    happstack-server-7.0.7 failed during the configure step. The exception was:
    ExitFailure 1
    
  • Parece que há algumas dependências ausentes. Mas não é instalar essas dependências todo o ponto de usar cabala em primeiro lugar?

O que devo fazer? Arquivar relatórios de erros (para qual projeto?), Instalar as dependências manualmente ou outra coisa? Pontos de bônus para explicar o que causa esse tipo de problema.

    
por sp3ctum 30.09.2012 / 08:42

2 respostas

5

Projetos com dependências complexas - e aqueles que incluem um servidor da Web mais adequado a essa classe - geralmente são melhor criados com cabala -dev em vez de cabala. O primeiro instala tudo em um sandbox e não interfere em outras instalações.

Portanto, você deve primeiro instalar uma nova Plataforma Haskell , depois bifurcar o repositório e, finalmente, construir usando o cabal-dev. É claro que você pode instalar o gitit com cabal-dev install gitit se não quiser trabalhar na fonte.

Você deve evitar instalações globais de projetos complexos.

    
por 26.10.2012 / 10:32
7

Para quem se depara com isso, descobri duas coisas importantes que tornam a cabala menos dolorosa.

Primeiro, os sandboxes são construídos a partir do cabal-install 1.18 (você não precisa mais de cabal-dev). Você deve atualizar com cabal install cabal-install e usá-los para tudo! Eu crio ~/.cabal/sandboxes e coloco uma sandbox para cada build lá. Em seguida, vinculo os binários concluídos a ~/.cabal/bin com ln .

Segundo, se sua distro (Debian, por exemplo) não der /tmp permissões de execução, ele causará todo tipo de erro aparentemente não relacionado. Coisas como configure: error: cannot run C compiled programs . É fácil de corrigir com alias cabal="TMPDIR=/somewhere/with/permission cabal" .

    
por 02.06.2014 / 04:44

Tags