From 546354758b9a532912651b047fab6a23f0cb0a3c Mon Sep 17 00:00:00 2001 From: rhatto Date: Mon, 31 Jul 2006 20:54:39 +0000 Subject: initial import git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@1 04377dda-e619-0410-9926-eae83683ac58 --- doc/simplepkg.aux | 30 ++++++ doc/simplepkg.dvi | Bin 0 -> 25288 bytes doc/simplepkg.html | 201 +++++++++++++++++++++++++++++++++++++ doc/simplepkg.log | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++++ doc/simplepkg.out | 11 +++ doc/simplepkg.pdf | Bin 0 -> 69718 bytes doc/simplepkg.tex | 241 ++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 769 insertions(+) create mode 100644 doc/simplepkg.aux create mode 100644 doc/simplepkg.dvi create mode 100644 doc/simplepkg.html create mode 100644 doc/simplepkg.log create mode 100644 doc/simplepkg.out create mode 100644 doc/simplepkg.pdf create mode 100644 doc/simplepkg.tex (limited to 'doc') 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 Binary files /dev/null and b/doc/simplepkg.dvi 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 simplepkg é um sistema de gerenciamento de pacotes que roda sobre o pkgtool e o swaret. 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. + +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 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 vservers. O simplepkg inclusive é um amadurecimento de idéias delineadas nos seguintes artigos: + +- Rodando o OpenOffice.org em chroot no Slamd64 +- Linux Vservers e segurança por contexto +- Instalando o Slackware sem programa de instalação + +O simplepkg permite que o trampo proposto nos artigos acima seja simplificado a uma meia dúzia de comandos, desde que existam templates prontos. + +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 +- 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 /var/log/packages + +A pasta de configuração e armazenamento de templates é a /etc/simplepkg. Templates são arquivos contendo uma lista de pacotes, um pacote por linha e com a extensão .template. Como exemplo, um template poderia se chamar minimo.template e conter a seguinte lista: + + +
+aaa_base
+aaa_elflibs
+apache
+bash
+bin
+coreutils
+findutils
+
+ +
 
 
 
 
 
 
  +Se você quiser também é possível usar um tagfile do slackware como template, sem nem precisar editá-lo. + +Instalando o simplepkg + +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 swaret: + +
+installpkg swaret-VERSAO-noarch-BUILD.tgz simplepkg-VERSAO-noarch-BUILD.tgz
+
+ +
  +Alternativamente, se você já está com o swaret instalado, adicione em seu swaret.conf a linha + +
+REPOS_ROOT=SlackMidiataticaNoarch%http://slack.midiatatica.org/packages/noarch
+
+ +
  +e então digite + +
+swaret --update
+swaret --install simplepkg
+
+ +
 
  +Configurando o simplepkg + +Como exemplo, vamos criar uma jaula baseada nos pacotes instalados no seu slackware. Edite o arquivo /etc/simplepkg/simplepkg.conf: + +
+# /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
+
+ +
 
 
 
 
 
 
 
 
  +O swaret.conf deve estar bem configurado para que ele seja capaz de baixar e instalar todos os pacotes dos templates. Parâmetros como EXCLUDE podem ser um empecilho, e se você os remover da sua instalação tenha muito cuidado ao atualizar o seu sistema via swaret --upgrade. + +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
+
+ +
  +O jail-update considera que o template main, caso exista, se refere à instalação principal da sua máquina, isto é, o sistema de você roda. Dessa forma a invocação do jail-update atualiza todos os templates cujas jaulas estão em 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 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
+
+ +
  +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 + +
+metapkg --install cinelerra
+
+ +
  +O comando sugere uma semelhança com o uso direto do swaret ou do slapt-get, com a única diferença residindo no modo como cada um desses programas lida com as dependências de um pacote. Os slapt-get suporta o arquivo slack-required, que pode ou não estar presente no pacote. Já o swaret possui uma ferramenta própria para a criação de uma lista de dependências. + +O 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 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 + +
+metapkg --remove cinelerra
+
+ +
  +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
+
+ +
  +Aplicativo auxiliar: rebuildpkg + +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. + +Fonte + +Se você quiser obter diretamente o código-fonte do simplepkg, baixe-o do repositório: + +
+svn checkout svn://slack.midiatatica.org:40/simplepkg
+
+ +
  +Página de desenvolvimento + +A página de desenvolvimento do simplepkg fica aqui. 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 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 Binary files /dev/null and b/doc/simplepkg.pdf 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} -- cgit v1.2.3