slackpkg

O Desenvolvimento de Uma Ferramenta Livre

A Origem

Uma necessidade direta:

Atualizar os patches de segurança do slackware.

Um desafio:

Mostrar ao meu chefe que é fácil fazer a atualização.

Uma tarde:

slackpkg 0.90

Antes de Começar

Escolha da Linguagem

Shell Script e AWK

Todos os scripts de configuração do slackware são escritos em shell script.

Inovar? Ou mais do mesmo?

Utilizar apenas informações que estão disponíveis no próprio slackware, nada externo.

Para quê serve?

Inicialmente apenas para atualizar patches de segurança.

A primeira versão já conseguia instalar e remover pacotes.

Depois do release, diversas sugestões de usuários, umas sendo aceitas e outras não.

Como Funciona?

Método Tradicional

Usuário escolhe um mirror

Usuário lê o ChangeLog e vê se algo mudou

Usuário baixa os pacotes que foram alterados

Usuário faz o upgrade

Como Funciona?

Método slackpkg

Usuário escolhe um mirror

slackpkg baixa lista com os pacotes e os arquivos contidos neles

Slackpkg olha as listas e verifica o que mudou

Slackpkg realiza o download dos pacotes necessários

Slackpkg faz o upgrade/install dos pacotes solicitados

Escolhendo o Mirror

Todos os mirrors do slackware possuem a mesma estrutura.

A escolha do mirror correto é muito importante, o slackpkg se mantém sincronizado com o mirror.

Estrutura já conhecida, com poucas alterações e semelhante à do CD.

Listas, listas, listas

Opções para saber a situação dos pacotes:

Olhar o ChangeLog.txt e verificar todas as alterações desde a última atualização.

Baixar uma lista com os pacotes e verificar as diferenças entre os pacotes da lista e os que estão instalados

Listas, listas, listas

Existem diversas listas na árvore dos mirrors, importante pegar a lista “certa”

FILELIST.TXT

Lista com TODOS os arquivos do mirror

PACKAGES.TXT

Todos os pacotes com suas descrições

MANIFEST.bz2

Conteúdo de cada um dos pacotes

Listas, listas, listas

Diversas das listas vem separadas, como o MANIFEST.bz2 e PACKAGES.TXT

Além de fragmentadas, contêm muita informação inútil

É necessário um pré-processamento dessas listas

Upgrade ou Downgrade?

Alguns nomes de pacotes:

ksh93-20030724-i486-1

iproute2-2.6.9_ss040831-i486-1

cdparanoia-IIIalpha9.8-i386-1

gstreamer-0.8.7-i486-1

Como descobrir o que é mais novo e o que é mais velho?

Upgrade ou Downgrade?

Não é feito “juízo” com relação aos pacotes.

Sempre a razão está com o mirror e não com a lista local.

Cadeia de prioridades:

patches

slackware

extra

pasture

Trazendo para Casa

Sabendo a localização, baixar o pacote do mirror.

Como baixar?

Mirrors locais... baixar?

Integridade dos arquivos

Proxies...

O que fazer com o que baixamos?

Atualizar pacotes já existentes?

Instalar pacotes novos?

Re-instalar pacotes já instalados?

Apenas guardar?

Os extras

Procura por arquivos usando o MANIFEST.bz2

Lista de pacotes “não atualizáveis” (blacklist)

Verificação dos .new e de atualizações no kernel

A Voz do Povo

Sugestões

Boas e trabalhosas

Boas e simples

Razoáveis e simples

Razoáveis e trabalhosas

Ruins

Patches

Resolução de Dependências

Os pacotes do slackware não trazem suporte a resolução de dependências

Qualquer ferramenta que implemente esse tipo de resolução, faz com base em arquivos externos

Uma solução 100% compatível com a filosofia do slackware não pode ter essa função

Quão Automático?

O slackpkg sempre apresenta a lista com o que irá ser feito na máquina antes de executar.

O administrador deve ter controle do que está acontecendo

Se alguém REALMENTE quer fazer tudo automático e não está nem aí, basta mudar levemente o código.

Planos Futuros

Correções de bugs e aperfeiçoamentos na série 1.x

Melhores mensagens de erro

Download

Integridade dos pacotes

Correção na instalação via CD-ROM

Ajustes na detecção de .new e solicitação de alteração dos mesmos

Planos Futuros

Novas features e uma nova arquitetura para o slackpkg 2.x

Re-gerar pacote

Maior modularização

Mais flexibilidade com relação a maneira que são feitos os downloads

Múltiplos mirrors

Velocidade

piter

punk

piterpk@terra.com.br

www.openslack.org/~piterpk

piterpunk.info02.com.br

2005-04-17T00:59:03