aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2006-07-31 20:54:39 +0000
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2006-07-31 20:54:39 +0000
commit546354758b9a532912651b047fab6a23f0cb0a3c (patch)
treec4108b4022d6e77cd4a1d02c78860b884178efa0 /doc
downloadsimplepkg-546354758b9a532912651b047fab6a23f0cb0a3c.tar.gz
simplepkg-546354758b9a532912651b047fab6a23f0cb0a3c.tar.bz2
initial import
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@1 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'doc')
-rw-r--r--doc/simplepkg.aux30
-rw-r--r--doc/simplepkg.dvibin0 -> 25288 bytes
-rw-r--r--doc/simplepkg.html201
-rw-r--r--doc/simplepkg.log286
-rw-r--r--doc/simplepkg.out11
-rw-r--r--doc/simplepkg.pdfbin0 -> 69718 bytes
-rw-r--r--doc/simplepkg.tex241
7 files changed, 769 insertions, 0 deletions
diff --git a/doc/simplepkg.aux b/doc/simplepkg.aux
new file mode 100644
index 0000000..ad47a5f
--- /dev/null
+++ b/doc/simplepkg.aux
@@ -0,0 +1,30 @@
+\relax
+\catcode`"\active
+\ifx\hyper@anchor\@undefined
+\global \let \oldcontentsline\contentsline
+\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global \let \oldnewlabel\newlabel
+\gdef \newlabel#1#2{\newlabelxx{#1}#2}
+\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\let \contentsline\oldcontentsline
+\let \newlabel\oldnewlabel}
+\else
+\global \let \hyper@last\relax
+\fi
+
+\select@language{brazilian}
+\@writefile{toc}{\select@language{brazilian}}
+\@writefile{lof}{\select@language{brazilian}}
+\@writefile{lot}{\select@language{brazilian}}
+\newlabel{start}{{}{1}{\relax }{}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {1}Descri\c c\~ao}{1}{section.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {2}Arquitetura}{2}{section.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}Instalando o simplepkg}{2}{section.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {4}Configurando o simplepkg}{3}{section.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {5}Criando jaulas e replicando instala\c c\~oes}{3}{section.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {6}Metapacotes}{4}{section.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Upgrade de jaulas}{5}{section.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {8}Arquiteturas e vers\~oes diferentes}{5}{section.8}}
+\@writefile{toc}{\contentsline {section}{\numberline {9}Aplicativo auxiliar: rebuildpkg}{6}{section.9}}
+\@writefile{toc}{\contentsline {section}{\numberline {10}Fonte}{6}{section.10}}
+\@writefile{toc}{\contentsline {section}{\numberline {11}P\'agina de desenvolvimento}{6}{section.11}}
diff --git a/doc/simplepkg.dvi b/doc/simplepkg.dvi
new file mode 100644
index 0000000..2779fbe
--- /dev/null
+++ b/doc/simplepkg.dvi
Binary files differ
diff --git a/doc/simplepkg.html b/doc/simplepkg.html
new file mode 100644
index 0000000..85b2b06
--- /dev/null
+++ b/doc/simplepkg.html
@@ -0,0 +1,201 @@
+O <i>simplepkg</i> é um sistema de gerenciamento de pacotes que roda sobre o <i>pkgtool</i> e o <i>swaret</i>. 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 <i>metapacotes</i>: uma lista de pacotes que pode ser instalada e removida com apenas um comando.
+<!--break-->
+<b>Descrição</b>
+
+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 <i>swaret</i> 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 <i>vservers</i>. O simplepkg inclusive é um amadurecimento de idéias delineadas nos seguintes artigos:
+
+- <a href="/node/3">Rodando o OpenOffice.org em chroot no Slamd64</a>
+- <a href="/node/6">Linux Vservers e segurança por contexto</a>
+- <a href="/node/7">Instalando o Slackware sem programa de instalação</a>
+
+O <i>simplepkg</i> permite que o trampo proposto nos artigos acima seja simplificado a uma meia dúzia de comandos, desde que existam templates prontos.
+
+<b>Arquitetura</b>
+
+O <i>simplepkg</i> é 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
+- metapkg: instala ou remove um metapacote
+- templatepkg: criar ou adiciona pacotes a um template
+- lspkg: lista pacotes instalados
+- jail-upgrade: faz o upgrade nas jaulas
+- rebuildpkg: reconstrói um pacote a partir de sua entrada no <i>/var/log/packages</i>
+
+A pasta de configuração e armazenamento de templates é a <i>/etc/simplepkg</i>. Templates são arquivos contendo uma lista de pacotes, um pacote por linha e com a extensão <i>.template</i>. Como exemplo, um template poderia se chamar <i>minimo.template</i> e conter a seguinte lista:
+
+
+<pre>
+aaa_base
+aaa_elflibs
+apache
+bash
+bin
+coreutils
+findutils
+</pre>
+
+<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;
+Se você quiser também é possível usar um <i>tagfile</i> do slackware como template, sem nem precisar editá-lo.
+
+<b>Instalando o simplepkg</b>
+
+Para baixar o pacote do simplepkg, vá em http://slack.midiatatica.org/packages/noarch/. Depois de instalá-lo, não esqueça de configurar seu <i>swaret</i>:
+
+<pre>
+installpkg swaret-VERSAO-noarch-BUILD.tgz simplepkg-VERSAO-noarch-BUILD.tgz
+</pre>
+
+<br>&nbsp;
+Alternativamente, se você já está com o swaret instalado, adicione em seu <i>swaret.conf</i> a linha
+
+<pre>
+REPOS_ROOT=SlackMidiataticaNoarch%http://slack.midiatatica.org/packages/noarch
+</pre>
+
+<br>&nbsp;
+e então digite
+
+<pre>
+swaret --update
+swaret --install simplepkg
+</pre>
+
+<br>&nbsp;<br>&nbsp;
+<b>Configurando o simplepkg</b>
+
+Como exemplo, vamos criar uma jaula baseada nos pacotes instalados no seu slackware. Edite o arquivo <i>/etc/simplepkg/simplepkg.conf</i>:
+
+<pre>
+# /etc/simplepkg/simplepkg.conf
+JAIL_ROOT="/vservers" # local onde as jaulas serão criadas
+SWARET_PACKS="/var/swaret" # local onde o swaret armazena seus pacotes
+SWARET_CLEAN="1" # apaga o cache de pacotes antes da instalação da jaula
+SWARET_DELETE_DOWN="1" # apaga o cache de pacotes após a instalação
+SWARET_UPDATE="0" # executa um swaret --update antes de iniciar a instalação da jaula
+SWARET_PURGE_WEEKS="N" # apaga os pacotes do cache mais velhos que N semanas antes de instalar
+PATCHES_DIR="/var/swaret/patches" # local os patches são armazenados
+</pre>
+
+<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;
+O <i>swaret.conf</i> deve estar bem configurado para que ele seja capaz de baixar e instalar todos os pacotes dos templates. Parâmetros como <i>EXCLUDE</i> podem ser um empecilho, e se você os remover da sua instalação tenha muito cuidado ao atualizar o seu sistema via <i>swaret --upgrade</i>.
+
+<b>Criando jaulas e replicando instalações</b>
+
+<pre>
+templatepkg meu-slackware
+mkjail jaula meu-slackware
+</pre>
+
+<br>&nbsp;<br>&nbsp;
+Isso cria o template <i>meu-slackware</i> a partir da sua lista de pacotes em <i>/var/log/packages</i> e cria uma nova árvore com esses pacotes na pasta <i>/vservers/jaula</i> (dependendo de qual o valor da variável <i>JAIL_ROOT</i> 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 <i>/etc/simplepkg/meu-slackware.d/</i> os arquivos de configuração (dentro da hierarquia de pastas do sistema, isto é, <i>/etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf</i>) e os script em <i>/etc/simplepkg/meu-slackware.s/</i>. O template <i>vserver</i>, 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
+
+<pre>
+ROOT=/mnt mkjail hda2 meu-slackware
+</pre>
+
+<br>&nbsp;
+O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em </i>/mnt/hda2</i>, dispensando totalmente o programa de instalação do slackware!
+
+Caso nenhum template for especificado, o <i>mkjail</i> utiliza o template <i>/etc/simplepkg/default.template</i>.
+
+Se você manter uma jaula em <i>JAIL_ROOT</i> com o mesmo nome que um template, é possível ainda usar o script <i>jail-update</i> para copiar todas as alterações de arquivos da jaula na pasta de arquivos do seu template (<i>/etc/simplepkg/nome-da-jaula.d</i>). Assim, basta que você copie todos os arquivos de configuração que você editou para essa pasta e deixar o <i>jail-update</i> 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 <i>/etc/simplepkg/jailist</i>:
+
+<pre>
+jail-update
+</pre>
+
+<br>&nbsp;
+O <i>jail-update</i> considera que o template <i>main</i>, caso exista, se refere à instalação principal da sua máquina, isto é, o sistema de você roda. Dessa forma a invocação do <i>jail-update</i> atualiza todos os templates cujas jaulas estão em <i>JAIL_ROOT</i> 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 <i>templatepkg</i> com a opção <i>-a</i>, que adiciona apenas novos pacotes ao template. Se você quiser que o <i>templatepkg</i> crie um template a partir de uma jaula, simplesmente use
+
+<pre>
+templatepkg jaula /vservers/jaula
+</pre>
+
+<br>&nbsp;
+<b>Metapacotes</b>
+
+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
+
+<pre>
+metapkg --install cinelerra
+</pre>
+
+<br>&nbsp;
+O comando sugere uma semelhança com o uso direto do <i>swaret</i> ou do <i>slapt-get</i>, com a única diferença residindo no modo como cada um desses programas lida com as dependências de um pacote. Os <i>slapt-get</i> suporta o arquivo <i>slack-required</i>, que pode ou não estar presente no pacote. Já o <i>swaret</i> possui uma ferramenta própria para a criação de uma lista de dependências.
+
+O <i>simplepkg</i> 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 <i>slack-required</i>, 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
+
+<pre>
+metapkg --remove cinelerra
+</pre>
+
+<br>&nbsp;
+<b>Upgrade de jaulas</b>
+
+O upgrade de jaulas que estejam em <i>JAIL_ROOT</i> pode ser efetuado com o comando <i>jail-upgrade</i>. Simplesmente coloque os patches em <i>PATCHES_DIR</i> e dê o comando
+
+<pre>
+jail-upgrade
+</pre>
+
+<br>&nbsp;
+Se você quiser atualizar apenas uma das jaulas que estão em <i>JAIL_ROOT</i>, use
+
+<pre>
+jail-upgrade nome-da-jaula
+</pre>
+
+<br>&nbsp;
+Para especificar uma pasta contendo patches diferente de <i>PATCHES_DIR</i> (útil quando você possui jaulas com diferentes versões do slackware), simplesmente use
+
+<pre>
+PATCHES=/local/dos/patches jail-upgrade nome-da-jaula
+</pre>
+
+<br>&nbsp;
+De modo análogo ao <i>mkjail</i>, é possível indicar ao <i>jail-upgrade</i> uma outra pasta onde a jaula está armazenada:
+
+<pre>
+ROOT=/otherroot jail-upgrade
+</pre>
+
+<br>&nbsp;
+<b>Aplicativo auxiliar: rebuildpkg</b>
+
+O simplepkg acompanha ainda um aplicativo auxiliar que ajuda a recuperar pacotes instalados cujo tgz original foi perdido. O comando <i>rebuildpkg</i> reconstrói um pacote a partir de uma entrada no <i>/var/log/packages</i>. O comando
+
+<pre>
+rebuildpkg coreutils
+</pre>
+
+<br>&nbsp;
+reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do <i>/var/log/packages/</i> correspondente ao coreutils.
+
+<b>Fonte</b>
+
+Se você quiser obter diretamente o código-fonte do <i>simplepkg</i>, baixe-o do repositório:
+
+<pre>
+svn checkout svn://slack.midiatatica.org:40/simplepkg
+</pre>
+
+<br>&nbsp;
+<b>Página de desenvolvimento</b>
+
+A página de desenvolvimento do <i>simplepkg</i> fica <a href="http://slack.midiatatica.org/wiki/Main/SimplePKG">aqui</a>.
diff --git a/doc/simplepkg.log b/doc/simplepkg.log
new file mode 100644
index 0000000..c6a55ef
--- /dev/null
+++ b/doc/simplepkg.log
@@ -0,0 +1,286 @@
+This is TeX, Version 3.14159 (Web2C 7.4.5) (format=latex 2005.1.14) 10 FEB 2006 12:19
+**simplepkg.tex
+(./simplepkg.tex
+LaTeX2e <2001/06/01>
+Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, n
+ohyphenation, loaded.
+(/usr/share/texmf/tex/latex/base/article.cls
+Document Class: article 2001/04/21 v1.4e Standard LaTeX document class
+(/usr/share/texmf/tex/latex/base/size10.clo
+File: size10.clo 2001/04/21 v1.4e Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/usr/share/texmf/tex/generic/babel/babel.sty
+Package: babel 2001/03/01 v3.7h The Babel package
+
+(/usr/share/texmf/tex/generic/babel/portuges.ldf
+Language: portuges 2001/02/16 v1.2o Portuguese support from the babel system
+
+(/usr/share/texmf/tex/generic/babel/babel.def
+File: babel.def 2001/03/01 v3.7h Babel common definitions
+\babel@savecnt=\count87
+\U@D=\dimen103
+)
+
+Package babel Warning: No hyphenation patterns were loaded for
+(babel) the language `Portuguese'
+(babel) I will use the patterns loaded for \language=0 instead.
+
+\l@portuges = a dialect from \language0
+\l@brazilian = a dialect from \language\l@portuges
+Package babel Info: Making " an active character on input line 126.
+)) (/usr/share/texmf/tex/latex/base/inputenc.sty
+Package: inputenc 2001/07/10 v0.99a Input encoding file
+
+(/usr/share/texmf/tex/latex/base/latin1.def
+File: latin1.def 2001/07/10 v0.99a Input encoding file
+))
+(/usr/share/texmf/tex/latex/graphics/graphics.sty
+Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/usr/share/texmf/tex/latex/config/graphics.cfg
+File: graphics.cfg 2001/08/31 v1.1 graphics configuration of teTeX/TeXLive
+)
+Package graphics Info: Driver file: dvips.def on input line 80.
+
+(/usr/share/texmf/tex/latex/graphics/dvips.def
+File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
+))
+(/usr/share/texmf/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2003/01/22 v6.73n Hypertext links for LaTeX
+
+(/usr/share/texmf/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+\KV@toks@=\toks14
+)
+\@linkdim=\dimen104
+\Hy@linkcounter=\count88
+\Hy@pagecounter=\count89
+
+(/usr/share/texmf/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2003/01/22 v6.73n Hyperref: PDFDocEncoding definition (HO)
+)
+(/usr/share/texmf/tex/latex/config/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX
+)
+Package hyperref Info: Hyper figures OFF on input line 1792.
+Package hyperref Info: Link nesting OFF on input line 1797.
+Package hyperref Info: Hyper index ON on input line 1800.
+Package hyperref Info: Plain pages ON on input line 1805.
+Package hyperref Info: Backreferencing OFF on input line 1812.
+
+Implicit mode ON; LaTeX internals redefined
+Package hyperref Info: Bookmarks ON on input line 1916.
+(/usr/share/texmf/tex/latex/html/url.sty
+Package: url 1999/03/02 ver 1.4 Verb mode for urls, email addresses, and file
+ names
+)
+LaTeX Info: Redefining \url on input line 2055.
+\Fld@menulength=\count90
+\Field@Width=\dimen105
+\Fld@charsize=\dimen106
+\Choice@toks=\toks15
+\Field@toks=\toks16
+Package hyperref Info: Hyper figures OFF on input line 2513.
+Package hyperref Info: Link nesting OFF on input line 2518.
+Package hyperref Info: Hyper index ON on input line 2521.
+Package hyperref Info: backreferencing OFF on input line 2528.
+Package hyperref Info: Link coloring OFF on input line 2533.
+\c@Item=\count91
+\c@Hfootnote=\count92
+)
+*hyperref using default driver hdvips*
+(/usr/share/texmf/tex/latex/hyperref/hdvips.def
+File: hdvips.def 2003/01/22 v6.73n Hyperref driver for dvips
+
+(/usr/share/texmf/tex/latex/hyperref/pdfmark.def
+File: pdfmark.def 2003/01/22 v6.73n Hyperref definitions for pdfmark specials
+\pdf@docset=\toks17
+\pdf@box=\box26
+\pdf@toks=\toks18
+\pdf@defaulttoks=\toks19
+\Fld@listcount=\count93
+\@outlinefile=\write3
+)) (./simplepkg.aux)
+\openout1 = `simplepkg.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+Package hyperref Info: Link coloring OFF on input line 11.
+
+(/usr/share/texmf/tex/latex/hyperref/nameref.sty
+Package: nameref 2001/01/27 v2.19 Cross-referencing by name of section
+\c@section@level=\count94
+)
+LaTeX Info: Redefining \ref on input line 11.
+LaTeX Info: Redefining \pageref on input line 11.
+ (./simplepkg.out)
+(./simplepkg.out)
+\openout3 = `simplepkg.out'.
+
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <12> on input line 13.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <8> on input line 13.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <6> on input line 13.
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 31.
+ (/usr/share/texmf/tex/latex/base/omscmr.fd
+File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 31.
+ [1
+
+]
+Overfull \hbox (15.53741pt too wide) in paragraph at lines 48--49
+[]\OT1/cmr/m/n/10 rebuildpkg: re-con-str^^Soi um pa-cote a par-tir de sua en-tr
+ada no \OT1/cmr/m/it/10 /var/log/packages
+ []
+
+
+Overfull \hbox (40.63974pt too wide) in paragraph at lines 68--69
+\OT1/cmr/m/n/10 Para baixar o pa-cote do sim-plepkg, v^^Sa em http://slack.midi
+atatica.org/packages/noarch/.
+ []
+
+
+Overfull \hbox (64.49643pt too wide) in paragraph at lines 78--78
+[]\OT1/cmtt/m/n/10 REPOS_ROOT=SlackMidiataticaNoarch%http://slack.midiatatica.o
+rg/packages/noarch[]
+ []
+
+[2]
+Overfull \hbox (122.24593pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET="simplaret" # programa que baixa os pacotes (pode
+ser o swaret se voce o tiver)[]
+ []
+
+
+Overfull \hbox (11.99689pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 STORAGE="/var/simplaret" # local onde o swaret armazena seus
+ pacotes[]
+ []
+
+
+Overfull \hbox (48.74657pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_CLEAN="1" # apaga o cache de pacotes antes da inst
+ala^^Xc~ao da jaula[]
+ []
+
+
+Overfull \hbox (22.4968pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_DELETE_DOWN="1" # apaga o cache de pacotes ap^^Sos
+ a instala^^Xc~ao[]
+ []
+
+
+Overfull \hbox (132.74583pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_UPDATE="0" # atualiza as listas de pacotes antes d
+e iniciar a instala^^Xc~ao da jaula[]
+ []
+
+
+Overfull \hbox (116.99597pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_PURGE_WEEKS="N" # apaga os pacotes mais velhos que
+ N semanas antes de instalar[]
+ []
+
+
+Overfull \hbox (27.74675pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 PATCHES_DIR="/var/simplaret/patches" # local os patches s~ao
+ armazenados[]
+ []
+
+
+Overfull \hbox (77.7997pt too wide) in paragraph at lines 103--104
+[]\OT1/cmr/m/n/10 Para definir quais reposit^^Sorios de pa-cotes voc^e usar^^Sa
+, edite o ar-quivo \OT1/cmr/m/it/10 /etc/simplepkg/repos.conf\OT1/cmr/m/n/10 ,
+ []
+
+
+Overfull \hbox (64.49643pt too wide) in paragraph at lines 110--110
+[]\OT1/cmtt/m/n/10 REPOS-i386="slack-midiatatica%http://slack.midiatatica.org/p
+ackages/slackware"[]
+ []
+
+
+Overfull \hbox (90.7462pt too wide) in paragraph at lines 110--110
+[]\OT1/cmtt/m/n/10 REPOS-x86_64-10.2="slamd-midiatatica%http://slack.midiatatic
+a.org/packages/slamd64"[]
+ []
+
+
+Overfull \hbox (16.50899pt too wide) in paragraph at lines 123--124
+\OT1/cmr/m/it/10 /var/log/packages \OT1/cmr/m/n/10 e cria uma nova ^^Sarvore co
+m esses pa-cotes na pasta \OT1/cmr/m/it/10 /vservers/jaula
+ []
+
+
+Overfull \hbox (12.48833pt too wide) in paragraph at lines 125--126
+\OT1/cmr/m/n/10 in-stala^^Xc~ao dessa jaula, basta colo-car-mos na pasta \OT1/c
+mr/m/it/10 /etc/simplepkg/meu-slackware.d/
+ []
+
+
+Overfull \hbox (54.39502pt too wide) in paragraph at lines 125--126
+\OT1/cmr/m/it/10 /etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf\OT1/cmr/m
+/n/10 ) e os script em \OT1/cmr/m/it/10 /etc/simplepkg/meu-
+ []
+
+[3]
+Overfull \hbox (97.57161pt too wide) in paragraph at lines 135--136
+[]\OT1/cmr/m/n/10 Caso nen-hum tem-plate for es-peci-fi-cado, o \OT1/cmr/m/it/1
+0 mk-jail \OT1/cmr/m/n/10 uti-liza o tem-plate \OT1/cmr/m/it/10 /etc/simplepkg/
+default.template\OT1/cmr/m/n/10 .
+ []
+
+[4] [5]
+Overfull \hbox (13.77249pt too wide) in paragraph at lines 231--232
+\OT1/cmr/m/n/10 Se voc^e quiser obter di-re-ta-mente o c^^Sodigo-fonte do \OT1/
+cmr/m/it/10 sim-plepkg\OT1/cmr/m/n/10 , baixe-o do reposit^^Sorio:
+ []
+
+
+Overfull \hbox (17.25352pt too wide) in paragraph at lines 239--240
+\OT1/cmr/m/n/10 A p^^Sagina do \OT1/cmr/m/it/10 sim-plepkg \OT1/cmr/m/n/10 fica
+ em [][][][].
+ []
+
+[6] (./simplepkg.aux) )
+Here is how much of TeX's memory you used:
+ 2420 strings out of 95847
+ 32073 string characters out of 1195948
+ 90698 words of memory out of 1000001
+ 5358 multiletter control sequences out of 10000+50000
+ 8746 words of font info for 31 fonts, out of 500000 for 1000
+ 14 hyphenation exceptions out of 1000
+ 25i,6n,36p,605b,344s stack positions out of 1500i,500n,5000p,200000b,5000s
+
+Output written on simplepkg.dvi (6 pages, 25288 bytes).
diff --git a/doc/simplepkg.out b/doc/simplepkg.out
new file mode 100644
index 0000000..4839e4e
--- /dev/null
+++ b/doc/simplepkg.out
@@ -0,0 +1,11 @@
+\BOOKMARK [1][-]{section.1}{Descri\347\343o}{}
+\BOOKMARK [1][-]{section.2}{Arquitetura}{}
+\BOOKMARK [1][-]{section.3}{Instalando o simplepkg}{}
+\BOOKMARK [1][-]{section.4}{Configurando o simplepkg}{}
+\BOOKMARK [1][-]{section.5}{Criando jaulas e replicando instala\347\365es}{}
+\BOOKMARK [1][-]{section.6}{Metapacotes}{}
+\BOOKMARK [1][-]{section.7}{Upgrade de jaulas}{}
+\BOOKMARK [1][-]{section.8}{Arquiteturas e vers\365es diferentes}{}
+\BOOKMARK [1][-]{section.9}{Aplicativo auxiliar: rebuildpkg}{}
+\BOOKMARK [1][-]{section.10}{Fonte}{}
+\BOOKMARK [1][-]{section.11}{P\341gina de desenvolvimento}{}
diff --git a/doc/simplepkg.pdf b/doc/simplepkg.pdf
new file mode 100644
index 0000000..9895ebb
--- /dev/null
+++ b/doc/simplepkg.pdf
Binary files differ
diff --git a/doc/simplepkg.tex b/doc/simplepkg.tex
new file mode 100644
index 0000000..7c98e54
--- /dev/null
+++ b/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}