• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoaoRodrigues

[HowTo] Instalar a partir do Código Fonte

16 mensagens neste tópico

Instalar a partir do código-fonte em Ubuntu

"" Ena pá, um programa tão fixe! Vou instalar já isto no meu Ubuntu... """

<Abrir o Synaptic, procurar...>

"" Oi... então? Não há? Bem, vou ver no site.. AH, tá aqui, ficheiro programafixe.tar.bz2 para Linux ""

<Abrir o Ark, ou outro programa para abrir pastas compactadas>

"" Ui... tanto ficheiro... E agora? """


Pois é. Em Linux, mesmo em Ubuntu, há-de vir a altura em que vamos que chafurdar na consola para instalar um programa.

Configure, make, make install. Estas 3 "expressões" vão entrar no vosso vocabulário tal como login, password e enter já lá estão.

Ao fim de contas, são os 3 únicos comandos que é preciso invocar na consola para instalar um programa. Claro, não vamos ficar com ícones no menu das Aplicações,

nem no Desktop, mas, vamos ficar com o programa instalado e a funcionar. No que espero ser em meia página A4, vou dar um exemplo de como instalar um programa em Linux

a partir do código fonte, utilizando como teste o nosso bem amado XMMS.


1) O primeiro passo lógico é abrir a consola/terminal. Aplicações-->Acessórios--->Terminal.

2) Depois, navegamos até à pasta onde está o ficheiro compactado. No meu caso é o Desktop e o ficheiro é o xmms-1.2.11.tar.gz

3) Extraimos o ficheiro:

$ tar -xf xmms-1.2.11.tar.gz

4) Entramos na pasta criada:

$ cd xmms-1.2.11/

Agora, se listarmos os conteudos, vamos ver algo deste género:

joao@Desktop:~/Desktop/xmms-1.2.11$ ls
ABOUT-NLS     config.guess  configure.in  General     libxmms      NEWS    Visualization  xmms-config.in
acinclude.m4  config.h.in   COPYING       Input       ltmain.sh    Output  wmxmms         xmms.m4
aclocal.m4    config.rpath  depcomp       INSTALL     Makefile.am  po      wmxmms.1.in    xmms.spec
AUTHORS       config.sub    Effect        install-sh  Makefile.in  README  xmms           xmms.spec.in
ChangeLog     configure     FAQ           intl        missing      TODO    xmms.1.in
joao@Desktop:~/Desktop/xmms-1.2.11$ 

Podemos sempre abrir os ficheiros INSTALL e o README para termos algumas ajudas. De facto, aconselho a lerem. Basicamente vão-vos falar de dependências e do trio

maravilha que eu falei em cima: configure, make, make install. E com isto, veio uma palavra nova: dependências. O que é isso? A melhor maneira de perceberem, é digitarem

o comando configure na consola, de modo a começarem a construir um ficheiro de configuração adequado ao vosso pc.

5)

$ ./configure

Vejam o que acontece no meu terminal:

joao@Desktop:~/Desktop/xmms-1.2.11$ ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
[...... MUITAS LINHAS PARECIDAS COM ESTAS .......]
[...... MUITAS LINHAS PARECIDAS COM ESTAS .......]
[...... MUITAS LINHAS PARECIDAS COM ESTAS .......]
checking for pthread.h... yes
checking for glib-config... no
checking for GLIB - version >= 1.2.2... no
*** The glib-config script installed by GLIB could not be found
*** If GLIB was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GLIB_CONFIG environment variable to the
*** full path to glib-config.
configure: error: *** GLIB >= 1.2.2 not installed - please install first ***
joao@Desktop:~/Desktop/xmms-1.2.11$ 

Ups.. Como vêem, o configure vai verificar se a vossa máquina tem todas a bibliotecas, ficheiros e módulos adequados à instalação do programa. "Hey, mas eu no Synaptic não faço nada disso!". Pois, não fazes porque os pacotes já tratam automaticamente das dependências :D O que são então as dependências? São tudo o que é preciso, a nível de software, drivers, etc, para que o programa X seja instalado no vosso computador. Ora, como é de esperar, vocês não têm TUDO no vosso disco. Daí, há-de haver um ou outro configure que falhe, tal como o meu falhou, por falta de uma dependência. Mas, nada de mal. Vamos simplesmente ter que instalar essa dependência. Como? Vamos usar o synaptic, for simplicity's sake! Eu, prefiro usar o aptitude, da linha de comandos. Mais l33t.. mas mais simples. O pacote que nos falta é portanto algo que tem com GLIB 1.22. Vamos a ver então o que há nos repositórios:

joao@Desktop:~/Desktop/xmms-1.2.11$ sudo aptitude search glib1.2
c   libglib1.2                                       - The GLib library of C routines                             
p   libglib1.2-dbg                                   - The GLib library of C routines (debug)                     
p   libglib1.2-dev                                   - The GLib library of C routines (development) 

Ena pá! Alguma coisa. Vamos então instalar isto:

