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 https://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.