Slackcurrent - Mantenha seu Slackware atualizado!
English version
O que é o Slackcurrent?
Slackcurrent é um pacote para checar por novas versões dos pacotes instalados
na sua máquina no "current set" do Slackware, em algum site mirror que você escolhe de
uma lista.
Ele pega a lista de pacotes instalados localmente, se necessário atualiza a lista dos
pacotes remotos baixando do site mirror, e compara tudo. Se algum pacote local está
desatualizado, você será informado disso.
Eu achei que ele fazia mais coisas.
Não, só faz isso. Ele é baseado fortemente no princípio KISS (Keep It Simple, Stupid -
deixe simples, estúpido ;-), então é realmente um pequeno programa que pode ajudar
para apenas verificar pacotes novos.
Tem mais programas que fazem isso.
Sim, mas eles presumem que você quer verificar os pacotes novos e efetuar download neles
automáticamente. Suponha que você tem uma conexão discada com um modem de 56k em casa e
uma conexão rápida no serviço (estou presumindo que você a possa utilizar sem problemas)
e quer atualizar o seu Slackware de casa. Melhor ainda, você nem precisa rodar o Slackware
no seu serviço, você está usando outra distro ou aquele sistema operacional feio. Seria uma
boa idéia você apenas verificar os pacotes novos em casa e efetuar o download deles
no seu serviço, certo?
Tá, parece legal. Mas como posso fazer isso?
Slackcurrent vai gerar um arquivo com a lista dos pacotes que precisam ser atualizados.
Apenas a lista. Você faz o que quiser com ela. Copie para um disquete e leve com você para o
seu serviço para efetuar o download, mande para o seu email, mande por ftp para o seu computador
no serviço, mande para o seu tio, faça uma lista dos arquivos mais novos e coloque em seu site,
você escolhe.
O arquivo da lista é chamado slackcurrent.list.
Ok, e agora? Já estou com a lista.
Use um gerenciador de downloads como o
wget
para pegar seus arquivos. Você pode usar assim:
wget <suas opções aqui> -i slackcurrent.list
Tem algum jeito de verificar a integridade dos arquivos?
Sim, com certeza. Slackcurrent presume que cada pacote que precisa de
atualização tem um arquivo .asc com o mesmo nome do pacote, e tenta efetuar o download
dele. Pode ser que tenha, pode ser que não. Mas depois de efetuar o download dos pacotes e dos
arquivos .asc depende de você checar suas assinaturas. Mantenha a coisa simples. :-)
Você pode usar para isso a opção -cs/--check-sign (veja abaixo).
Mas eu não quero fazer download dos arquivos do kernel! Eu compilo o meu kernel!
Duas opções: você pode editar a lista e remover os arquivos que você não quer efetuar o
download ou você pode usar o arquivo de blacklist que fica em /etc/slackcurrent.
Eu acho que a segunda opção é uma boa. :-)
Quais são as opções que eu tenho para rodar?
Elas são:
- -v ,--version Mostra o cabeçalho do Slackcurrent com a versão corrente.
- -ul,--update-list Atualiza a lista dos arquivos remotos.
- -ll,--list-local Lista seus pacotes locais (basicamente o mesmo que ls /var/log/packages).
- -lr,--list-remote Lista os arquivos remotos que estão na atualização mais recente da lista remota.
- -lb,--list-blacklist Lista os arquivos da blacklist.
- -ln,--list-new Mostra os arquivos novos desde a mais recente atualização da lista.
- -cs,--check-sign Verifica as assinaturas ASC dos pacotes.
- -um,--update-mirrors Atualiza a lista de arquivos de mirrors.
- -u ,--upgrade Verifica atualizações e cria (e mostra para você, se você quiser) a lista de arquivos que precisam de atualização.
- -ut,--upgradetesting Faz a mesma coisa da opção acima, mas inclui o diretório de testing.
- -df,--download-from Verifica e faz download dos pacotes necessários locais de algum diretório em algum computador na sua rede local.
Ainda estou meio confuso em como usar ...
Ok, pegue o pacote mais recente
aqui, instale no seu Slackware
e digite,
como root:
slackcurrent.py -u <software set>
Como é a primeira vez que você roda o
Slackcurrent, ele vai ver que não tem uma
lista com os pacotes remotos, vai lhe dizer isso e perguntar se você quer efetuar o download.
Se você não efetuar o download da lista você não vai ter jeito de comparar os seus pacotes remotos
com os pacotes do "current set", então é
obrigatório que você efetue o download da lista.
É um arquivo com mais ou menos 500kb.
Mas ele só vai te pedir para efetuar o download da lista se ele souber de onde você vai baixar.
Descomente
apenas uma linha com o servidor que você quer usar no arquivo
/etc/slackcurrent/mirrors. Você pode atualizar a lista também usando a opção
-um.
Depois de escolher um servidor e efetuar o download da lista dos arquivos mais recentes, você
terá a lista de pacotes que precisa rapidamente.
Uma dica rápida: o
Slackcurrent vai lhe informar se a lista local com os arquivos remotos
tem mais de 1 semana.
Alguns exemplos de uso:
slackcurrent.py -u slackware
slackcurrent.py -u slackware/xap
slackcurrent.py -u slackware/gnome
slackcurrent.py -u extra
O que eu preciso para rodar?
Um computador rodando Slackware e a linguagem
Python instalada.
Onde posso baixar o Slackcurrent?
Aqui. É um arquivo bem pequeno.
E a licença é ...
GPL. Sempre.
Tem mais alguma documentação?
Martin Sinkovec escreveu um HOWTO
sobre como atualizar para o current usando o Slackcurrent. Obrigado, Martin!
Outro artigo legal
aqui, por Mike Oliveri. Obrigado Mike!
Um artigo do Underlinux por Vagner "BugReport" Rodrigues Fernandes. Obrigado, Vagner!
Ei, legal, eu sei programar em Python!
Bom! Então você pode usar os recursos do Slackcurrent em seus programas. Deixe-me mostrar algumas opções:
Python 2.4.1 (#1, Apr 10 2005, 22:30:36)
[GCC 3.3.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import slackcurrent
>>> p1 = slackcurrent.SlackPack("xyz-1.2.3-i386-1.tgz")
>>> p2 = slackcurrent.SlackPack("xyz-1.2.4-i386-1.tgz")
>>> p1 > p2
False
>>> p2 > p1
True
Usando o código acima, eu importei os métodos e objetos do Slackcurrent dentro do meu programa e
criei dois pacotes fictícios para verificar se a comparação está funcionando. Como podemos ver, o
primeiro pacote é mais antigo que o segundo.
>>> slackcurrent.downloadremotelist()
Downloading
http://www.slackware.at/data/slackware-current/FILELIST.TXT
Isso efetua o download da lista nova no seu computador local. É uma boa idéia fazer isso antes
de chegar por atualizações. Ele apenas efetua o download de um arquivo com cerca de 500kb (FILELIST.TXT).
>>> locallist = slackcurrent.getlocallist()
>>> print locallist[10].name,locallist[10].version
alsa-lib 1.0.9
Pega a lista de pacotes locais e retorna o
objeto (preste atenção aqui, é um objeto SlackPack
com nome, versão, blá, blá, blá) que está na décima posição (apenas uma escolha aleatória).
>>> remotelist = slackcurrent.getremotelist()
>>> print remotelist[10].name,remotelist[10].version
xpaint 2.7.0
Pega a lista de pacotes remotos e retorna outro pacote aleatório.
>>> upgradelist = slackcurrent.getupgradelist()
>>> print upgradelist[0]
http://www.slackware.at/data/slackware-current/slackware/kde/koffice-1.4.2-i486-1.tgz
>>> print upgradelist[1]
http://www.slackware.at/data/slackware-current/slackware/kde/koffice-1.4.2-i486-1.tgz.asc
Pega a lista de pacotes que precisam de atualização. Por favor note que nesse caso não é uma lista de
objetos de pacotes, mas uma lista com a) a URL do pacote b) a URL da assinatura do pacote. Para saber
quantos pacotes precisam de atualização, você pode usar
>>> len(upgradelist)/2
1
E podemos usar
>>> p = [i for i in upgradelist if i.endswith("tgz")]
>>> p
['http://www.slackware.at/data/slackware-current/slackware/kde/koffice/1.4.2-i486-1.tgz']
para pegar apenas os pacotes e
>>> p = [i for i in upgradelist if i.endswith("asc")]
>>> p
['http://www.slackware.at/data/slackware-current/slackware/kde/koffice/1.4.2-i486-1.tgz.asc']
para pegar apenas os arquivos com as assinaturas.
Algo mais ...
50% da doação irá para The Python Software Foundation