Esta dica tenta demonstrar algumas soluções para um antigo problema com o qual tinha me deparado: como baixar pacotes de uma distribuição
Linux se eu tenho acesso a internet somente fora de casa e podendo usar somente o MS Windows.
Bom, tudo começou há um tempo quando fiquei sem acesso à internet em casa (só podia acessar através de cybercafes/lanhouses), logo me deparei com um problema.
Como é que eu vou atualizar meu sistema se nos cybercafes só encontro Windows?
Passei um bom tempo, dia a dia, gastando uns 10 minutos procurando soluções. Encontrei algumas dicas, mas nada que fosse satisfatório.
Foi então que o tempo passou e fui juntando uma série de pequenos scripts (bem simples), até que o tempo passou e vi que algumas pessoas poderiam usufruir da ideia.
Estes dias estava procurando alguma solução específica para distros mais populares e assim encontrei um programa bem legal que evitou que eu reinventasse a roda. Trata-se do
Keryx:
Este aplicativo trabalha com repositórios APT. Não cheguei a testá-lo, pois não uso muito distros "Debian based" (no entanto sou usuário de
Ubuntu casual e a acho excepcional), mas pude perceber que o aplicativo é de ótima qualidade.
Entretanto, logo mais tarde notei um problema. Segundo LSB, o gerenciador de pacotes padrão é o RPM, quando fui procurar na internet o mesmo tipo de programa não encontrei, foi aí que decidi criar em algumas horas um pequeno exemplo de como isso poderia ser solucionado.
Basicamente o que precisamos é:
- Analisar as dependências do pacote (isso nos da arquivos como bibliotecas)
- Através dos arquivos procurar quais pacotes resolvem estas dependências
- Guardar o nome do pacote em um arquivo
- Fazer o procedimento 1 até que todas as dependências das dependências estejam resolvidas
Para fazer isto precisamos dos "metadados" dos pacotes. Quando fui fazer os scripts notei que precisávamos somente do
primary.xml. Neste arquivo XML precisamos de poucas "tags". No fim resolvi deixar de lado o XML e otimizar o arquivo para que eu pudesse ao menos apresentar algo um pouco viável (é, ficou lento mas é ilustração rsrs) de ser feito em AWK!
Bom, não vou entrar em maiores detalhes, qualquer coisa deem uma olhada no código fonte.
Obs.: Primeiramente, é claro, fazemos o download dos utilitários que criei (exceto wget e suas dependências!)
Listando os pacotes a serem baixados
Extraímos o arquivo e digitamos:
./yumpkgs -d -p pacote1,pacote2,pacoteN
Baixando os pacotes do Windows
Copiamos os arquivos do diretório "yumpkgs/" para o pendrive.
Quando estivermos em uma estação Windows, vamos até o pendrive e apenas clicamos duas vezes sobre o arquivo "download.bat".
Para instalar os pacotes
Bom, instalar é fácil, vou apresentar a forma mais simples:
# rpm -i /mnt/usbstick/downloads/*.rpm
Você vai notar que alguns pacotes precisam ser instalados antes de outros. ;P
Sinta-se livre para modificar o código fonte a fim de satisfazer suas necessidades...
Este é meu primeiro artigo, espero que tenham encontrado algo útil nele. No mais peço desculpa caso haja alguns erros tanto no aplicativo quanto na ortografia aqui demonstrado!