Download de pacotes .deb com todas suas dependências

Apesar do mundo estar cada vez mais conectado à Internet, às vezes enfrentamos alguns problemas que nos impossibilitam de ter o acesso à rede. Um exemplo interessante seria a mudança de casa e o pedido de transferência de um serviço ADSL para um novo endereço, por exemplo.

Vivendo este problema necessitava instalar o pacote gphpedit no computador em casa. Porém não encontrava nenhuma maneira fácil de fazê-lo devido à quantidade de depedências que eu precisava copiar através da rede de um amigo e levá-las em um dispositivo móvel de armazenamento qualquer: um pendrive, cd ou algo do tipo.

Poderia até utilizar o Synaptic para procurar o devido pacote e gerar através dele um script para fazer o download das dependências, mas o objetivo era fazer diretamente pelo console.

Cheguei até a improvisar um shell script para fazer isso, mas a solução era limitada, pois o script pegava somente as dependências do gphpedit. Se alguma biblioteca necessária para a instalação do gphpedit precisasse também de uma outra biblioteca ou pacote, o script não a pegava.

Foi daí que recebi uma dica do Theo para usar o apt-rdepends e conseguir listar recursivamente todas as dependências. O único problema é que ele não tem a capacidade de fazer o download destes pacotes diretamente. E novamente tive que montar um script para fazer isso.

Uma  nota é que o apt-cache também proporciona a listagem de dependências do pacote, mas não de maneira recursiva.

Caso queira ver as dependências pelo apt-cache apenas rode:

# apt-cache depends nomedopacote

Não conhecia o apt-rdepends pois não vem instalado por padrão no Debian/Ubuntu. Para instalá-lo rode:

# aptitude install apt-rdepends

Bom, depois ainda resta um trabalhinho sujo para criar o script, mas é bem fácil. Antes de começar crie um diretório para que na inicialização dos downloads os pacotes não fiquem espalhados.

# mkdir gphpedit

# cd gphpedit

Para criar o script faça:

# apt-rdpends gphpedit > depends.sh

# chmod u+x depends.sh

# vi depends.sh

Na primeira linha do arquivo adicione o interpretador: #!/bin/bash

Substitua o nome dos pacotes que possuem dependências com o seguinte comando no vi:

ESC +  :%s/^[a-z]/#\1/g

Note que agora todos os pacotes ficaram com um comentário na frente. O próximo passo é alterar o valor dos termos “Pré-Depende:” ou “Pre-Depends:” para “aptitude download”. Novamente no vi faça:

ESC + :%s/Pré-Depende:/aptitude download/g

(Se seu sistema estiver na língua inglesa utilize “Pre-Depends”:).

Agora altere somente os termos “Depende:”  da mesma maneira:

ESC + :%s/Depende:/aptitude download/g

(Se seu sistema estiver na língua inglesa utilize Depends:).

Ficou faltando apenas um detalhe. Apagar as informações sobre versões delimitadas entre parênteses. Nada que uma pequena expressão regular não ajude:

ESC + %s/\((.\+\)//g

Bom, agora é só executar seu script e esperar pelo download.

# ./depends.sh

Advertisements

4 thoughts on “Download de pacotes .deb com todas suas dependências

  1. Gostaria de saber como fazer, esse procedimento para baixar em uma prataforma windows, pois tenho o ubuntu 9.10, mais as maquinas que acesso a internet são com windows, como devo proceder ? por favor me ajude!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s