aboutsummaryrefslogtreecommitdiff
path: root/branches/0.6/doc/simplepkg.tex
diff options
context:
space:
mode:
Diffstat (limited to 'branches/0.6/doc/simplepkg.tex')
-rw-r--r--branches/0.6/doc/simplepkg.tex241
1 files changed, 0 insertions, 241 deletions
diff --git a/branches/0.6/doc/simplepkg.tex b/branches/0.6/doc/simplepkg.tex
deleted file mode 100644
index 7c98e54..0000000
--- a/branches/0.6/doc/simplepkg.tex
+++ /dev/null
@@ -1,241 +0,0 @@
-\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}