Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Criando Pacotes Task para APT
Colaboração: André Pereira
Data de Publicação: 27 de Janeiro de 2007
Quem já usou a distro Conectiva Linux conhece bem os pacotes "task". Para quem não os conhece aqui vai uma breve explicação: pacotes "task" são pacotes vazios, que não possuem nenhum tipo de software. Possuem apenas uma série de dependências.
Mas qual a finalidade disso? Simples!
Estes pacotes existem para realizar tarefas. Por exemplo, um pacote chamado task-lamp poderia ser responsável por instalar todos os pacotes referentes a um servidor LAMP (Linux, Apache, Mysql e PHP) e suas respectivas dependências.
Neste artigo demonstrarei uma forma fácil de criar um pacote task.
Os comandos abaixo foram testados no Ubuntu Edgy.
O software que iremos utilizar para este fim é o equivs, portanto:
$ sudo apt-get install equivs
Uma vez instalado o equivs devemos criar um arquivo de controle padrão, o qual será utilizado para gerar o pacote, e então editá-lo conforme as nossas necessidades:
$ equivs-control task-myprofile
onde "task-myprofile" é o nome do arquivo de controle a ser criado e futuramente será o nome do pacote.
Você também pode usar o arquivo modelo abaixo ou mesmo exemplos que acompanham a instalação do equivs (/usr/share/doc/examples/).
### Criado em: 20/01/2007
### André Pereira <andre@capengenharia.com.br>
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: andresp-default
Version: 0.1
Maintainer: André Pereira <andre@capengenharia.com.br>
Depends: acroread,broffice.org,firefox,gwenview,k3b,kget,
knotes,kpdf,ksnapshot,ktorrent,mozilla-mplayer,
mozilla-plugin-vlc,mplayer,xmms
Description: Pacote Task com os meus softwares desktop mais usados.
Uma vez criado e editado o arquivo de controle, é hora de construir o pacote, para isso usa-se o comando equivs-build
$ equivs-build task-myprofile
Isto irá gerar o arquivo .deb que depende dos seus pacotes favoritos.
Pronto! Agora o seu pacote .deb que possui apenas as dependências que você quer instalar está pronto, porém, não é possível instalar este pacote diretamente via dpkg (dpkg -i task-myprofile_...-.deb), a instalação não será efetuada devido aos "problemas" de dependência (lembre-se, o dpkg não resolve dependências automaticamente, quem o faz é o APT).
Para instalar o pacote recém criado via APT, é necessario configurar um repositorio local de pacotes .deb:
Crie um diretorio para o seu repositorio:
$ sudo bash (vamos trabalhar como root) # mkdir /home/apt-local
Copie o arquivo .deb para este diretorio:
# cp /<caminho>/<nomedopacote>.deb /home/apt-local
Detro do diretorio /home crie o arquivo Packages.gz do repositorio:
# cd /home
# dpkg-scanpackages apt-local/ /dev/null | gzip > apt-local/Packages.gz
Adicione o novo repositorio no sources.list
# echo "deb file:/home apt-local/" >> /etc/apt/sources.list
Atualize a base apt
# apt-get update
E finalmente instale o pacote
# apt-get install <nomedopacote>
Observação:
A criação de pacotes vazios tem outras finalidades além da descrita neste artigo.
Imagine o seguinte cenário: você está montando um servidor e decide compilar o Apache manualmente por questões pessoais de configuração, ao invés de instalá-lo via APT. Até ai tudo bem. Porém, se você tentar instalar via APT algum pacote que dependa do Apache, o APT tentará instalar novamente o Apache, uma vez que ele "não sabe" da existência do Apache compilado.
Uma forma elegante de resolver este problema é criar e instalar um pacote vazio referente ao Apache que foi instalado manualmente, desta forma a base APT saberá que o Apache já está instalado e não tentará instalá-lo novamente, preservando a sua compilação / instalação. Para isso use a opção "Provides" no arquivo de controle do equivs. Mas ATENÇÃO: não é nem um pouco recomendada a utilização deste recurso para resolver dependências quebradas. Instalar pacotes sem suas respectivas depências podem provocar erros imprevisíveis no sistema.
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.



