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:

Slackmirror-3.2.11

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.