Peregrinos da Alvorada aqui do Viva o
Linux, aqui começa mais uma Dica do Dino® pronta para compartilhar algumas das informações que ele próprio ouviu de Ramandu. Hoje vamos a uma dica rapidinha, dessas que em dez minutos você começa, faz, e fica feliz. Para quem não sabe, o slackpkg é
de facto o gerenciador de pacotes padrão do Slackware, funcionando sobre a ferramenta padrão da distro (o pkgtool).
O
slackpkg usa o wget para fazer o download de pacotes, listas de pacotes, chaves gpg e todas as informações necessárias para a sua tarefa. O que pouca gente sabe é que você pode usar outros programas no lugar do wget para fazer os tais downloads. Você pode usar o curl, o axel, enfim, qualquer programa que faça o download de dados via terminal.
Interessado? Então pegue seu computador de confiança, encare os mares bravios até o fim do mundo e encare os domínios do Imperador com esta Dica do Dino® ao seu lado!
Observação importante: esta dica não vai funcionar em seu computador caso o slackpkg+ esteja instalado. Aguarde até eu encontrar um
workaround para essa questão.
1. Requisitos
Para substituir o wget, você precisa de um programa para linha de comando que faça o download de dados. Pode ser o curl, o axel (que não é o Rose), aria2, não importa. Além disso, você precisa ter uma boa noção de como ele funciona, quais opções usar, e fundamental: o programa precisa ter uma opção que permita definir o nome com o qual o arquivo será salvo no disco, tipo o -O do wget.
Além disso, você precisa saber o caminho completo na árvore de diretórios para o executável do programa. Isso se resolve fácil com um:
# which programa
É importante rodar isso como root, já que o slackpkg não funciona com o usuário comum e pode ser que como root o caminho para o programa seja diferente (bem-vindo ao fantástico mundo dos vínculos simbólicos).
2. Como fazer
Para usar o programa de sua preferência é preciso alterar dois arquivos de configuração do slackpkg. O primeiro é o /etc/slackpkg/slackpkg.conf. Localize a linha 74 desse arquivo, que deve ser essa aqui:
WGETFLAGS="--passive-ftp"
Após essa linha coloque:
DOWNLOADER="/caminho/completo/para/programa"
programaFLAGS="opções de sua escolha para o programa"
Alguns detalhes importantes sobre essas duas linhas:
- as aspas são obrigatórias;
- /caminho/completo/para/programa é, na verdade, a saída do # which programa;
- programaFLAGS (que será AXELFLAGS caso você queira usar o axel, por exemplo, e por aí vai) deve definir todas as opções de sua escolha. Por exemplo, no caso do axel você pode querer definir AXELFLAGS="-S10 -n10 -a".
Agora é preciso alterar outro arquivo, o /usr/libexec/slackpkg/core-functions.sh. Localize nesse arquivo o bloco de texto que começa na linha 71:
LOCAL=0
if [ "$DOWNLOADER" = "curl" ]; then
DOWNLOADER="curl ${CURLFLAGS} -o"
else
DOWNLOADER="wget ${WGETFLAGS} -O"
fi
Altere-o para:
LOCAL=0
if [ "$DOWNLOADER" = "curl" ]; then
DOWNLOADER="curl ${CURLFLAGS} -o"
elif [ "$DOWNLOADER" = "/caminho/completo/para/programa" ]; then
DOWNLOADER="/caminho/completo/para/programa ${programaFLAGS} -opção-para-definir-nome-do-arquivo-destino"
else
DOWNLOADER="wget ${WGETFLAGS} -O"
fi
Você já sabe o que significa /caminho/completo/para/programa, então vamos ver a novidade aqui: o que significa -opção-para-definir-nome-do-arquivo-destino. Substitua esse matacão de texto pela opção que permite ao usuário do programa no terminal definir com qual nome o arquivo baixado será salvo. No axel e no curl, por exemplo, essa opção é o -o; no wget, -O. Leia a manpage do seu programa para saber como fazer isso.
Conclusão
E com isso termina mais uma Dica do Dino®, mostrando a você como instruir seu slackpkg a funcionar como você mais gosta. Após realizar todos esses procedimentos o slackpkg já reconhecerá as alterações e, portanto, usará o programa que você definiu aí bonitinho. Quem quiser mais referências pode consultar o tópico que deu origem a esta dica em:
Fiquem com "Bob" Dobbs e tenham noites e noites de compilação longa e próspera!