Simplepkg: gerenciamento de instalações e pacotes ------------------------------------------------- Autor: Silvio Rhatto Licença: GPL O simplepkg é um sistema de gerenciamento de pacotes que roda sobre o pkgtool. Ele é composto por vários scripts que desempenham funções de administração e desenvolvimento de sistemas do tipo Slackware, procurando fechar um circuito de produção, envolvendo a construção, a instalação de pacotes e até mesmo a instalação do sistema de forma automatizada. Do lado do desenvolvedor/a, ele ajuda na criação de SlackBuilds e construção de pacotes. Do lado do administrador/a, ele possibilita a instalação automatizada de sistemas, instalação de pacotes e a criação de "templates" de instalação -- que contém todos os arquivos de configuração, informações de permissões e scripts de pós-instalação de uma dada máquina ou jaula. Ele trabalha com templates -- listas com pacotes instalados, scripts e arquivos de configuração -- permitindo criar perfis de instalação que podem ser então usados para instalar o sistema numa outra partição, criar um chroot específico ou até trabalhar com o conceito de metapacotes: uma lista de pacotes que pode ser instalada e removida com apenas um comando. Documentação ------------ A documentação mais atualizada do simplepkg está em http://slack.sarava.org/simplepkg. Descrição --------- Todas as distribuições de GNU/Linux já tem algum sistema de empacotamento amadurecido. A questão agora é a praticidade de instalar e controlar o que está instalado, tanto pacotes como arquivos de configuração de uma máquina, além da facilidade na criação de pacotes. Imagine por exemplo se você precisa manter uma lista de pacotes de 200 máquinas slackware, sendo que algumas são usadas como desktop, outras como servidores web, alguma sendo o servidor de email e assim por diante. Imagine agora que você perca o disco de algumas dessas máquinas ou que precise cotidianamente reinstalar ou atualizar um sistema. Usar o cd de instalação do slackware e configurar na mão toda a vez que der um pau faria com que você ficasse louco/a e desperdiçasse muito tempo, além do que sempre ocorre de esquecermos algum detalhe ou pacote durante a configuração do sistema. Manter um backup completo de cada máquina, por outro lado, pode ser muito custoso se o número delas for muito grande. O simplepkg permite que você mantenha um template para cada grupo de máquinas e com apenas um comando instalar o template numa partição. Além do template, você precisa configurar o simplepkg para obter pacotes de um repositório local ou remoto. Gerenciar instalações e pacotes não é tudo o que o simplepkg faz. Ele pode ser usado até na criação de jaula e vservers. Arquitetura ----------- O simplepkg é um conjunto de scripts escritos com a filosofia KISS em mente. Ele é um sistema muito simples, composto pelos seguintes comandos: - mkjail: constrói uma jaula/instalação de slackware numa pasta - templatepkg: criar ou adiciona pacotes a um template - lspkg: lista pacotes instalados - jail-update: inverso do jail-commit - jail-commit: atualiza o template - rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages - simplaret: obtém pacotes de repositórios locais ou remotos - createpkg: baixa, compila e empacota software de acordo com http://slack.sarava.org/slackbuilds - repos: cria e mantém repositórios - mkbuild: cria scripts de construção de pacotes Instalando o simplepkg ---------------------- Para baixar o pacote do simplepkg, vá em http://slack.sarava.org/packages/noarch/. installpkg simplepkg-VERSAO-noarch-BUILD.tgz Criando jaulas e replicando instalações --------------------------------------- templatepkg meu-slackware mkjail jaula meu-slackware Isso cria o template meu-slackware a partir da sua lista de pacotes em /var/log/packages e cria uma nova árvore com esses pacotes na pasta /vservers/jaula (dependendo de qual o valor da variável JAIL_ROOT do simplepkg.conf, é claro). Se você quiser que alguns arquivos de configuração e executar scripts após a instalação dessa jaula, basta colocarmos na pasta /etc/simplepkg/meu-slackware.d/ os arquivos de configuração (dentro da hierarquia de pastas do sistema, isto é, /etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf) e os script em /etc/simplepkg/meu-slackware.s/. O template vserver, que já vem no mkjail contém um exemplo de script. Você pode especificar também destinos alternativos para sua jaula, através de um comando do tipo ROOT=/mnt mkjail hda2 meu-slackware O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em /mnt/hda2, dispensando totalmente o programa de instalação do slackware! Caso nenhum template for especificado, o mkjail utiliza o template /etc/simplepkg/default.template. Se você manter uma jaula em JAIL_ROOT com o mesmo nome que um template, é possível ainda usar o script jail-update para copiar todas as alterações de arquivos da jaula na pasta de arquivos do seu template (/etc/simplepkg/nome-da-jaula.d). Assim, basta que você copie todos os arquivos de configuração que você editou para essa pasta e deixar o jail-update numa crontab para que você tenha sempre um template atualizado e baseado nas jaulas / instalações que você tem rodando e que estiverem listadas no arquivo /etc/simplepkg/jailist: jail-update Para adicionar ou remover pacotes de um template, basta editar o arquivo de template. Uma outra forma de adicionar arquivos é usando o templatepkg com a opção -a, que adiciona apenas novos pacotes ao template. Se você quiser que o templatepkg crie um template a partir de uma jaula, simplesmente use templatepkg jaula /vservers/jaula Upgrade de jaulas ----------------- O upgrade de jaulas que estejam em JAIL_ROOT pode ser efetuado com o comando jail-upgrade. Simplesmente coloque os patches em PATCHES_DIR e dê o comando jail-upgrade Se você quiser atualizar apenas uma das jaulas que estão em JAIL_ROOT, use jail-upgrade nome-da-jaula Para especificar uma pasta contendo patches diferente de PATCHES_DIR (útil quando você possui jaulas com diferentes versões do slackware), simplesmente use PATCHES=/local/dos/patches jail-upgrade nome-da-jaula De modo análogo ao mkjail, é possível indicar ao jail-upgrade uma outra pasta onde a jaula está armazenada: ROOT=/otherroot jail-upgrade Arquiteturas e versões diferentes --------------------------------- O simplepkg foi idealizado para permitir que um mesmo template possa ser usado para criar jaulas de arquiteturas e versões diferentes de sistemas padrão slackware. A atualização desses sistemas também é unificada. Essa possibilidade só é permitida se você usa o simplaret e não o swaret como ferramenta de obtenção de pacotes. Por exemplo, para criar uma instalação de slackware 10.1 (assumindo que suas definições de repositórios do /etc/simplepkg/repos.conf contenham locais com slack 10.1), basta usar o comando VERSION=10.1 mkjail minha-jaula template-servidor Arquiteturas diferentes também podem ser usadas. Se você está num sistema x86_64 e quer instalar um slack 10.2 numa partição, experimente ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware Note que os templates independem de arquitetura e versão, já que eles só contém nomes de pacotes, arquivos de configuração e scripts. Por isso, o templatepkg, o metapkg, o lspkg e o jail-update funcionam normalmente. Para atualizar suas jaulas, o jail-upgrade checa antes qual a versão e arquitetura de cada uma de suas jaulas através do /etc/slackware-version correspondente e a partir disso aplica os patches da arquitetura e versão da mesma, usando para isso o simplaret (veja a documentação própria). Desse modo, mesmo que você tenha jaulas de versões e arquiteturas diversas, usar o comando "jail-upgrade" faz a atualização sem problemas, desde que seus patches estejam organizados por arquitetura e versão, conforme é detalhado na documentação do simplaret, em http://slack.sarava.org/node/16. Aplicativos auxiliares: rebuildpkg e createpkg ---------------------------------------------- O simplepkg acompanha ainda um aplicativo auxiliar que ajuda a recuperar pacotes instalados cujo tgz original foi perdido. O comando rebuildpkg reconstrói um pacote a partir de uma entrada no /var/log/packages. O comando rebuildpkg coreutils reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do /var/log/packages/ correspondente ao coreutils. Se você quiser construir seus próprios pacotes baseados nos slackbuilds disponíveis em http://slack.sarava.org/slackbuilds, basta utilizar o createpkg: createpkg nome-do-pacote Parâmetros de configuração -------------------------- A escrever... Fonte ----- Se você quiser obter diretamente o código-fonte do simplepkg, baixe-o do repositório: svn checkout svn://slack.sarava.org/simplepkg