2007-04-02

Instalando Haskell no Slackware

haskell Se você é usuário de Slackware e, como eu, sofreu para tentar instalar o ghc sem sucesso, aqui segue o passo-a-passo para sair da miséria!

Estes procedimentos foram testados no Slackware 11.0.

Primeiro vamos baixar o maldito RPM. Se quiser procurar por outros pacotes, veja aqui.

Baixado o monstro, vamos convertê-lo em algo mais decente com rpm2tgz:

bash$ rpm2tgz ghc66-6.6-1.i386.rpm


Agora é possível manipular este pacote. Vamos descompactá-lo:
bash$ mkdir raiz
bash$ tar xzvf ghc66-6.6-1.i386.tgz -C raiz/


Pronto! Já podemos criar uma descrição do pacote:
bash$ cd raiz/
bash$ mkdir install/
bash$ vim install/slack-desc


Eu uso o Vim, mas use o editor que lhe convier. Escreva o seguinte conteúdo:
ghc: The Glasgow Haskell Compiler v. 6.6
ghc:
ghc: GHC is a state-of-the-art, open source, compiler and interactive
ghc: environment for the functional language Haskell.
ghc:
ghc: This package was generated by rpm2tgz
ghc:
ghc: http://haskell.org/ghc/
ghc:


Salve e já temos nossa apresentação! Agora vamos criar um instalador que publique as bibliotecas no sistema e crie alguns links simbólicos amigos do peito:
bash$ vim install/doinst.sh


O conteúdo do arquivo:
#!/bin/sh

sed -i '/\/ghc/ d' /etc/ld.so.conf
echo '/usr/lib/ghc-6.6' >> /etc/ld.so.conf

( cd /usr/bin/ ; rm -rf ghc )
( cd /usr/bin/ ; ln -sf ghc-6.6 ghc )
( cd /usr/bin/ ; rm -rf ghci )
( cd /usr/bin/ ; ln -sf ghci-6.6 ghci )

ldconfig


Não é necessário, mas gosto de ter este arquivo executável:
bash$ chmod +x install/doinst.sh


O pacote RPM tem umas maluquices, como chamar o diretório de documentação de ghc66-6.6/ (versão 6.6 da versão 6.6? Redundâncias de Fedora Core…). Vamos acertar isso:
bash$ mv usr/share/doc/ghc{66,}-6.6


Para terminar vamos criar e instalar o pacote!

Para evitar possíveis dores de cabeça, vamos fazer isso como superusuário:
bash$ su -l
bash# chown -R root:root .
bash# makepkg -c y -l y ../ghc-6.6-i386-1.tgz
bash# cd ../
bash# installpkg ghc-6.6-i386-1.tgz


E pronto! Já é possível executar ghci e testar os exemplos do Torcato.

Ah! Não esqueça de guardar bem o pacote (ghc-6.6-i386-1.tgz) e limpar a sujeira (ghc66-6.6-1.i386.rpm, ghc66-6.6-1.i386.tgz e raiz/) que deixamos para trás!

[]'s

PS: Veja este artigo também no Kodumaro.