Checkinstall criando pacotes DEB

29 05 2007

Criando pacotes a partir dos fontes com o checkinstall

Dicas do Guia do Hardware

Todas as distribuições incluem um conjunto generoso de pacotes, seja diretamente nos CDs de instalação, seja em repositórios disponíveis via web. Mesmo assim, muitos drivers e softwares não estão disponíveis nos repositórios e precisam ser instalados manualmente a partir do código fonte. O checkinstall facilita esta tarefa, gerando um pacote .deb, .tgz ou .rpm com o software pré-compilado, que pode ser instalado usando o gerenciador de pacotes de cada distribuição.

Por:
Carlos E. Morimoto
03/04/2005

Todas as distribuições incluem um conjunto generoso de pacotes, seja diretamente nos CDs de instalação, seja em repositórios disponíveis via web. Os repositórios oficiais do Debian, por exemplo, combinados com o repositório non-free e mais alguns repositórios não oficiais podem facilmente oferecer mais de 22.000 pacotes diferentes.

Mesmo assim, muitos drivers e softwares não estão disponíveis nos repositórios e precisam ser instalados manualmente a partir do código fonte. O checkinstall facilita esta tarefa, principalmente se você precisa instalar o mesmo software em várias máquinas ou quer distribuí-lo para amigos, gerando um pacote .deb, .tgz ou .rpm com o software pré-compilado, que pode ser instalado usando o gerenciador de pacotes de cada distribuição.

Para usá-lo, comece instalando o pacote usando o apt-get, urpmi, yun ou outro gerenciador de pacotes usado na sua distribuição. Ele é um pacote bastante comum, que vem incluído em todas as principais distribuições. No Debian por exemplo bastaria um:

# apt-get install checkinstall

O funcionamento do checkinstall é simples. Ao instalar qualquer pacote a partir do pacote com o fonte, substitua o comando ” make install” pelo comando apropriado do checkinstall. Onde:

# checkinstall -D

(gera um pacote .deb, para distribuições derivadas do Debian)

# checkinstall -R

(gera um pacote .rpm, que pode ser usado em distribuições derivadas do Red Hat)

# checkinstall -S

(gera um pacote .tgz, do Slackware)

Por exemplo, para gerar um pacote contendo os módulos e utilitários do driver para modems 537EP, disponível no http://linmodems.technion.ac.il/packages/ os comandos seriam:

$ tar -zxvf intel-537EP-2.60.80.0.tgz
$ cd intel-537EP-2.60.80.0/
$ make clean
$ make 537
# checkinstall -D

Lembre-se que o checkinstall deve ser sempre executado como root. Ele vai gerar o pacote, salvando-o no diretório a partir de onde foi chamado (/home/kurumin/intel-537EP-2.60.80.0/intel-537ep-2.60.80.0_2.60.80.0-1_i386.deb no meu caso) e em seguida instalá-lo na sua máquina.

Durante a geração do pacote, ele fará algumas perguntas, a fim de gerar o arquivo de controle que contém informações como o mantenedor do pacote (você no caso), uma descrição do pacote (um texto de poucas linhas explicando o que ele faz) e a versão.

Ao gerar seus próprios pacotes, você pode ter problemas de instalação, caso seu pacote inclua algum arquivo que também existe em outro pacote, gerando erros como:

(Lendo banco de dados … 68608 arquivos e diretórios atualmente instalados.)
Descompactando intel-537ep-2.60.80.0 (de …/intel-537ep-2.60.80.0_2.60.80.0-1_i386.deb ) …
dpkg: erro processando /home/kurumin/intel-537EP-2.60.80.0/intel-537ep-2.60.80.0_2.60.80.0-1_i386.deb (–install):
tentando sobrescrever `/lib/modules/2.6.8.1-kanotix-10/modules.usbmap’, que também está no pacote qemu
dpkg-deb: subprocesso paste morto por sinal (Broken pipe)
Erros foram encontrados durante processamento de:
/home/kurumin/intel-537EP-2.60.80.0/intel-537ep-2.60.80.0_2.60.80.0-1_i386.deb

Nestes casos você pode modificar o pacote, para não incluir o arquivo. Desinstalar o outro pacote com quem ele conflita (o qemu no caso) ou, caso perceba que é um problema benigno, que não trará maiores conseqüências, forçar a instalação do seu pacote, para que ele subscreva o arquivo usado por outro.

No caso de um pacote .deb, o comando para forçar a instalação seria:

# dpkg -i –force-all pacote.deb

No caso de um pacote do .rpm, o comando seria:

# rpm -iv –replacefiles pacote.rpm

ou:

# rpm -iv –force pacote.rpm

Existem algumas limitações gerais com pacotes pré-compilados, que você deve levar em consideração.

Em primeiro lugar, o pacote gerado foi compilado para a sua máquina e para a distribuição atualmente em uso. Não existe garantia que o mesmo pacote vai funcionar para distribuições diferentes, mesmo que elas utilizem o mesmo padrão de pacotes.

No caso de pacotes contendo drivers, como o driver para modems 537EP que usei no exemplo, é gerado um módulo pré-compilado, que vai funcionar apenas em distribuições que utilizem a mesma versão do Kernel. Ou seja, basicamente apenas na mesma versão da mesma distribuição que você está usando. Não adianta compilar um pacote no Mandrake 10.2 e esperar que ele funcione no Slackware 11 por exemplo.

Dica:
O Ubuntu é baseado em Debian. Crie pacotes “.DEB” e depois basta fazer duplo clique em no nome do ficheiro.deb para o executar.

Fonte: Guia do Hardware

Anúncios

Acções

Information

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s




%d bloggers like this: