Seguindo a minha febre Python, passei mais este aplicativo para uma versão escrita em Python. Tive que fazer algumas mudanças mas no final o aplicativo ficou bem mais simples e fácil de implementar. Agora o slackmirror permite gerenciar cópias dos espelhos do Slackware, Slamd64 e Bluewhite64, com apenas um comando.
Mudanças
Seleção de espelhos
Dentre as mudanças, o arquivo de configuração dos espelhos, /etc/slackmirror/mirrors, teve que sofre algumas mudanças para atender a diversidade de estruturas dos espelhos Slack-like. A estrutura das linhas de endereço ficou assim:
distro%modo%url_base
O distro é o nome da distribuição: slackware, slamd64 ou bluewhite64. O modo foi necessário devido a diversidade de estruturas encontradas nos espelhos Slack-like, veja descrição abaixo:
- 0 – se o FILELIST.TXT está na url_base, como:
url_base/FILELIST.TXT - 1 – se o FILELIST.TXT está em url_base/distro, como:
url_base/slackware/FILELIST - 2 – se o FILELIST.TXT está em url_base/distro/distro_version:
url_base/slamd64/slamd64-12.1/FILELIST.TXT - 3 – se o FILELIST.TXT esta em url_base/distro_version:
url_base/slamd64-12.1/FILELIST.TXT
Fiz o cadastro de todos os espelhos disponíveis na ocasião, chequei as estruturas e já deixei as linhas prontas para serem selecionadas. Para a seleção de um espelho específico basta remover a tralha (#) da linha desejada. Selecione apenas uma linha para cada distribuição.
Filtros
Fiz algumas mudança na atuação dos filtros:
- git – remove arquivos e diretório .git da lista de downloads
- source – remove todas as fontes da lista de downloads
- lang – remove todas os pacotes de linguagem, exceto a linguagem selecionada
Agora estes filtros podem ser selecionados independentemente com a opção “–enable”.
Outras opções
Adicionei a opção “halt”, para desligar a máquina após o termino do download. Para que isto funcione o usuário deve ser capaz de executar comandos através do “su -c”, “sudo”, ou ser o root. Para configurar o “su” leia o “man suauth”.
Exemplos de uso
Veja alguns exemplos de uso do slackmirror abaixo:
slackmirror -d slamd64 -u
Atualiza (-u) um espelho da distribuição (-d) slamd64
slackmirror -u -f -n
Atualiza um espelho do Slackware (distribuição padrão, não necessita do -d). O -f serve para forçar a atualização, o que é necessário quando o slackmirror é interrompido por um CONTROL+C, durante uma criação ou atualização de um espelho. O (-n) é útil quando a rede está instável e a transmissão quebra. Neste caso, erros no download serão ignorados.
slackmirror -d bluewhite64 -c --http-proxy http://192.168.1.1:8080 --ftp-proxy http://192.168.1.1:8080
Cria (-c) um espelho da distribuição (-d) bluewhile64 através do proxy 192.168.1.1, porta 8080
slackmirror -d bluewhite64 -u -q
Atualiza o espelho do bluewhite64, sem as fontes e os pacotes de linguagem diferentes dos selecionados (-u). Útil para um download rápido.
slackmirror -d bluewhite64 -u --set-kde pt_BR --set-aspell pt --enable lang_filter
Atualiza o espelho do bluewhite64, configura a linguagem padrão do KDE para “pt_BR” e do Aspell para “pt” e por fim, habilita a filtragem dos pacotes de linguagem.
O link para a última versão do aplicativo segue abaixo:
Arquivo de configuração
Algumas definições padrões do slackmirror podem ser feitas no arquivo /etc/slackmirror/slackmirror.conf. Este arquivo está todo comentado e preenchido com algumas definições, que devem ser alteradas em acordo com as necessidades pessoais de cada usuário.
Como um exemplo, o comando “su -c halt”, usado para desligar o sistema, pode ser substituído pelo “sudo halt”, alterando o conteúdo da variável HALT_COMMAND. Veja algumas variáveis funcionais abaixo:
- MIRROR_PATH – diretório onde as cópias dos espelhos serão armazenadas (/home/ftp/distro);
- ISO_PATH – diretório onde as isos geradas pelas opções “mkiso” e “burning” serão armazenadas (/home/ftp/distro/isos);
- DISTRO – distribuição padrão (slackware);
- DISTRO_VERSION – versão padrão (current);
- GIT_FILTER – habilita o filtror git. Remove da lista de download todos os arquivos contidos em diretórios “.git”, muito comum durante as atualizações dos espelhos das distribuições (True);
- LANG_ASPELL – linguagem padrão para o aspell (pt);
- LANG_KDE – linguagem padrão para o KDE (pt_BR);
- SOURCE_FILTER – habilita por padrão o filtro de fontes (False);
- LOG – habilita ou desabilita a criação do arquivo de log (False);
- LOG_FILENAME – nome do arquivo de log (/tmp/slackmirror-PID.log). O PID é substituído pelo ID do processo.
- LANG_FILTER – habilita por padrão o filtro de linguagem (False);
- DEV_DVD – dispositivo padrão para o gravados de DVD (/dev/dvdrw);
- HTTP_PROXY – define o endereço do proxy http. Algo como http://1.2.3.4:8080 (vazio)
- FTP_PROXY – define o endereço do proxy ftp (vazio)
- GOPHER_PROXY – define o endereço do gopher proxy (vazio)
- HALT_COMMAND – comando padrão para desligar o computador (su -c halt);
Manual
Para uma lista completa dos comandos execute apenas slackmirror:
slackmirror - 3.0.85
SLACKMIRROR - Manage Slackware mirrors
SYNOPSIS:
slackmirror [ONE ACTION] [OPTIONS]...
DESCRIPTION:
Manage Slackware or Slack-like mirrors.
ACTIONS:
--help, -h
This help
--create, -c
Create a new mirrors
--upgrade, -u
upgrade mirror. Default action
--clean, -l
Remove extra files and directories
--show, -s
Show to the OPTIONS defaults
--version, -v
Show program version
--mkiso, -m
Make a DVD iso
--burning, -b [dvd_iso]
Burning a DVD iso. If [dvd_iso] is not found make it before.
OPTIONS:
--verbose, -V
Enable verbose mode
--no-stop, -n
Ignore download error
--distro , -d
change DISTRO to : slackware, slamd64, ...
--distro-version, -i
change DISTRO_VERSION to : 11.0, 12.0, current,
...
--quick, -q
Fast options. Skip out languages, .git and sources files
--force, -f
Force upgrade. Don't check FILELIST.TXT upgrade.
--halt, -a
shutdown system when finished. If you are not the root, edit
/etc/suauth (see suauth manual for details)
--enable /--desable
Enable/desable . Here is: log_status, lang_filter,
git_filter, source_filter
--set-kde
Set kde default language download.
--set-aspell
Set aspell default language download.
--gui-mode
Set GUI mode output.
--http-proxy
--ftp-proxy
Bug conhecido
No momento o único bug conhecido é com respeito a opção “–burnning”. Ela necessita que o nome de uma iso seja passado. Isto se deve a uma limitação da lib que gerencia a passagem de parâmetros. Como ainda não tive uma definição sobre o procedimento a tomar, o deixei como esta.

Tu gostou mesmo do Python heim amigo! Ainda não tive “chances” de criar aplicativos úteis, nem em shell e nem em ruby que é uma linguagem que pretendo brincar.
Mas bem, quando eu tiver um link descente, quem sabe utilize suas apps python-likes…
Amigo… Por favor, gostaria da versao anterior do Slackmirror… a 2.x
Pode me mandar por favor???
Seria interessante manter um histórico de versões no seu site.
Tem um Changelog na distribuição do aplicativo, mas pretendo colocar uma cópia no site, apenas esta aguardando uma reedição da página.