diff options
author | rhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58> | 2007-04-13 21:46:27 +0000 |
---|---|---|
committer | rhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58> | 2007-04-13 21:46:27 +0000 |
commit | f76d87c78ade79c700b6dd48aeb6b8bbef60cf34 (patch) | |
tree | a64bfb20225c12ec13001a2ba7a4e3f381532c06 /branches/0.6/doc/simplepkg.tex | |
parent | aa280bb3fbf166e31b939342c1d956848a801780 (diff) | |
download | simplepkg-f76d87c78ade79c700b6dd48aeb6b8bbef60cf34.tar.gz simplepkg-f76d87c78ade79c700b6dd48aeb6b8bbef60cf34.tar.bz2 |
created 0.6 branch
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@341 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'branches/0.6/doc/simplepkg.tex')
-rw-r--r-- | branches/0.6/doc/simplepkg.tex | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/branches/0.6/doc/simplepkg.tex b/branches/0.6/doc/simplepkg.tex new file mode 100644 index 0000000..7c98e54 --- /dev/null +++ b/branches/0.6/doc/simplepkg.tex @@ -0,0 +1,241 @@ +\documentclass{article} +\usepackage[brazilian]{babel} +\usepackage[latin1]{inputenc} +\usepackage[dvips]{graphics} +\usepackage{hyperref} +\newcommand\link{\hyperlink} + +\title{Gerenciamento de instalações e metapacotes com o simplepkg} +\author{Silvio Rhatto} + +\begin{document}\label{start} +\maketitle + +\begin{abstract} +O \emph{simplepkg} é um sistema de gerenciamento de pacotes que roda sobre o \emph{pkgtool}. 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 \emph{metapacotes}: uma lista de pacotes que pode ser instalada e removida com apenas um comando. +\end{abstract} + +\section{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. + +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 do \emph{swaret} configurado para os repositórios de pacote que possuem seus aplicativos. + +Gerenciar instalações e metapacotes não é tudo o que o simplepkg faz. Ele pode ser usado até na criação de \emph{vservers}. O simplepkg inclusive é um amadurecimento de idéias delineadas nos seguintes artigos: + +\begin{itemize} + \item \link{/node/3}{Rodando o OpenOffice.org em chroot no Slamd64} + \item \link{/node/6}{Criando Vservers em Slackware} + \item \link{/node/7}{Instalando o Slackware sem programa de instalação} +\end{itemize} + +O \emph{simplepkg} permite que o trampo proposto nos artigos acima seja simplificado a uma meia dúzia de comandos, desde que existam templates prontos. + +\section{Arquitetura} + +O \emph{simplepkg} é um conjunto de scripts escritos com a filosofia KISS em mente. Ele é um sistema muito simples, composto pelos seguintes comandos: + +\begin{itemize} + \item mkjail: constrói uma jaula/instalação de slackware numa pasta + \item metapkg: instala ou remove um metapacote + \item templatepkg: criar ou adiciona pacotes a um template + \item lspkg: lista pacotes instalados + \item jail-upgrade: faz o upgrade nas jaulas + \item rebuildpkg: reconstrói um pacote a partir de sua entrada no \emph{/var/log/packages} + \item simplaret: obtém pacotes de repositórios locais ou remotos +\end{itemize} + +A pasta de configuração e armazenamento de templates é a \emph{/etc/simplepkg}. Templates são arquivos contendo uma lista de pacotes, um pacote por linha e com a extensão \emph{.template}. Como exemplo, um template poderia se chamar \emph{minimo.template} e conter a seguinte lista: + +\begin{verbatim} +aaa_base +aaa_elflibs +apache +bash +bin +coreutils +findutils +\end{verbatim} + +Se você quiser também é possível usar um \emph{tagfile} do slackware como template, sem nem precisar editá-lo. + +\section{Instalando o simplepkg} + +Para baixar o pacote do simplepkg, vá em http://slack.midiatatica.org/packages/noarch/. Depois de instalá-lo. + +\begin{verbatim} +installpkg simplepkg-VERSAO-noarch-BUILD.tgz +\end{verbatim} + +Alternativamente, se você usa o swaret, adicione em seu \emph{swaret.conf} a linha + +\begin{verbatim} +REPOS_ROOT=SlackMidiataticaNoarch%http://slack.midiatatica.org/packages/noarch +\end{verbatim} + +e então digite + +\begin{verbatim} +swaret --update +swaret --install simplepkg +\end{verbatim} + +\section{Configurando o simplepkg} + +Como exemplo, vamos criar uma jaula baseada nos pacotes instalados no seu slackware. Edite o arquivo \emph{/etc/simplepkg/simplepkg.conf}: + +\begin{verbatim} +# /etc/simplepkg/simplepkg.conf +JAIL_ROOT="/vservers" # local onde as jaulas serão criadas +SIMPLARET="simplaret" # programa que baixa os pacotes (pode ser o swaret se voce o tiver) +STORAGE="/var/simplaret" # local onde o swaret armazena seus pacotes +SIMPLARET_CLEAN="1" # apaga o cache de pacotes antes da instalação da jaula +SIMPLARET_DELETE_DOWN="1" # apaga o cache de pacotes após a instalação +SIMPLARET_UPDATE="0" # atualiza as listas de pacotes antes de iniciar a instalação da jaula +SIMPLARET_PURGE_WEEKS="N" # apaga os pacotes mais velhos que N semanas antes de instalar +PATCHES_DIR="/var/simplaret/patches" # local os patches são armazenados +\end{verbatim} + +Para definir quais repositórios de pacotes você usará, edite o arquivo \emph{/etc/simplepkg/repos.conf}, colocando algo como + +\begin{verbatim} +ROOT-i386="http://slack.midiatatica.org/packages/slackware" +REPOS-i386="slack-midiatatica%http://slack.midiatatica.org/packages/slackware" +ROOT-x86_64-10.2="http://darkstar.ist.utl.pt/pub/slamd64/" +REPOS-x86_64-10.2="slamd-midiatatica%http://slack.midiatatica.org/packages/slamd64" +\end{verbatim} + +Se você quer utilizar o swaret em lugar do simplaret, o swaret.conf deve estar bem configurado para que ele seja capaz de baixar e instalar todos os pacotes dos templates. Parâmetros como \emph{EXCLUDE} podem ser um empecilho, e se você os remover da sua instalação tenha muito cuidado ao atualizar o seu sistema via \emph{swaret --upgrade}. A desvantagem de usar o swaret é que você não terá como administrar jaulas e instalações de múltiplas arquiteturas. + +Para informações detalhadas sobre o simplaret, consulte seu \link{/node/16}{artigo específico}. + +\section{Criando jaulas e replicando instalações} + +\begin{verbatim} +templatepkg meu-slackware +mkjail jaula meu-slackware +\end{verbatim} + +Isso cria o template \emph{meu-slackware} a partir da sua lista de pacotes em \emph{/var/log/packages} e cria uma nova árvore com esses pacotes na pasta \emph{/vservers/jaula} (dependendo de qual o valor da variável \emph{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 \emph{/etc/simplepkg/meu-slackware.d/} os arquivos de configuração (dentro da hierarquia de pastas do sistema, isto é, \emph{/etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf}) e os script em \emph{/etc/simplepkg/meu-slackware.s}. O template \emph{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 + +\begin{verbatim} +ROOT=/mnt mkjail hda2 meu-slackware +\end{verbatim} + +O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em \emph{/mnt/hda2}, dispensando totalmente o programa de instalação do slackware! + +Caso nenhum template for especificado, o \emph{mkjail} utiliza o template \emph{/etc/simplepkg/default.template}. + +Se você manter uma jaula em \emph{JAIL\_ROOT} com o mesmo nome que um template, é possível ainda usar o script \emph{jail-update} para copiar todas as alterações de arquivos da jaula na pasta de arquivos do seu template (\emph{/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 \emph{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 \emph{/etc/simplepkg/jailist}: + +\begin{verbatim} +jail-update +\end{verbatim} + +O \emph{jail-update} considera que o template \emph{main}, caso exista, se refere à instalação principal da sua máquina, isto é, o sistema de você roda. Dessa forma a invocação do \emph{jail-update} atualiza todos os templates cujas jaulas estão em \emph{JAIL\_ROOT} e ainda atualiza o template da instalação principal. + +Para adicionar ou remover pacotes de um template, basta editar o arquivo de template. Uma outra forma de adicionar arquivos é usando o \emph{templatepkg} com a opção \emph{-a}, que adiciona apenas novos pacotes ao template. Se você quiser que o \emph{templatepkg} crie um template a partir de uma jaula, simplesmente use + +\begin{verbatim} +templatepkg jaula /vservers/jaula +\end{verbatim} + +\section{Metapacotes} + +Outro uso dos templates é a criação de pacotes: imagine por exemplo a dificuldade de um usuário/a novo de slackware para instalar o cinelerra e todas as suas dependências. Criando um template contendo o nome de todos os pacotes necessários para rodar esse software permite que um usuário instale-o simplesmente com o comando + +\begin{verbatim} +metapkg --install cinelerra +\end{verbatim} + +O comando sugere uma semelhança com o uso direto do \emph{swaret} ou do \emph{slapt-get}, com a única diferença residindo no modo como cada um desses programas lida com as dependências de um pacote. Os \emph{slapt-get} suporta o arquivo \emph{slack-required}, que pode ou não estar presente no pacote. Já o \emph{swaret} possui uma ferramenta própria para a criação de uma lista de dependências. + +O \emph{simplepkg} não pretende substituir esses dois modos de checagem e sim propor uma alternativa de distribuição de pacotes em que as dependências são resolvidas sem precisar de um repositório de dependências ou uma modificação no próprio pacote, que é o caso do \emph{slack-required}, um arquivo que na maioria das vezes não está presente. + +A remoção de um aplicativo e todas as suas dependências podem ser feitas simplesmente com o comando + +\begin{verbatim} +metapkg --remove cinelerra +\end{verbatim} + +\section{Upgrade de jaulas} + +O upgrade de jaulas que estejam em \emph{JAIL\_ROOT} pode ser efetuado com o comando \emph{jail-upgrade}. Simplesmente coloque os patches em \emph{PATCHES\_DIR} e dê o comando + +\begin{verbatim} +jail-upgrade +\end{verbatim} + +Se você quiser atualizar apenas uma das jaulas que estão em \emph{JAIL\_ROOT}, use + +\begin{verbatim} +jail-upgrade nome-da-jaula +\end{verbatim} + +Para especificar uma pasta contendo patches diferente de \emph{PATCHES\_DIR} (útil quando você possui jaulas com diferentes versões do slackware), simplesmente use + +\begin{verbatim} +PATCHES=/local/dos/patches jail-upgrade nome-da-jaula +\end{verbatim} + +De modo análogo ao \emph{mkjail}, é possível indicar ao \emph{jail-upgrade} uma outra pasta onde a jaula está armazenada: + +\begin{verbatim} +ROOT=/otherroot jail-upgrade +\end{verbatim} + +\section{Arquiteturas e versões diferentes} + +O \emph{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 \emph{/etc/simplepkg/repos.conf} contenham locais com slack 10.1), basta usar o comando + +\begin{verbatim} +VERSION=10.1 mkjail minha-jaula template-servidor +\end{verbatim} + +Arquiteturas diferentes também podem ser usadas. Se você está num sistema \emph{x86\_64} e quer instalar um slack 10.2 numa partição, experimente + +\begin{verbatim} +ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware +\end{verbatim} + +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 \emph{templatepkg}, o \emph{metapkg}, o \emph{lspkg} e o \emph{jail-update} funcionam normalmente. + +Para atualizar suas jaulas, o \emph{jail-upgrade} checa antes qual a versão e arquitetura de cada uma +de suas jaulas através do \emph{/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 \link{node/16}{documentação própria}). + +Desse modo, mesmo que você tenha jaulas de versões e arquiteturas diversas, usar o comando \emph{jail-upgrade} faz a atualização sem problemas, desde que seus patches estejam organizados por arquitetura e versão, conforme é detalhado na \link{/node/16}{documentação do simplaret}. + +\section{Aplicativo auxiliar: rebuildpkg} + +O simplepkg acompanha ainda um aplicativo auxiliar que ajuda a recuperar pacotes instalados cujo \emph{.tgz} original foi perdido. O comando \emph{rebuildpkg} reconstrói um pacote a partir de uma entrada no \emph{/var/log/packages}. O comando + +\begin{verbatim} +rebuildpkg coreutils +\end{verbatim} + +reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do \emph{/var/log/packages/} correspondente ao coreutils. + +\section{Fonte} + +Se você quiser obter diretamente o código-fonte do \emph{simplepkg}, baixe-o do repositório: + +\begin{verbatim} +svn checkout svn://slack.midiatatica.org:40/simplepkg +\end{verbatim} + +\section{Página de desenvolvimento} + +A página do \emph{simplepkg} fica em \link{http://slack.midiatatica.org/wiki/Main/SimplePKG}{http://slack.midiatatica.org/wiki/Main/SimplePKG}. + +\end{document} |