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:

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.

Quem diabos é você?

O pessoal me conhece por "TaQ". Aqui está meu email e meu site.

Algo mais ...

SourceForge.net Logo

Support This Project 50% da doação irá para The Python Software Foundation