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