joao@Desktop:~/Desktop/xmms-1.2.11$ sudo aptitude install libglib1.2
[Muito output depois...]
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done             
joao@Desktop:~/Desktop/xmms-1.2.11$ 

Vamos lá então fazer de novo o configure:

[ BLA BLA BLA ]
*** The glib-config script installed by GLIB could not be found
*** If GLIB was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GLIB_CONFIG environment variable to the
*** full path to glib-config.
configure: error: *** GLIB >= 1.2.2 not installed - please install first ***
joao@Desktop:~/Desktop/xmms-1.2.11$ 

Então? Mas eu já instalei! Que raio.. Pois. Não me perguntem pormenores técnicos, mas habitualmente precisamos de instalar os pacotes de desenvolvimento das bibliotecas e afins. No nosso caso, interessa-nos o pacote:

p   libglib1.2-dev                                   - The GLib library of C routines (development) 

Vamos lá ver se depois de instalado isto já funciona:

[ Depois de um sudo aptitude install e de um muitas linhas do configure ]
checking for pthread.h... yes
checking for glib-config... /usr/bin/glib-config
############# checking for GLIB - version >= 1.2.2... yes #################
checking for gtk-config... no
checking for GTK - version >= 1.2.2... no
*** The gtk-config script installed by GTK could not be found
*** If GTK was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GTK_CONFIG environment variable to the
*** full path to gtk-config.
configure: error: *** GTK+ >= 1.2.2 not installed - please install first ***
joao@Desktop:~/Desktop/xmms-1.2.11$ 

ERRO! Ai o... hey.. mas já é noutra coisa! Notem a linha realçada! Já resolvemos a nossa dependência! Agora temos é outra em mãos.. Fazendo um raciocinio análogo:

joao@Desktop:~/Desktop/xmms-1.2.11$ sudo aptitude search libgtk1.2
c   libgtk1.2                                     - The GIMP Toolkit set of widgets for X                   
c   libgtk1.2-common                              - Common files for the GTK+ library                       
p   libgtk1.2-dbg                                 - Debugging files for the GIMP Toolkit                    
p   libgtk1.2-dev                                 - Development files for the GIMP Toolkit                  
p   libgtk1.2-doc                                 - Documentation for the GIMP Toolkit                      
joao@Desktop:~/Desktop/xmms-1.2.11$ sudo aptitude install libgtk1.2 libgtk1.2-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
[ .................. ]
Reading state information... Done
Reading extended state information      
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done             
joao@Desktop:~/Desktop/xmms-1.2.11$ ./configure
[ .............. ]
[ Depois de MESMO MUITA linha de output ]
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

Configuration:
  Install path:               /usr/local
  Build OSS plugin:           yes
  Build esd plugin:           no
  Build Solaris plugin:       no
  Build BSD Sun plugin:       no
  Build ALSA plugin:          no
  Build mikmod plugin:        no
  Build Ogg Vorbis plugin:    yes
  Build OpenGL plugins:       no
  Pthread flag:               -lpthread
  Use one plugin dir:         no
  Allow user plugin dir:      yes


joao@Desktop:~/Desktop/xmms-1.2.11$ 

Vemos que faltam algumas coisa ali. Diz "no" em muitos plugins. Isto porquê: as dependências nem sempre são obrigatórias. Podem ser opcionais para alguns plugins, tal como estas. Por exemplo. Se eu quisesse o sistema de som ALSA, teria que o instalar, instalar a sua biblioteca de desenvolvimento e depois de correr DE NOVO este ./configure teria ali na linha do ALSA um "yes". Percebem a lógica não percebem?

Vamos para o passo seguinte? Já temos o nosso ./configure feito, agora, falta construir o ficheiro de instalação: make.

6) make

joao@Desktop:~/Desktop/xmms-1.2.11$ make
make  all-recursive
make[1]: Entering directory `/home/joao/Desktop/xmms-1.2.11'
[ MUITAS LINHAS ESTRANHAS DESTAS ]
make[2]: Leaving directory `/home/joao/Desktop/xmms-1.2.11'
make[1]: Leaving directory `/home/joao/Desktop/xmms-1.2.11'
joao@Desktop:~/Desktop/xmms-1.2.11$ 

Já está! Se houver algum problema durante o make, bem, eu nunca o soube ultrapassar muito bem. Terão que recorrer ao Google para ver se há de facto algum problema com os ficheiros da fonte. Mas em principio, corre tudo bem! Falta agora portanto, o passo final: make install. Este convem ser com permissoes de super-utilizador porque vamos mover e criar ficheiros em pastas como a /usr, na raiz do sistema, onde o nosso utilizador normal, habitualmente, não tem permissoes.

7) sudo make install

joao@Desktop:~/Desktop/xmms-1.2.11$ sudo make install
[ MUITAS LINHAS DEPOIS ]
make[1]: Leaving directory `/home/joao/Desktop/xmms-1.2.11/po'
make[1]: Entering directory `/home/joao/Desktop/xmms-1.2.11'
make[2]: Entering directory `/home/joao/Desktop/xmms-1.2.11'
test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin"
/usr/bin/install -c 'xmms-config' '/usr/local/bin/xmms-config'
test -z "/usr/local/share/aclocal" || mkdir -p -- "/usr/local/share/aclocal"
/usr/bin/install -c -m 644 'xmms.m4' '/usr/local/share/aclocal/xmms.m4'
test -z "/usr/local/man/man1" || mkdir -p -- "/usr/local/man/man1"
/usr/bin/install -c -m 644 './xmms.1' '/usr/local/man/man1/xmms.1'
/usr/bin/install -c -m 644 './wmxmms.1' '/usr/local/man/man1/wmxmms.1'
make[2]: Leaving directory `/home/joao/Desktop/xmms-1.2.11'
make[1]: Leaving directory `/home/joao/Desktop/xmms-1.2.11'
joao@Desktop:~/Desktop/xmms-1.2.11$ 

