quarta-feira, abril 30, 2008

Compilar a partir da fonte

Este artigo será importante para quem, como eu, gosta é de utilizar os pacotes de software dos repositórios Ubuntu, mas de quando em vez lá instala qualquer coisa a partir da fonte. Isto torna-se chato, até porque tudo o que aprendemos da última vez que fizemos isso já se foi da nossa memória. Agora que estou a fazer uma instalação dessas, aqui ficam algumas dicas, que também vão servir para mim da próxima vez que precisar.


Quando falo em código de fonte estou a falar de programas que têm pelo menos um ficheiro configure, ou qualquer coisa do género. Fonte, daquela pura, só com os ficheiros em c, essa para mim ainda é um mistério.
Se tem um ficheiro configure, então é para utilizar: ele logo me dirá se tenho todas as depedências satisfeitas ou não. Se ele parar a meio a queixar-se da falta de qq coisa, então Synaptic Package Mannager (ou apt-get install) e vai-se buscar.

Pacotes lib, pacotes -dev e pacotes src
Pois, estes meus senhores é que são os necessários. Muitas vezes temos instalado o pacote que é necessário mas mesmo assim não corre: pois, o que ele quer é o pacote -dev. E pior ainda é quando o configure nos diz que necessitamos, por exemplo, do gtk+ (versão 2.0) (este foi para mim um dos piores de resolver) e vamos ver e existem 500 pacotes gtk. Bem, aquilo é uma festa, mas nenhum deles é -dev. Ficamos um pouco lixados. Nunca desistir, porque a solução pode estar, e neste caso está, no libgtk2.0-dev. Caramba, aquilo que uma pessoa tem que adivinhar para continuar a usar Linux (ehehe).
Em alguns casos não existe pacote -dev mas existe o pacote -src, que produz os mesmos efeitos.

Outra coisa que já me deixou às aranhas foi quando o configure se queixa de qualquer coisa como "Não encontro um compilador c" e nós pensamos "Sim, e qual o pacote que tenho que instalar??". Pois, a resposta é a mais óbvia: qualquer compilador c. Uma pesquisa no Synaptic por "C compiler", neste exemplo, é suficiente para obtermos uma lista de candidatos à instalação. Depois é só ler a descrição sumária dos candidatos e, regra geral, não será difícil optar por um correcto (já agora, neste caso eu opto pelo g++).

Para utilizadores um pouco mais avançados, é bom dar uma vista de olhos ao resultado do configure mesmo quando aparentemente a coisa corre sem erros porque muitas vezes há dependências que não sendo essênciais, não estando satisfeitas não permitem a utilização de determinada opção do software que estamos a instalar. Por exemplo, neste momento estou a instalar GIMP 2.5 (nos repositórios só há o 2.4.5) e precisei de instalar o gegl-0.0.16. Corri ./configure e no final obtive:

Building GEGL with prefix=/usr/local

Optional features:
GEGL docs: yes
Build workshop: no
Build website: no (asciidoc not found)

Optional dependencies:
GTK+: yes
Ruby: no
Lua: no (usable lua not found)
Cairo: yes
Pango: yes
pangocairo: yes
GDKPixbuf: yes
JPEG: no (usable JPEG library not found)
PNG: yes
OpenEXR: no (usable OpenEXR not found)
rsvg: no (usable librsvg not found)
SDL: no (usable libsdl not found)
asciidoc: no (asciidoc not found)
enscript: no (enscript not found)
graphviz: no (graphviz not found)
avcodec: no (usable libavcodec not found)
avformat: no (usable libavformat not found)

(este é um dos exemplos mais favoráveis porque origina um relatório final)
O que acontece é que não deu erro, mas se continuar agora não vou poder trabalhar com JPEG no GIMP depois de instalado (reparem na mensagem usable JPEG library not found), o que diga-se de passagem não seria boa ideia num programa de tratamento de imagens. Portanto lá vou eu instalar libjpeg62-dev (uma pesquisa no Synaptic por JPEG resolveu o meu problema) e correr novamente o ./configure.

Bem, no final é só digitar make e sudo make install e, por vezes, ir tomar um café porque se o programa for grande (e o processador pequeno) estes processos podem ser mais ou menos longos...

Neste exemplo, estou só a meio da questão, porque acabei de instalar o gegl e agora tenho que instalar o gimp-2.5. Nunca ninguém disse que trabalhar com o código de fonte era fácil. Mas eu digo que não é impossível: por vezes demora tempo, mas é possível.

Existem muitas outras maneiras de instalar a partir da fonte, que normalmente estão descritas algures na directoria do programa a instalar, num ficherio README, INSTALL ou algo semelhante.

Sem comentários: