diff options
Diffstat (limited to 'branches/0.6/doc/simplepkg.tex')
-rw-r--r-- | branches/0.6/doc/simplepkg.tex | 241 |
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} |