Et voilá! Já está. Experimentem agora fazer na consola: xmms. Funciona :) Pelo menos em mim :)

Espero que tenham percebido a mecânica da coisa:

--> ./configure --> Falta dependência --> Procurar/Instalar Dependência --> ./configure --> .... --> ./configure --> Tudo bem.

--> make ---> make install --> PROGRAMA INSTALADO

Boas instalações!

EDIT:

Para acrescentar ao post, por sugestão dos muy nobres colegas de fórum :D Uma alternativa ao último passo - make install - podemos criar um pacote que é de fácil instalação e remoção do sistema. Esse pacote pode ser obtido se em vez do passo de make install fizermos:

(Como é óbvio, precisamos previamente de ter a ferramente checkinstall instalada.)

$sudo checkinstall make install

Vejamos no caso do nosso XMMS:

joao@Desktop:~/Desktop/xmms-1.2.11$ sudo checkinstall make install

checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs?  [y]: 
[DEPOIS DE UMA PERGUNTA A MAIS E DE UM MONTE DE OUTPUT]
**********************************************************************

Done. The new package has been installed and saved to

/home/joao/Desktop/xmms-1.2.11/xmms_1.2.11-1_i386.deb

You can remove it from your system anytime using: 

      dpkg -r xmms

**********************************************************************

joao@Desktop:~/Desktop/xmms-1.2.11$ 

E ficamos com um pacotinho que, em ubuntu, basta fazer o comando a seguir para instalar (-i) ou desinstalar (-r) no nosso sistema (exemplo para instalar):

sudo dpkg -i <nome_do_pacote>

Bons empacotamentos :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito bom.

Nem sabes as vezes que me passo para instalar qualquer coisa assim, mas com calma a coisa vai ao sitio.

Só reparei numa coisa, quando instalas a dependência GTK+ >= 1.2.2 dizes: "(...)reparem na linha a negrito(...)", mas não está la nada a negrito :). A isto chama-se pormenores técnicos :D

Este tutorial já foi adicionado à lista e tutoriais.

Cump.

M.offspring.R

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito bom.

Eu só aconselhava a usarem uma ferramenta para criarem um package em vez de se fazer o "sudo make install".

Nos meus dias de Slackware gostava muito do CheckInstall. Mas deverá haver mais software que faça o mesmo. Assim uma pessoa fica com o package no sistema, e pode instalar/desinstalar à vontade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O checkinstall também funciona em debian based, bastando:

$sudo checkinstall make install

Para resolver as dependências de um pacote que esteja nos repositórios automaticamente (estão por exemplo a compilar uma versão mais recente):

#apt-get build-dep xmms

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ena pá, como é que eu faço highlight a uma linha no meio do GESHI? :)

Fiquem à vontade para comentar e dar sugestões. CR_, isso do check install cria um *.deb?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiquem à vontade para comentar e dar sugestões. CR_, isso do check install cria um *.deb?

When make install is done, CheckInstall will create a Slackware, RPM or Debian compatible package and install it with Slackware's installpkg, "rpm -i" or Debian's "dpkg -i" as appropriate, so you can view it's contents with pkgtool ("rpm -ql" for RPM users or "dpkg -l" for Debian) or remove it with removepkg ("rpm -e"|"dpkg -r").
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ena pá, como é que eu faço highlight a uma linha no meio do GESHI? :)

You don't.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ena pá, como é que eu faço highlight a uma linha no meio do GESHI? :D

Se calhar o mais fácil é enfiar-lhe um comentário à frente... :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Excelente tutorial!! Pena não o ter apanhado quando precisava dele lol... agora já sei como se faz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora porque não no fim do ./configure -> make -> make install..... ñ fazer também um make clean....  :hmm:  :)

Fica a dica....

cumps  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque é por coisas desnecessarias IMO :D Achas que teria valor para um iniciante? (pergunta completamente inocente :))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora porque não no fim do ./configure -> make -> make install..... ñ fazer também um make clean....  :hmm:  :)

Fica a dica....

cumps  :D

Eu ia mais para um rm -r...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora