From 7f1856a13b68d950996614ea2d28a6c5811c8218 Mon Sep 17 00:00:00 2001 From: rhatto Date: Wed, 22 Aug 2007 04:40:26 +0000 Subject: updating docs git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@421 04377dda-e619-0410-9926-eae83683ac58 --- trunk/doc/mkbuild-pt_BR.tex | 627 ++++++++++++++++++++++++++++++++++++++++++ trunk/doc/mkbuild.pt_BR.tex | 627 ------------------------------------------ trunk/doc/simplaret-pt_BR.tex | 158 +++++++++++ trunk/doc/simplaret.pt_BR.tex | 158 ----------- trunk/doc/simplepkg-en.tex | 310 +++++++++++++++++++++ trunk/doc/simplepkg-pt_BR.pdf | Bin 0 -> 100073 bytes trunk/doc/simplepkg-pt_BR.tex | 395 ++++++++++++++++++++++++++ trunk/doc/simplepkg.pt_BR.pdf | Bin 100073 -> 0 bytes trunk/doc/simplepkg.pt_BR.tex | 395 -------------------------- 9 files changed, 1490 insertions(+), 1180 deletions(-) create mode 100644 trunk/doc/mkbuild-pt_BR.tex delete mode 100644 trunk/doc/mkbuild.pt_BR.tex create mode 100644 trunk/doc/simplaret-pt_BR.tex delete mode 100644 trunk/doc/simplaret.pt_BR.tex create mode 100644 trunk/doc/simplepkg-en.tex create mode 100644 trunk/doc/simplepkg-pt_BR.pdf create mode 100644 trunk/doc/simplepkg-pt_BR.tex delete mode 100644 trunk/doc/simplepkg.pt_BR.pdf delete mode 100644 trunk/doc/simplepkg.pt_BR.tex (limited to 'trunk') diff --git a/trunk/doc/mkbuild-pt_BR.tex b/trunk/doc/mkbuild-pt_BR.tex new file mode 100644 index 0000000..9e620ae --- /dev/null +++ b/trunk/doc/mkbuild-pt_BR.tex @@ -0,0 +1,627 @@ +\documentclass[12pt,a4paper,oneside]{article} +%\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} +\usepackage[dvips]{graphicx} +%\usepackage{subfigure} +\usepackage{mdwlist} +\usepackage{a4} +%\topmargin -.5in +%\addtolength{\hoffset}{-1.0cm} +%\addtolength{\textwidth}{3.0cm} +%\textwidth = 400pt +%\textheight = 680pt + +\makeatletter + +%\usepackage[pdftex]{color,graphicx} +%\DeclareGraphicsExtensions{.jpg,.pdf,.mps,.png} + +\usepackage[brazil]{babel} +\usepackage[dvips]{graphicx} +%\usepackage{textdraw} + +\input texdraw +%\newenvironment{textdraw}{\leavevmode\btexdraw}{\etexdraw} + +\newcommand{\rcap}[1]{Capítulo \ref{#1}} +\newcommand{\rfig}[1]{Figura \ref{#1}} +\newcommand{\rtab}[1]{Tabela \ref{#1}} +\newcommand{\rsec}[1]{Seção \ref{#1}} + +\makeatother + +\begin{document} + + +\title{Construindo SlackBuilds com mkbuild} + +\author{Rudson Alves} + +\date{\today} + +\maketitle + +%\pagenumbering{roman} + +\tableofcontents{} +%\listoffigures +%\listoftables + +%\abstract{...} + + +\section{Introdução} + +O \textit{mkbuild} é um programa em \textit{script shell} destinado a construção de \textit{Slackbuilds}, \textit{scripts} utilizados para a construção de pacotes no \textit{Slackware}. + +\section{O modelo generic.mkSlackBuild} + +O \textit{mkbuild} utiliza o modelo padrão \textit{generic.mkSlackBuild}, armazenado em + +\begin{verbatim} +/etc/simplepkg/defaults/mkbuild/ +\end{verbatim} + +Este modelo é uma versão setorizada do \textit{generic.SlackBuild}, levemente modificada. O \textit{generic.SlackBuild} é um modelo genérico de \textit{Slackbuilds} disponibilizado na árvore de \textit{Slackbuilds} do \textit{Slack.Sarava}, para servir como modelo para a construção dos \textit{scripts}. Outros modelos setorizados podem ser utilizados pelo \textit{mkbuild}, a única limitação é quanto ao nome da seção \textit{slackdesc}, que não poderá ser alterada. + + +\subsection{Os Campos} + +O modelo \verb!generic.mkSlackBuild! é um \textit{SlackBuild} genérico com vários campos destacados por duplo colchetes, \verb![[! \dots \verb!]]!, com mostra o trecho abaixo: + +\begin{verbatim} +... + all +# Set variables +CWD="$(pwd)" +SRC_NAME="[[SOURCE NAME]]" +PKG_NAME="[[PACKAGE NAME]]" +ARCH=${ARCH:=[[ARCH]]} +SRC_VERSION=${VERSION:=[[VERSION]]} +PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')" +BUILD=${BUILD:=1[[SLACKBUILD AUTHOR INITIALS]]} +... +PREFIX=${PREFIX:=[[PREFIX]]} +PKG_SRC="$TMP/$SRC_NAME-$SRC_VERSION" + +... +\end{verbatim} + +Uma breve descrição destes campos é apresentada na tabela abaixo: \\ +\\ +\begin{tabular}{l|l} +\hline \hline +\textbf{Campo} & \textbf{Descrição}\\ +\hline \hline +PROGRAM NAME & nome do programa \\ +PROGRAM URL & \textit{URL} da fonte do pacote \\ +SLACKBUILD AUTHOR & nome do autor \\ +SOURCE NAME & nome da fonte, sem versão ou extensão \\ +PACKAGE NAME & nome do pacote e ser gerado \\ +ARCH & arquitetura do pacote. Padrão \verb!i486! \\ +VERSION & versão do pacote \\ +SLACKBUILD AUTHOR INITIALS & assinatura utilizada pelo autor \\ +PREFIX & prefixo da instalação (\verb!/usr!, \verb!/opt!, ...)\\ +SOURCE EXTENSION & extensão da fonte (\verb!bz2!, \verb!gz!, ...) \\ +DOWNLOAD FOLDER URL & \textit{URL} da pasta onde se encontra a fonte \\ +DECOMPRESSOR & o descompressor para a fonte (\verb!gunzip!, \verb!bunzip2!, ...) \\ +DECOMPRESSOR TEST FLAG & \textit{flag} de teste do descompressor \\ +SIGNING KEY URL & \textit{URL} da chave \textit{gpg} do fonte \\ +SIGNING KEY & chave \textit{gpg} da fonte \\ +MD5SUM EXTENSION & extensão utilizada pelo arquivo \textit{md5sum}\\ +PATCH FILES & arquivo \textit{path} \\ +NUMBER OF PREFIX SLASHES TO STRIP & \dots \\ +SOURCE NAME CONSTRUCTION STRING & string para a construção do nome do arquivo. O padrão é \$SRC\_NAME-\$VERSION.tar.\$EXTENSION \\ +OTHER CONFIGURE ARGS & argumentos de configuração passados ao \verb!./configure! \\ +DOCUMENTATION FILES & lista de arquivos para a pasta \verb!/usr/doc/PACKAGE! \\ +SLACK-DESC & conteúdo do \verb!slack-desc!, descrição do pacote \\ +REST OF DOINST.SH & conteúdo do \verb!doinst.sh! \\ +\hline +\end{tabular} +\\\\ + +Em alguns casos o nome do pacote difere do nome da fonte, como é o caso da fonte \verb!sigc++!, que gera o pacote de nome \verb!libsiggc++!. Por este motivo que existem os campos \textit{SOURCE NAME} e \textit{PACKAGE NAME}. Para uma compreensão mais profunda destes campos, aconselho ler o \textit{script} \textit{generic.SlackBuild}. + + +\subsection{As Seções} + +As seções no modelo \verb!generic.mkSlackBuild!, são iniciadas pela \textit{tag} \verb!! e terminadas com \verb!!, como em um código \textit{html}, \underline{sem espaços}. + +A única seção que não pode ter seu nome alterado é \textit{slackdesc}. Esta seção é editada de uma forma diferenciada pelo \textit{mkbuild} e a alteração de seu nome poderá gerar erro. + +Cada seção possui uma \textit{flag} com os possíveis valores: + +\begin{description} + \item[on] habilitado; + \item[off] desabilitado; + \item[all] sempre habilitado. +\end{description} + +A intenção destas \textit{flags} é gerar um padrão para as seções, deixando em \textbf{all} as seções que deverão estar sempre habilitadas e \textbf{on} ou \textbf{off} seções que podem ser habilitadas ou desabilitadas de acordo com as necessidades do \textit{SlackBuild} que será construído. + +As seções padrões do \verb!generic.mkSlackBuild! são listadas na tabela abaixo: +\\\\ +\begin{tabular}{l|l|c} +\hline +Seção & Descrição & Flag \\ +\hline +head & cabeçalho do \textit{SlackBuild} & all \\ +slackbuildrc & carrega \textit{script} \verb!slackbuildrc! & off \\ +set\_variables & inicia as variáveis & all \\ +slkflags & carrega \textit{flags} para compilação & all \\ +error\_codes & códigos de erro para o \verb!createpkg! & off \\ +start\_structure & cria diretórios para compilação & all \\ +download\_source & baixa a fonte do pacote & off \\ +md5sum\_download\_and\_check\_0 & verifica \textit{md5sum} da fonte por código & off \\ +md5sum\_download\_and\_check\_1 & verifica \textit{md5sum} da fonte por arquivo & off \\ +gpg\_signature\_check & verifica assinatura \textit{gpg} da fonte & off \\ +untar\_source & desempacota a fonte & all \\ +path\_source & aplica \textit{path} a fonte & off \\ +configure & configura pacote & off \\ +make\_package & compila o pacote & all \\ +install\_package & instala o pacote em diretório temporário & all \\ +strip\_binaries & limpa binários & off \\ +compress\_manpages & comprime páginas de manuais & off \\ +compress\_info\_files & comprime arquivos \textit{info} & off \\ +install\_documentation & instala documentação & off \\ +slackdesc & \textit{slackdesc} do pacote & off \\ +postinstall\_script & \textit{script} de pós-instalação & off \\ +build\_package & constrói pacote & all \\ +clean\_builds & remove fontes e instalação temporária & off \\ +\hline +\end{tabular} +\\\\ + + +\section{Configuração} + +Por hora, o \textit{mkbuild} utiliza apenas um variável de configuração em \verb!/etc/simplepkg/simplepkg.conf!. A variável \textit{SLACKBUILDS\_DIR} é necessária para utilizar o \textit{mkbuild} com a opção ``\textit{-c}'' ou ``-\textit{-commit}'', que incorpora os arquivos \textit{SlackBuild} e \textit{slack-required} à estrutura de diretórios do \textit{Slack.Sarava}, na cópia local. + + +\section{Criando o SlackBuild de um aplicativo} + +Para fazer um \textit{SlackBuild} com o \textit{mkbuild} é necessário criar um arquivo com os parâmetros que deseja que sejam passados para o modelo. Um arquivo de configuração simples, \textit{sample-Pyrex-small.mkbuild}, é apresentado abaixo: + +\begin{verbatim} +#-------------------- +# Variables +#-------------------- +# Author name +[[SLACKBUILD AUTHOR]]="Adalberto Simão Nader" + +# +# Complete URL address or URL base address ( without $SRC_NAME-$VERSION... ) +[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz" + +# +# Default enable sections: +# head, set_variables, slkflags, start_structure, untar_source, +# make_package, install_package, build_package +# Warning: don't remove '#>>' and "#<<" tags. +#>> Start SlackBuild Sections: + on: slackbuildrc + on: slkflags + on: error_codes + on: download_source + on: configure + on: strip_binaries + on: install_documentation + on: slackdesc + on: clean_builds +#<< End SlackBuild Sections + +#------------------ +# Sections changes +#------------------ +#>slackdesc +pyrex: Pyrex by Slack.Sarava +pyrex: +pyrex: Pyrex is a language specially designed for writing Python extension +pyrex: modules. Its designed to bridge the gap between the nice, high-level, +pyrex: easy-to-use world of Python and the messy, low-level world of C. +pyrex: +pyrex: +pyrex: +pyrex: +pyrex: +pyrex: +#$ & maior \\ +$>=$ & maior ou igual \\ +\hline +\end{tabular} + +Os campos \textit{CONDIÇÃO} e \textit{VERSÃO} podem ser omitidos. Cada pacote da dependência deve ser separado por um ``:''. + +Para o \textit{SLACK REQUIRED} definido com a linha: + +\begin{verbatim} +[[SLACK REQUIRED]]="dep1 >= 1.1.1: dep2 >= 2.2.2:dep3:dep4:dep5 = 1.0" +\end{verbatim} + +\noindent será gerado o arquivo \textit{slack-required} abaixo: + +\begin{verbatim} +# Dependency list to Pyrex +# +# dependency [condition] [version]] +dep1 >= 1.1.1 +dep2 >= 2.2.2 +dep3 +dep4 +dep5 = 1.0 +\end{verbatim} + + +\subsubsection{SLACKBUILD MODEL} + +Este parâmetro contém o nome do modelo utilizado para gerar os \textit{SlackBuilds}. O valor padrão é \textit{generic.mkSlackBuild}. Outros modelos podem ser utilizados adicionando-se o arquivo do modelo no diretório \verb!/etc/simplepkg/defaults/mkbuild/!. A linha abaixo + +\begin{verbatim} +[[SLACKBUILD MODEL]]="generic.mkSlackBuild.2" +\end{verbatim} + +\noindent define o modelo \textit{generic.mkSlackBuild.2} para a construção do \textit{SlackBuild}. + + +\subsubsection{SLACKBUILD PATH} + +Este parâmetro é necessário apenas para uso com a opção ``-c'', \textit{commit}. Ele indica o diretório, na estrutura de diretórios do Slack.Sarava, onde o \textit{SlackBuild} construído deverá ser armasenado. Se este parâmetro não for passado, o \textit{mkbuild} irá pesquisá-lo no repositório do \textit{gentoo}, pela \textit{internet}. Caso não consiga resolver com esta pesquisa, o \textit{SlackBuild} será colocado em um diretório padrão, para \textit{scripts} não classificados, em \verb!others/unclassified/$PKG_NAME!. + +\begin{verbatim} +[[SLACKBUILD PATH]]="dev/python/pyrex" +\end{verbatim} + +A estrutura de diretórios para armazenamento dos \textit{SlackBuilds} adotadas pelo \textit{Slack.Sarava} segue o mesmo padrão do \textit{portage} do \textit{gentoo}. + + +\subsubsection{Outros Parâmetros} + +Outros parâmetros podem ser passados para substituição no modelo \textit{generic.mkSlackBuild}, como o parâmetro \textit{MD5SUM EXTENSION} no trecho abaixo: + +\begin{verbatim} +#[[PATCH FILES]]="" +#[[MD5SUM CODE]]="" +[[MD5SUM EXTENSION]]="047574eb5d1b7848a70d4130035f1f3c" +#[[SIGNING KEY]]="" +#[[SIGNING KEY URL]]="" +#[[PATCH FILES]]="" +\end{verbatim} + +Além destes parâmetros padrões do \textit{generic.mkSlackBuild}, qualquer outro parâmetro pode ser criado e incluído ao modelo. Para isto é necessário que seu nome seja incluído entre duplo colchetes como no exemplo abaixo: + +\begin{verbatim} +[[NEW PARAMETER]]="new value" +\end{verbatim} + +O \textit{mkbuild} irá procurar a ocorrência da seqüência \textit{[[NEW PARAMETER]]} no modelo passado por \textit{[[SLACKBUILD MODEL]]} e irá substitui-lo por ``\textit{new value}''. + + +\subsection{Habilitando seções} + +As seções do modelo \textit{generic.mkSlackBuild} são habilitadas na seção iniciada por ``\#$>>$'' e terminada por ``\#$<<$'', no arquivos de parâmetros. Como as seções estão desabilitadas no modelo padrão, \textit{generic.mkSlackBuild}, esta seção do arquivo de parâmetros tem apenas que habilitar as seções desejadas do modelo. + +\begin{verbatim} +#>> Start SlackBuild Sections: + on: slackbuildrc + on: slkflags + on: error_codes + on: download_source + on: configure + on: strip_binaries + on: install_documentation +# linha ignorada + on: slackdesc + on: clean_builds +#<< End SlackBuild Sections +\end{verbatim} + +No caso do exemplo acima, são habilitadas as seções: \textit{slackbuildrc}, \textit{slkflags}, \textit{error\_codes}, \textit{download\_source}, \textit{configure}, \textit{strip\_binaries}, \textit{install\_documentation}, \textit{slackdesc} e \textit{clean\_builds}. Linhas iniciadas por uma tralha, \#, são ignoradas. + + +\subsubsection{Substituição de seções do modelo} + +Em algumas situações pode ser necessário substituir o conteúdo de uma seção. Estas mudanças nas seções são feitas por iniciar uma seção, no arquivo de parâmetros, por ``\verb!#>nome_da_seção!'' e terminar por ``\verb!#untar_source +# Untar program + +# Change to temp dir +cd "$TMP" + +# Uncompress e untar source +gunzip "$SRC_DIR/$SRC" | tar --no-same-owner --no-same-permissions -xvf || exit $ERROR_TAR + +# Change to source dir +cd "$PKG_SRC" +#slackdesc +pyrex: Pyrex by Slack.Sarava +pyrex: +pyrex: Pyrex is a language specially designed for writing Python extension +pyrex: modules. Its designed to bridge the gap between the nice, high-level, +pyrex: easy-to-use world of Python and the messy, low-level world of C. +pyrex: +pyrex: +pyrex: +pyrex: +pyrex: +pyrex: +#slackdesc! e \verb!# input file with build rules and variables + + Input options: + -a, --author + author name + -ai, --author_initials + author signature + -cs, --const_string + construction string to source name + -u, --url + url address to source + -pn, --pkg_name + package name + -sn, --src_name + source name + -pv, --pkg_version + package version + -md, --model + SlackBuild model file + -j, --jobs + Number of jobs to run simultaneously + --prefix + Prefix install directory + + Program options: + -h, --help + this help mesage + -c, --commit + commit SlackBuilds in local svn tree + -v, --version + program version + +EXAMPLES + mkbuild --prefix /usr/local pyrex.mkbuild + build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild + variables and options definitions. + +AUTHOR + Written by Rduson R. Alves + + +REPORTING BUGS + Report bugs to + +COPYRIGHT + Copyright © 2006 Free Software Foundation, Inc. + This is free software. You may redistribute copies of it under the + terms of the GNU General Public License + . There is NO WARRANTY, to the + extent permitted by law. +\end{verbatim} + +Uma opção interessante é a \textit{-c}, utilizada para adicionar e atualizar uma cópia da lista de \textit{SlackBuilds}, localmente. + + +\end{document} + diff --git a/trunk/doc/mkbuild.pt_BR.tex b/trunk/doc/mkbuild.pt_BR.tex deleted file mode 100644 index 9e620ae..0000000 --- a/trunk/doc/mkbuild.pt_BR.tex +++ /dev/null @@ -1,627 +0,0 @@ -\documentclass[12pt,a4paper,oneside]{article} -%\usepackage[T1]{fontenc} -\usepackage[latin1]{inputenc} -\usepackage[dvips]{graphicx} -%\usepackage{subfigure} -\usepackage{mdwlist} -\usepackage{a4} -%\topmargin -.5in -%\addtolength{\hoffset}{-1.0cm} -%\addtolength{\textwidth}{3.0cm} -%\textwidth = 400pt -%\textheight = 680pt - -\makeatletter - -%\usepackage[pdftex]{color,graphicx} -%\DeclareGraphicsExtensions{.jpg,.pdf,.mps,.png} - -\usepackage[brazil]{babel} -\usepackage[dvips]{graphicx} -%\usepackage{textdraw} - -\input texdraw -%\newenvironment{textdraw}{\leavevmode\btexdraw}{\etexdraw} - -\newcommand{\rcap}[1]{Capítulo \ref{#1}} -\newcommand{\rfig}[1]{Figura \ref{#1}} -\newcommand{\rtab}[1]{Tabela \ref{#1}} -\newcommand{\rsec}[1]{Seção \ref{#1}} - -\makeatother - -\begin{document} - - -\title{Construindo SlackBuilds com mkbuild} - -\author{Rudson Alves} - -\date{\today} - -\maketitle - -%\pagenumbering{roman} - -\tableofcontents{} -%\listoffigures -%\listoftables - -%\abstract{...} - - -\section{Introdução} - -O \textit{mkbuild} é um programa em \textit{script shell} destinado a construção de \textit{Slackbuilds}, \textit{scripts} utilizados para a construção de pacotes no \textit{Slackware}. - -\section{O modelo generic.mkSlackBuild} - -O \textit{mkbuild} utiliza o modelo padrão \textit{generic.mkSlackBuild}, armazenado em - -\begin{verbatim} -/etc/simplepkg/defaults/mkbuild/ -\end{verbatim} - -Este modelo é uma versão setorizada do \textit{generic.SlackBuild}, levemente modificada. O \textit{generic.SlackBuild} é um modelo genérico de \textit{Slackbuilds} disponibilizado na árvore de \textit{Slackbuilds} do \textit{Slack.Sarava}, para servir como modelo para a construção dos \textit{scripts}. Outros modelos setorizados podem ser utilizados pelo \textit{mkbuild}, a única limitação é quanto ao nome da seção \textit{slackdesc}, que não poderá ser alterada. - - -\subsection{Os Campos} - -O modelo \verb!generic.mkSlackBuild! é um \textit{SlackBuild} genérico com vários campos destacados por duplo colchetes, \verb![[! \dots \verb!]]!, com mostra o trecho abaixo: - -\begin{verbatim} -... - all -# Set variables -CWD="$(pwd)" -SRC_NAME="[[SOURCE NAME]]" -PKG_NAME="[[PACKAGE NAME]]" -ARCH=${ARCH:=[[ARCH]]} -SRC_VERSION=${VERSION:=[[VERSION]]} -PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')" -BUILD=${BUILD:=1[[SLACKBUILD AUTHOR INITIALS]]} -... -PREFIX=${PREFIX:=[[PREFIX]]} -PKG_SRC="$TMP/$SRC_NAME-$SRC_VERSION" - -... -\end{verbatim} - -Uma breve descrição destes campos é apresentada na tabela abaixo: \\ -\\ -\begin{tabular}{l|l} -\hline \hline -\textbf{Campo} & \textbf{Descrição}\\ -\hline \hline -PROGRAM NAME & nome do programa \\ -PROGRAM URL & \textit{URL} da fonte do pacote \\ -SLACKBUILD AUTHOR & nome do autor \\ -SOURCE NAME & nome da fonte, sem versão ou extensão \\ -PACKAGE NAME & nome do pacote e ser gerado \\ -ARCH & arquitetura do pacote. Padrão \verb!i486! \\ -VERSION & versão do pacote \\ -SLACKBUILD AUTHOR INITIALS & assinatura utilizada pelo autor \\ -PREFIX & prefixo da instalação (\verb!/usr!, \verb!/opt!, ...)\\ -SOURCE EXTENSION & extensão da fonte (\verb!bz2!, \verb!gz!, ...) \\ -DOWNLOAD FOLDER URL & \textit{URL} da pasta onde se encontra a fonte \\ -DECOMPRESSOR & o descompressor para a fonte (\verb!gunzip!, \verb!bunzip2!, ...) \\ -DECOMPRESSOR TEST FLAG & \textit{flag} de teste do descompressor \\ -SIGNING KEY URL & \textit{URL} da chave \textit{gpg} do fonte \\ -SIGNING KEY & chave \textit{gpg} da fonte \\ -MD5SUM EXTENSION & extensão utilizada pelo arquivo \textit{md5sum}\\ -PATCH FILES & arquivo \textit{path} \\ -NUMBER OF PREFIX SLASHES TO STRIP & \dots \\ -SOURCE NAME CONSTRUCTION STRING & string para a construção do nome do arquivo. O padrão é \$SRC\_NAME-\$VERSION.tar.\$EXTENSION \\ -OTHER CONFIGURE ARGS & argumentos de configuração passados ao \verb!./configure! \\ -DOCUMENTATION FILES & lista de arquivos para a pasta \verb!/usr/doc/PACKAGE! \\ -SLACK-DESC & conteúdo do \verb!slack-desc!, descrição do pacote \\ -REST OF DOINST.SH & conteúdo do \verb!doinst.sh! \\ -\hline -\end{tabular} -\\\\ - -Em alguns casos o nome do pacote difere do nome da fonte, como é o caso da fonte \verb!sigc++!, que gera o pacote de nome \verb!libsiggc++!. Por este motivo que existem os campos \textit{SOURCE NAME} e \textit{PACKAGE NAME}. Para uma compreensão mais profunda destes campos, aconselho ler o \textit{script} \textit{generic.SlackBuild}. - - -\subsection{As Seções} - -As seções no modelo \verb!generic.mkSlackBuild!, são iniciadas pela \textit{tag} \verb!! e terminadas com \verb!!, como em um código \textit{html}, \underline{sem espaços}. - -A única seção que não pode ter seu nome alterado é \textit{slackdesc}. Esta seção é editada de uma forma diferenciada pelo \textit{mkbuild} e a alteração de seu nome poderá gerar erro. - -Cada seção possui uma \textit{flag} com os possíveis valores: - -\begin{description} - \item[on] habilitado; - \item[off] desabilitado; - \item[all] sempre habilitado. -\end{description} - -A intenção destas \textit{flags} é gerar um padrão para as seções, deixando em \textbf{all} as seções que deverão estar sempre habilitadas e \textbf{on} ou \textbf{off} seções que podem ser habilitadas ou desabilitadas de acordo com as necessidades do \textit{SlackBuild} que será construído. - -As seções padrões do \verb!generic.mkSlackBuild! são listadas na tabela abaixo: -\\\\ -\begin{tabular}{l|l|c} -\hline -Seção & Descrição & Flag \\ -\hline -head & cabeçalho do \textit{SlackBuild} & all \\ -slackbuildrc & carrega \textit{script} \verb!slackbuildrc! & off \\ -set\_variables & inicia as variáveis & all \\ -slkflags & carrega \textit{flags} para compilação & all \\ -error\_codes & códigos de erro para o \verb!createpkg! & off \\ -start\_structure & cria diretórios para compilação & all \\ -download\_source & baixa a fonte do pacote & off \\ -md5sum\_download\_and\_check\_0 & verifica \textit{md5sum} da fonte por código & off \\ -md5sum\_download\_and\_check\_1 & verifica \textit{md5sum} da fonte por arquivo & off \\ -gpg\_signature\_check & verifica assinatura \textit{gpg} da fonte & off \\ -untar\_source & desempacota a fonte & all \\ -path\_source & aplica \textit{path} a fonte & off \\ -configure & configura pacote & off \\ -make\_package & compila o pacote & all \\ -install\_package & instala o pacote em diretório temporário & all \\ -strip\_binaries & limpa binários & off \\ -compress\_manpages & comprime páginas de manuais & off \\ -compress\_info\_files & comprime arquivos \textit{info} & off \\ -install\_documentation & instala documentação & off \\ -slackdesc & \textit{slackdesc} do pacote & off \\ -postinstall\_script & \textit{script} de pós-instalação & off \\ -build\_package & constrói pacote & all \\ -clean\_builds & remove fontes e instalação temporária & off \\ -\hline -\end{tabular} -\\\\ - - -\section{Configuração} - -Por hora, o \textit{mkbuild} utiliza apenas um variável de configuração em \verb!/etc/simplepkg/simplepkg.conf!. A variável \textit{SLACKBUILDS\_DIR} é necessária para utilizar o \textit{mkbuild} com a opção ``\textit{-c}'' ou ``-\textit{-commit}'', que incorpora os arquivos \textit{SlackBuild} e \textit{slack-required} à estrutura de diretórios do \textit{Slack.Sarava}, na cópia local. - - -\section{Criando o SlackBuild de um aplicativo} - -Para fazer um \textit{SlackBuild} com o \textit{mkbuild} é necessário criar um arquivo com os parâmetros que deseja que sejam passados para o modelo. Um arquivo de configuração simples, \textit{sample-Pyrex-small.mkbuild}, é apresentado abaixo: - -\begin{verbatim} -#-------------------- -# Variables -#-------------------- -# Author name -[[SLACKBUILD AUTHOR]]="Adalberto Simão Nader" - -# -# Complete URL address or URL base address ( without $SRC_NAME-$VERSION... ) -[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz" - -# -# Default enable sections: -# head, set_variables, slkflags, start_structure, untar_source, -# make_package, install_package, build_package -# Warning: don't remove '#>>' and "#<<" tags. -#>> Start SlackBuild Sections: - on: slackbuildrc - on: slkflags - on: error_codes - on: download_source - on: configure - on: strip_binaries - on: install_documentation - on: slackdesc - on: clean_builds -#<< End SlackBuild Sections - -#------------------ -# Sections changes -#------------------ -#>slackdesc -pyrex: Pyrex by Slack.Sarava -pyrex: -pyrex: Pyrex is a language specially designed for writing Python extension -pyrex: modules. Its designed to bridge the gap between the nice, high-level, -pyrex: easy-to-use world of Python and the messy, low-level world of C. -pyrex: -pyrex: -pyrex: -pyrex: -pyrex: -pyrex: -#$ & maior \\ -$>=$ & maior ou igual \\ -\hline -\end{tabular} - -Os campos \textit{CONDIÇÃO} e \textit{VERSÃO} podem ser omitidos. Cada pacote da dependência deve ser separado por um ``:''. - -Para o \textit{SLACK REQUIRED} definido com a linha: - -\begin{verbatim} -[[SLACK REQUIRED]]="dep1 >= 1.1.1: dep2 >= 2.2.2:dep3:dep4:dep5 = 1.0" -\end{verbatim} - -\noindent será gerado o arquivo \textit{slack-required} abaixo: - -\begin{verbatim} -# Dependency list to Pyrex -# -# dependency [condition] [version]] -dep1 >= 1.1.1 -dep2 >= 2.2.2 -dep3 -dep4 -dep5 = 1.0 -\end{verbatim} - - -\subsubsection{SLACKBUILD MODEL} - -Este parâmetro contém o nome do modelo utilizado para gerar os \textit{SlackBuilds}. O valor padrão é \textit{generic.mkSlackBuild}. Outros modelos podem ser utilizados adicionando-se o arquivo do modelo no diretório \verb!/etc/simplepkg/defaults/mkbuild/!. A linha abaixo - -\begin{verbatim} -[[SLACKBUILD MODEL]]="generic.mkSlackBuild.2" -\end{verbatim} - -\noindent define o modelo \textit{generic.mkSlackBuild.2} para a construção do \textit{SlackBuild}. - - -\subsubsection{SLACKBUILD PATH} - -Este parâmetro é necessário apenas para uso com a opção ``-c'', \textit{commit}. Ele indica o diretório, na estrutura de diretórios do Slack.Sarava, onde o \textit{SlackBuild} construído deverá ser armasenado. Se este parâmetro não for passado, o \textit{mkbuild} irá pesquisá-lo no repositório do \textit{gentoo}, pela \textit{internet}. Caso não consiga resolver com esta pesquisa, o \textit{SlackBuild} será colocado em um diretório padrão, para \textit{scripts} não classificados, em \verb!others/unclassified/$PKG_NAME!. - -\begin{verbatim} -[[SLACKBUILD PATH]]="dev/python/pyrex" -\end{verbatim} - -A estrutura de diretórios para armazenamento dos \textit{SlackBuilds} adotadas pelo \textit{Slack.Sarava} segue o mesmo padrão do \textit{portage} do \textit{gentoo}. - - -\subsubsection{Outros Parâmetros} - -Outros parâmetros podem ser passados para substituição no modelo \textit{generic.mkSlackBuild}, como o parâmetro \textit{MD5SUM EXTENSION} no trecho abaixo: - -\begin{verbatim} -#[[PATCH FILES]]="" -#[[MD5SUM CODE]]="" -[[MD5SUM EXTENSION]]="047574eb5d1b7848a70d4130035f1f3c" -#[[SIGNING KEY]]="" -#[[SIGNING KEY URL]]="" -#[[PATCH FILES]]="" -\end{verbatim} - -Além destes parâmetros padrões do \textit{generic.mkSlackBuild}, qualquer outro parâmetro pode ser criado e incluído ao modelo. Para isto é necessário que seu nome seja incluído entre duplo colchetes como no exemplo abaixo: - -\begin{verbatim} -[[NEW PARAMETER]]="new value" -\end{verbatim} - -O \textit{mkbuild} irá procurar a ocorrência da seqüência \textit{[[NEW PARAMETER]]} no modelo passado por \textit{[[SLACKBUILD MODEL]]} e irá substitui-lo por ``\textit{new value}''. - - -\subsection{Habilitando seções} - -As seções do modelo \textit{generic.mkSlackBuild} são habilitadas na seção iniciada por ``\#$>>$'' e terminada por ``\#$<<$'', no arquivos de parâmetros. Como as seções estão desabilitadas no modelo padrão, \textit{generic.mkSlackBuild}, esta seção do arquivo de parâmetros tem apenas que habilitar as seções desejadas do modelo. - -\begin{verbatim} -#>> Start SlackBuild Sections: - on: slackbuildrc - on: slkflags - on: error_codes - on: download_source - on: configure - on: strip_binaries - on: install_documentation -# linha ignorada - on: slackdesc - on: clean_builds -#<< End SlackBuild Sections -\end{verbatim} - -No caso do exemplo acima, são habilitadas as seções: \textit{slackbuildrc}, \textit{slkflags}, \textit{error\_codes}, \textit{download\_source}, \textit{configure}, \textit{strip\_binaries}, \textit{install\_documentation}, \textit{slackdesc} e \textit{clean\_builds}. Linhas iniciadas por uma tralha, \#, são ignoradas. - - -\subsubsection{Substituição de seções do modelo} - -Em algumas situações pode ser necessário substituir o conteúdo de uma seção. Estas mudanças nas seções são feitas por iniciar uma seção, no arquivo de parâmetros, por ``\verb!#>nome_da_seção!'' e terminar por ``\verb!#untar_source -# Untar program - -# Change to temp dir -cd "$TMP" - -# Uncompress e untar source -gunzip "$SRC_DIR/$SRC" | tar --no-same-owner --no-same-permissions -xvf || exit $ERROR_TAR - -# Change to source dir -cd "$PKG_SRC" -#slackdesc -pyrex: Pyrex by Slack.Sarava -pyrex: -pyrex: Pyrex is a language specially designed for writing Python extension -pyrex: modules. Its designed to bridge the gap between the nice, high-level, -pyrex: easy-to-use world of Python and the messy, low-level world of C. -pyrex: -pyrex: -pyrex: -pyrex: -pyrex: -pyrex: -#slackdesc! e \verb!# input file with build rules and variables - - Input options: - -a, --author - author name - -ai, --author_initials - author signature - -cs, --const_string - construction string to source name - -u, --url - url address to source - -pn, --pkg_name - package name - -sn, --src_name - source name - -pv, --pkg_version - package version - -md, --model - SlackBuild model file - -j, --jobs - Number of jobs to run simultaneously - --prefix - Prefix install directory - - Program options: - -h, --help - this help mesage - -c, --commit - commit SlackBuilds in local svn tree - -v, --version - program version - -EXAMPLES - mkbuild --prefix /usr/local pyrex.mkbuild - build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild - variables and options definitions. - -AUTHOR - Written by Rduson R. Alves - - -REPORTING BUGS - Report bugs to - -COPYRIGHT - Copyright © 2006 Free Software Foundation, Inc. - This is free software. You may redistribute copies of it under the - terms of the GNU General Public License - . There is NO WARRANTY, to the - extent permitted by law. -\end{verbatim} - -Uma opção interessante é a \textit{-c}, utilizada para adicionar e atualizar uma cópia da lista de \textit{SlackBuilds}, localmente. - - -\end{document} - diff --git a/trunk/doc/simplaret-pt_BR.tex b/trunk/doc/simplaret-pt_BR.tex new file mode 100644 index 0000000..c3e1256 --- /dev/null +++ b/trunk/doc/simplaret-pt_BR.tex @@ -0,0 +1,158 @@ +\documentclass{article} +\usepackage[brazilian]{babel} +\usepackage[latin1]{inputenc} +\usepackage[dvips]{graphics} +\usepackage{hyperref} +\usepackage{html,makeid} + +\title{Simplaret: ferramenta para obtenção de pacotes} +\author{Silvio Rhatto} + +\begin{document}\label{start} +\maketitle + +\begin{abstract} +O \emph{simplaret} é a ferramenta do \htmladdnormallink{simplepkg}{http://slack.sarava.org/node/12} utilizada para obter pacotes de repositórios locais ou remotos. Com ele, você pode não só baixar pacotes do seu sistema \emph{slackware} como também pode baixar de qualquer versão ou arquitetura cujo repositório siga os \htmladdnormallink{mirror guidelines}{http://www.slackware.com/getslack/mirroring_guidelines.txt}, permitindo que você gerencie facilmente todas as suas jaulas e instalações de slackware, independentemente da arquitetura ou versão que elas utilizem. English version \htmladdnormallink{here}{/node/17}. + +Ele foi inspirado no comportamento do swaret mas não pretende de modo algum chegar no nível de complexidade deste, mas sim executar a obtenção de pacotes de um modo diferente. Sua finalidade é apenas baixar pacotes para que os aplicativos do \emph{simplepkg} possam utilizá-lo posteriormente. O \emph{simplaret} ainda pode ser usado sozinho para procurar e baixar pacotes. +\end{abstract} + +\section{Obtendo e instalando} + +O \emph{simplaret} acompanha o \emph{simplepkg} e por isso sua instalação e configuração é dada no \htmladdnormallink{artigo do simplepkg}{/node/12}. Ele utiliza o mesmo arquivo de configuração do simplepkg, o \emph{/etc/simplepkg/simplepkg.conf} e guarda as definições de repositórios em \emph{/etc/simplepkg/repos.conf}. + +\section{Organização do repositório} + +O repositório de armazenamento local do simplaret é definido pelo parâmetro \emph{STORAGE} e é organizado da seguinte maneira: + +\begin{verbatim} +$STORAGE/arch/version/ +\end{verbatim} + +Pacotes obtidos num repositório que não seja oficial da distribuição ficam em + +\begin{verbatim} +$STORAGE/arch/version/repository-name/ +\end{verbatim} + +Isso quer dizer, por exemplo, que pacotes do slackware 10.2 ficariam em + +\begin{verbatim} +$STORAGE/i386/10.2/ +\end{verbatim} + +e os pacotes obtidos a partir do \htmladdnormallink{repositório slamd64 do slack.sarava.org}{/node/11} ficaria, por exemplo, em + +\begin{verbatim} +$STORAGE/x86_64/10.2/slack.sarava.org/ +\end{verbatim} + +No arquivo de repositórios (\emph{/etc/simplepkg/repos.conf}), as definições de repositório seguem o seguinte esquema, semelhante ao formato de configuração do \emph{swaret}: + +\begin{verbatim} +ROOT-i386="http://slack.sarava.org/slackware/" +ROOT-x86_64="http://ftp.heanet.ie/pub/slamd64/" +REPOS-i386-10.2="slack.sarava.org%http://slack.sarava.org/packages/slackware/slackware-10.2/" +REPOS-x86_64-10.2="slack.sarava.org%http://slack.sarava.org/packages/slamd64/slamd64-10.2/" +\end{verbatim} + +Repositórios definidos como \emph{ROOT} são aqueles que + +\begin{itemize} + \item Possuem pacotes da distribuição oficial ou + \item Estão organizados por versão, de acordo com os \htmladdnormallink{mirror guidelines}{http://www.slackware.com/getslack/mirroring_guidelines.txt} +\end{itemize} + +Já os repositórios definidos como \emph{REPOS} são aqueles que contém pacotes para uma versão específica e/ou que são não-oficiais. + +Quando o \emph{simplaret} busca ou obtém um pacote, a precedência pelos repositórios é dada às definições de \emph{ROOT} e em seguinda às de \emph{REPOS}. As definições \emph{REPOS} ainda devem possuir, além da \emph{URL} do repositório, um nome para identificá-lo, sendo que esses dois campos são separados por um delimitador. + +\section{Baixando as listas de pacotes} + +Após configurá-lo, é preciso atualizar a lista de pacotes: + +\begin{verbatim} +simplaret --update +\end{verbatim} + +Isso atualiza a lista de pacotes da arquitetura definida em \emph{DEFAULT\_ARCH} e da versão \emph{DEFAULT\_VERSION} apenas. Se você quiser forçar a atualização, por exemplo, para a arquitetura \emph{x86\_64} (\emph{slamd64}) e versão \emph{10.2}, basta + +\begin{verbatim} +ARCH=x86_64 VERSION=10.2 simplaret --update +\end{verbatim} + +\section{Buscando pacotes} + +Para buscar um pacote, esses comandos servem de exemplo: + +\begin{verbatim} +simplaret --search coreutils +\end{verbatim} + +pacote para o \htmladdnormallink{Slack/390}{http://www.slack390.org/}, + +\begin{verbatim} +ARCH=s390 simplaret --search x11 +\end{verbatim} + +e para \emph{slackware 10.1} com pacotes adicionais em \emph{i686}, + +\begin{verbatim} +ARCH=i686 VERSION=10.1 simplaret --search icecast +\end{verbatim} + +\section{Baixando um pacote} + +Para baixar um pacote: + +\begin{verbatim} +simplaret --get icecast +\end{verbatim} + +O simplaret baixa o primeiro pacote na ordem de precedência dos repositórios. Versões futuras deverão conter uma opção que force a obtenção do pacote de um repositório específico. + +\section{Baixando patches} + +Através do parâmetro de configuração \emph{PATCHES\_DIR} é possível especificar uma pasta +onde os patches de cada distribuição serão armazenados, organizados também por arquitetura. + +Por exemplo, patches do slackware 10.2 ficarão sempre em + +\begin{verbatim} +$PATCHES_DIR/i386/10.2/ +\end{verbatim} + +Os patches na verdade são baixados através de um \emph{simplaret --get} e armazenados na subpasta de \emph{\$STORAGE} correspondente e apenas um link simbólico é mantido em \emph{\$PATCHES\_DIR/\$ARCH/\$VERSION}. + +Para baixar os patches, use uma chamada do tipo + +\begin{verbatim} +ARCH=arquitetura VERSION=versao simplaret --get-patches +\end{verbatim} + +E os patches dessa arquitetura e versão serão baixados. + +\section{Apagando pacotes} + +O repositório de pacotes de uma arquitetura e versão pode ser apagado com o comando + +\begin{verbatim} +simplaret --purge +\end{verbatim} + +\section{Mas pra quê serve isso?} + +Você pode estar se perguntando: \emph{quem utilizaria uma ferramenta que baixa pacotes de várias arquiteturas?} + +O \emph{simplaret} foi escrito tendo em mente um ambiente \emph{*86} onde várias \emph{jaulas} de diferentes arquiteturas estão instaladas. Suponha por exemplo uma máquina \emph{x86\_64} que possua as seguintes jaulas: + +\begin{itemize} + \item slamd64 10.2 + \item slackware 10.2 + \item slackware 10.1 com pacotes adicionais em \emph{i686} + \item \htmladdnormallink{uSlack}{http://gnuden.sarava.org} (\emph{uClibc para i386}) +\end{itemize} + +O condenado/a em questão que roda todas essas jaulas, pelos mais diversos motivos, pode ter uma grande dor de cabeça para manter os pacotes em ordem de forma manual. Com o \emph{simplaret} e eventualmente com o \emph{simplepkg}, a tarefa se torna trivial. + +\end{document} diff --git a/trunk/doc/simplaret.pt_BR.tex b/trunk/doc/simplaret.pt_BR.tex deleted file mode 100644 index c3e1256..0000000 --- a/trunk/doc/simplaret.pt_BR.tex +++ /dev/null @@ -1,158 +0,0 @@ -\documentclass{article} -\usepackage[brazilian]{babel} -\usepackage[latin1]{inputenc} -\usepackage[dvips]{graphics} -\usepackage{hyperref} -\usepackage{html,makeid} - -\title{Simplaret: ferramenta para obtenção de pacotes} -\author{Silvio Rhatto} - -\begin{document}\label{start} -\maketitle - -\begin{abstract} -O \emph{simplaret} é a ferramenta do \htmladdnormallink{simplepkg}{http://slack.sarava.org/node/12} utilizada para obter pacotes de repositórios locais ou remotos. Com ele, você pode não só baixar pacotes do seu sistema \emph{slackware} como também pode baixar de qualquer versão ou arquitetura cujo repositório siga os \htmladdnormallink{mirror guidelines}{http://www.slackware.com/getslack/mirroring_guidelines.txt}, permitindo que você gerencie facilmente todas as suas jaulas e instalações de slackware, independentemente da arquitetura ou versão que elas utilizem. English version \htmladdnormallink{here}{/node/17}. - -Ele foi inspirado no comportamento do swaret mas não pretende de modo algum chegar no nível de complexidade deste, mas sim executar a obtenção de pacotes de um modo diferente. Sua finalidade é apenas baixar pacotes para que os aplicativos do \emph{simplepkg} possam utilizá-lo posteriormente. O \emph{simplaret} ainda pode ser usado sozinho para procurar e baixar pacotes. -\end{abstract} - -\section{Obtendo e instalando} - -O \emph{simplaret} acompanha o \emph{simplepkg} e por isso sua instalação e configuração é dada no \htmladdnormallink{artigo do simplepkg}{/node/12}. Ele utiliza o mesmo arquivo de configuração do simplepkg, o \emph{/etc/simplepkg/simplepkg.conf} e guarda as definições de repositórios em \emph{/etc/simplepkg/repos.conf}. - -\section{Organização do repositório} - -O repositório de armazenamento local do simplaret é definido pelo parâmetro \emph{STORAGE} e é organizado da seguinte maneira: - -\begin{verbatim} -$STORAGE/arch/version/ -\end{verbatim} - -Pacotes obtidos num repositório que não seja oficial da distribuição ficam em - -\begin{verbatim} -$STORAGE/arch/version/repository-name/ -\end{verbatim} - -Isso quer dizer, por exemplo, que pacotes do slackware 10.2 ficariam em - -\begin{verbatim} -$STORAGE/i386/10.2/ -\end{verbatim} - -e os pacotes obtidos a partir do \htmladdnormallink{repositório slamd64 do slack.sarava.org}{/node/11} ficaria, por exemplo, em - -\begin{verbatim} -$STORAGE/x86_64/10.2/slack.sarava.org/ -\end{verbatim} - -No arquivo de repositórios (\emph{/etc/simplepkg/repos.conf}), as definições de repositório seguem o seguinte esquema, semelhante ao formato de configuração do \emph{swaret}: - -\begin{verbatim} -ROOT-i386="http://slack.sarava.org/slackware/" -ROOT-x86_64="http://ftp.heanet.ie/pub/slamd64/" -REPOS-i386-10.2="slack.sarava.org%http://slack.sarava.org/packages/slackware/slackware-10.2/" -REPOS-x86_64-10.2="slack.sarava.org%http://slack.sarava.org/packages/slamd64/slamd64-10.2/" -\end{verbatim} - -Repositórios definidos como \emph{ROOT} são aqueles que - -\begin{itemize} - \item Possuem pacotes da distribuição oficial ou - \item Estão organizados por versão, de acordo com os \htmladdnormallink{mirror guidelines}{http://www.slackware.com/getslack/mirroring_guidelines.txt} -\end{itemize} - -Já os repositórios definidos como \emph{REPOS} são aqueles que contém pacotes para uma versão específica e/ou que são não-oficiais. - -Quando o \emph{simplaret} busca ou obtém um pacote, a precedência pelos repositórios é dada às definições de \emph{ROOT} e em seguinda às de \emph{REPOS}. As definições \emph{REPOS} ainda devem possuir, além da \emph{URL} do repositório, um nome para identificá-lo, sendo que esses dois campos são separados por um delimitador. - -\section{Baixando as listas de pacotes} - -Após configurá-lo, é preciso atualizar a lista de pacotes: - -\begin{verbatim} -simplaret --update -\end{verbatim} - -Isso atualiza a lista de pacotes da arquitetura definida em \emph{DEFAULT\_ARCH} e da versão \emph{DEFAULT\_VERSION} apenas. Se você quiser forçar a atualização, por exemplo, para a arquitetura \emph{x86\_64} (\emph{slamd64}) e versão \emph{10.2}, basta - -\begin{verbatim} -ARCH=x86_64 VERSION=10.2 simplaret --update -\end{verbatim} - -\section{Buscando pacotes} - -Para buscar um pacote, esses comandos servem de exemplo: - -\begin{verbatim} -simplaret --search coreutils -\end{verbatim} - -pacote para o \htmladdnormallink{Slack/390}{http://www.slack390.org/}, - -\begin{verbatim} -ARCH=s390 simplaret --search x11 -\end{verbatim} - -e para \emph{slackware 10.1} com pacotes adicionais em \emph{i686}, - -\begin{verbatim} -ARCH=i686 VERSION=10.1 simplaret --search icecast -\end{verbatim} - -\section{Baixando um pacote} - -Para baixar um pacote: - -\begin{verbatim} -simplaret --get icecast -\end{verbatim} - -O simplaret baixa o primeiro pacote na ordem de precedência dos repositórios. Versões futuras deverão conter uma opção que force a obtenção do pacote de um repositório específico. - -\section{Baixando patches} - -Através do parâmetro de configuração \emph{PATCHES\_DIR} é possível especificar uma pasta -onde os patches de cada distribuição serão armazenados, organizados também por arquitetura. - -Por exemplo, patches do slackware 10.2 ficarão sempre em - -\begin{verbatim} -$PATCHES_DIR/i386/10.2/ -\end{verbatim} - -Os patches na verdade são baixados através de um \emph{simplaret --get} e armazenados na subpasta de \emph{\$STORAGE} correspondente e apenas um link simbólico é mantido em \emph{\$PATCHES\_DIR/\$ARCH/\$VERSION}. - -Para baixar os patches, use uma chamada do tipo - -\begin{verbatim} -ARCH=arquitetura VERSION=versao simplaret --get-patches -\end{verbatim} - -E os patches dessa arquitetura e versão serão baixados. - -\section{Apagando pacotes} - -O repositório de pacotes de uma arquitetura e versão pode ser apagado com o comando - -\begin{verbatim} -simplaret --purge -\end{verbatim} - -\section{Mas pra quê serve isso?} - -Você pode estar se perguntando: \emph{quem utilizaria uma ferramenta que baixa pacotes de várias arquiteturas?} - -O \emph{simplaret} foi escrito tendo em mente um ambiente \emph{*86} onde várias \emph{jaulas} de diferentes arquiteturas estão instaladas. Suponha por exemplo uma máquina \emph{x86\_64} que possua as seguintes jaulas: - -\begin{itemize} - \item slamd64 10.2 - \item slackware 10.2 - \item slackware 10.1 com pacotes adicionais em \emph{i686} - \item \htmladdnormallink{uSlack}{http://gnuden.sarava.org} (\emph{uClibc para i386}) -\end{itemize} - -O condenado/a em questão que roda todas essas jaulas, pelos mais diversos motivos, pode ter uma grande dor de cabeça para manter os pacotes em ordem de forma manual. Com o \emph{simplaret} e eventualmente com o \emph{simplepkg}, a tarefa se torna trivial. - -\end{document} diff --git a/trunk/doc/simplepkg-en.tex b/trunk/doc/simplepkg-en.tex new file mode 100644 index 0000000..59a69dc --- /dev/null +++ b/trunk/doc/simplepkg-en.tex @@ -0,0 +1,310 @@ +\documentclass{article} +\usepackage[brazilian]{babel} +\usepackage[latin1]{inputenc} +\usepackage[dvips]{graphics} +\usepackage{hyperref} +\usepackage{html,makeid} + +\title{Simplaret: simplepkg retrieval tool} +\author{Silvio Rhatto} + +\begin{document}\label{start} +\maketitle + +\begin{abstract} +Simplaret is a \htmladdnormallink{simplepkg}{http://slack.sarava.org/simplepkg-en} tool used to download packages from local and remote repositories. With simplaret, one can grab packages for all archictectures and versions of slackware-like distributions that follows the mirror guidelines, allowing an easy management all jails and slackware installations in a machine, no matter wich arquiteture or version each one has. + +It was inspired in swaret behavior but don't tries to get its complexity level, but execute package download in a different way, where the local repository is organized by archictecture and version. It can also search for packages. It runs on top of pkgtool and is totally non-instrusive and can search, add, remove and upgrade packages. Portuguese version \htmladdnormallink{here}{/simplaret}. +\end{abstract} + +\section{Downloading and installing} + +Simplaret comes with simplepkg, wich installation and configuration is detailed at http://slack.sarava.org/simplepkg. Simplaret uses /etc/simplepkg/simplepkg.conf for its definitions and /etc/simplepkg/repos.conf for repository information. The default configuration should work for almost everyone. + +\section{Using simplaret} + +Simplaret stores its data in system wide folders. Then, some funcionality will just be available if its run with root user capabilities. The first thing you need to do with simplaret is to fetch repository metadata, using + +\begin{verbatim} +simplaret --update +\end{verbatim} + +or simply + +\begin{verbatim} +simplaret update +\end{verbatim} + +as simplepkg supports both command line behaviour (--update or just update). After that, you can search for packages using commands like + +\begin{verbatim} +simplaret search ekiga +\end{verbatim} + +The result should be something like + +\begin{verbatim} +REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz +\end{verbatim} + +As we'll see afterwards, "REPOS" means the repository type, "sarava" is the repository name, "arch" is the package architecture (i386 in this case) and "version" is the repository version (11.0 in this case). + +To install this package, just type + +\begin{verbatim} +simplaret install ekiga +\end{verbatim} + +By default, if simplaret finds in the repository a slack-required file for this package (i.e, the file ekiga.slack-required in the same folder of the binary package) then it will try to install all unmet dependencies. This default behaviour can be disabled through config file parameters. + +If you just want to download the package, type + +\begin{verbatim} +simplaret get ekiga +\end{verbatim} + +In the case of simplaret finds more than one package with the same name, it will get in the order that the "search" option shows them. The search precedence can also be defined by config file parameters. For instance, the command + +\begin{verbatim} +simplaret search kernel-generic +\end{verbatim} + +can return something like + +\begin{verbatim} +ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.17.13-i486-1.tgz +ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.18-i486-1.tgz +\end{verbatim} + +So the command + +\begin{verbatim} +simplaret install kernel-generic +\end{verbatim} + +will attempt to install the package "kernel-generic-2.6.17.13-i486-1.tgz" and not the file "kernel-generic-2.6.18-i486-1.tgz". If you want to force simplaret to get and specific package, use its complete file name: + +\begin{verbatim} +simplaret install kernel-generic-2.6.18-i486-1.tgz +\end{verbatim} + +If a package is already installed in the system, the --install option will try to upgrade it if the version or build number between the installed package and the one in the repository are different. So the command + +\begin{verbatim} +simplaret install simplepkg +\end{verbatim} + +updates simplepkg in the case there's a new version. To remove a package, type + +\begin{verbatim} +simplaret remove nome-do-pacote +\end{verbatim} + +That's just an alias for the standard removepkg command. + +Simplaret stores downloaded packages in a system folder that defaults to /var/simplaret. As you get more and more packages, simplaret will consume more space ir your disk. To erase your local repository folder, use the command + +\begin{verbatim} +simplaret purge +\end{verbatim} + +This will erase just the packages from the current arch and version. Details about how to erase the repository for different arch and version are in another session. + +You can also force simplaret to erase just old packages. The following command erases just packages older than six weeks or more: + +\begin{verbatim} +simplaret purge -w 3 +\end{verbatim} + +\section{Downloading patches and upgrading the system} + +Simplaret hasn't just about package installing and removal, it has two more important features: patches retrieval and application. Assuming that the patches repository of your slackware flavour is correctly configured (what should work with almost everyone with the default configuration), you can fetch the available patches using the command + +\begin{verbatim} +simplaret get-patches +\end{verbatim} + +If you don't just donwload but also apply those patches, use + +\begin{verbatim} +simplaret upgrade +\end{verbatim} + +\section{Working with more than one architecture and version} + +Until now we just looked what is the requirement for all package management system: package retrieval, installation, search, upgrade and dependency resolution. What makes simplaret different from another tools is the ability to deal with different architectures and versions and slackware installations. + +The features descibed in this section will just make sense after you read the next section, when we'll talk about multiple slackware installations and jails in the same computer. + +Suppose you're running Slackware (arch i386) bit wants to update the package list from Slamd64 version 11.0 (arch x86\_64). To do that, just type + +\begin{verbatim} +ARCH=x86_64 VERSION=11.0 simplaret update +\end{verbatim} + +This command grabs the Slamd64 package list without confliting in any way with the standard and already downloaded i386 Slackware package list. This doesn't happens because simplaret stores metadata from different archs and versions at different folders. + +Its optional to pass ARCH and VERSION environment variables to simplaret. If one or none of them was specified, simplaret uses the standar system value, obtained from the file /etc/slackware-version, or uses config parameters to do that. + +As an example, to search for a package in the arch powerpc (Slackintosh) version 11.0, just type + +\begin{verbatim} +ARCH=powerpc VERSION=11.0 simplaret search package-name +\end{verbatim} + +All command previously mentioned can work that way, except those that install or remove packages as its dangerous to mix packages from different archs and versions in the same system. + +\section{Working with multiple installations} + +The previously section mentions a feature that just makes sense in systems where there's more than one slackware-like installation using different archs and versions. + +Say you have a x86\_64 machine with three installed systems: + +\begin{enumerate} + \item Slamd64 11.0 at the root folder + \item Slackware 11.0 at /mnt/slackware-1 + \item Slackware 10.2 at /mnt/slackware-2 +\end{enumerate} + +In the case of package install or patch retrieval and application, simplaret supports the environment variable ROOT to specify which folder simplaret should look for a system. + +Then, to install a package at /mnt/slackware-1, just type + +\begin{verbatim} +ARCH=i386 VERSION=11.0 simplaret update +ROOT=/mnt/slackware-1 simplaret install package-name +\end{verbatim} + +The first command just updates the package list and the second makes simplepkg install the package with using /mnt/slackware-1 arch and version. If you want to do the same at /mnt/slackware-2, use the analogous command + +\begin{verbatim} +ARCH=i386 VERSION=10.2 simplaret update +ROOT=/mnt/slackware-2 simplaret install package-name +\end{verbatim} + +There's also a feature to make patch retrieval and application with just one command, using the file /etc/simplepkg/jailist. This file is used by simplepkg's mkjail script to store with jails you have on your system but is also used by simplaret to upgrade all jails with just one command. + +Considering that your box has the three previously mentioned slackware installation. Then, to add /mnt/slackware-1 and /mnt/slackware-2 in the automatic upgrade list, add the following lines in your /etc/simplepkg/jailist (without spaces): + +\begin{verbatim} +/mnt/slackware-1 +/mnt/slackware-2 +\end{verbatim} + +The root system doesn't need to be added in this file. Then, you can get the patches for all your three systems with the command + +\begin{verbatim} +simplaret get-patches +\end{verbatim} + +To get the patches and/or apply them in all jails (including the root system), use + +\begin{verbatim} +simplaret upgrade +\end{verbatim} + +This feature makes easier to keep all your installations always upgraded. + +\section{The repos.conf file} + +Now that we just talked about all simplaret features, its time to take a tour at its configuration files. The first one we'll say about is the repository definition file, /etc/simplepkg/repos.conf. + +If you don't mind to make an advanced simplaret usage, then probably you can just leave this section as the default config should work for almost all standard situations and you'll just need to edit repos.conf to change repository priorities. + +The repos.conf file contains one repository definition per line using the following syntax: + +\begin{verbatim} +TYPE[-ARCH][-VERSION]="name%URL" +\end{verbatim} + +The content in brackets are optional depending on the repository type as we'll see later in this section. The repository types supported by simplaret are: + +\subsection{PATCHES} + +PATCHES: used for repositories containing patches and which file metadata is the file FILE\_LIST instead the standard FILELIST.TXT; example: + +\begin{verbatim} +PATCHES-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/patches/" +\end{verbatim} + +This defines a patches repository for arch i386 (official Slackware), version 11.0 and named as "sarava". + +Its optional to have a PATCHES definition in order to get patches: the ROOT repository definition just take care of that and you'll just need to use a PATCHES definition if you want to give precedence to some patches repository over all other definition types. + +\subsection{ROOT} + +ROOT: this type specifies the default slackware-like repository, where the content is sorted by version. An official slackware repository then is defined as + +\begin{verbatim} +ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/" +\end{verbatim} + +ROOT repositories needs just the arch definition, a name and an URL. In the previous case, we have a ROOT repository called "tds". It doesn't need any version information as its already considers tha the content is sorted in folders like http://slackware.mirrors.tds.net/pub/slackware/slackware-10.2/ and http://slackware.mirrors.tds.net/pub/slackware/slackware-11.0/. + +\subsection{REPOS} + +REPOS: this repository type ir arch and version oriented, like + +\begin{verbatim} +REPOS-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/" +\end{verbatim} + +In the above case, a repository called "sarava" is defined using arch i386 and version 11.0 with URL http://slack.sarava.org/packages/slackware/slackware-11.0/. This repository type is recommended when using non-official repositories. + +\subsection{NOARCH} + +NOARCH: the last type is used to define repositories where packages are arch and version independent, like + +\begin{verbatim} +NOARCH="sarava%http://slack.sarava.org/packages/noarch" +\end{verbatim} + +In any repository type, the supperted URL schemes are http://, ftp:// or file:// (for local repositories). + +\section{Repository order and precedence} + +As simplaret supports more than one repository definition for each type, arch or version, each definition has its own name. Definitions can have the same name just if they're dont use the same repository type and/or arch and version. + +There's also a priority rule between the repository types wich defines a precedence order. Repositories are searched according the following order: + +\begin{itemize} + \item PATCHES has the highest priority: if a package from a given arch and version is not found in the first (if existent) PATCHES definition, then the next one is searched until all PATCHES definitions are searched. + \item Then, the package is searched in all ROOT defintions in the order they appear at repos.conf. + \item The next searched repository type is REPOS in the specified arch an version, in the order they appear at repos.conf. + \item At last, NOARCH type is searched in the order they're defined. +\end{itemize} + +In the case you're issuing an upgrade or just geting patches, simplaret by default will just search in PATCHES and ROOT definitions. + +At REPOS and ROOT is also possible to specify its internal search order according its subfolders. + +\section{Configuration file simplepkg.conf} + +Simplaret also stores its configurations inside simplepkg's configuration file /etc/simplepkg/simplepkg.conf. This file is well commented and you should find there a description of all supported options. + +\section{But why use that?} + +You may ask why someone wishes to use such tool. + +Simplaret was written with a *x86 environment in mind, where lots of jails with different archs and versions are installed. Suppose a x86\_64 with the following chroots installed: + +\begin{itemize} + \item slamd64 11.0 + \item slackware 10.0 + \item slackware 11.0 with additional i686 packages + \item uSlack (i386 uClibc) +\end{itemize} + +Keep all this stuff update manually is really a headache. Simplaret just tries to make it trivial. + +\section{Additional information} + +Simplaret was written by Silvio Rhatto (rhatto at riseup.net) and is released under GPL license. The code can be obtained from the subversion repository: + +\begin{verbatim} +svn checkout svn://slack.sarava.org/simplepkg +\end{verbatim} + +Simplepkg's wiki is http://slack.sarava.org/trac/wiki/Simplepkg and its mailing list address is http://listas.sarava.org/wws/info/slack. + +\end{document} diff --git a/trunk/doc/simplepkg-pt_BR.pdf b/trunk/doc/simplepkg-pt_BR.pdf new file mode 100644 index 0000000..53cbe06 Binary files /dev/null and b/trunk/doc/simplepkg-pt_BR.pdf differ diff --git a/trunk/doc/simplepkg-pt_BR.tex b/trunk/doc/simplepkg-pt_BR.tex new file mode 100644 index 0000000..e4094b6 --- /dev/null +++ b/trunk/doc/simplepkg-pt_BR.tex @@ -0,0 +1,395 @@ +\documentclass{article} +\usepackage[brazilian]{babel} +\usepackage[latin1]{inputenc} +\usepackage[dvips]{graphics} +\usepackage{hyperref} +\usepackage{html,makeid} + +\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 sistemas slackware que roda sobre o pkgtool. Ele é composto por vários scripts que desempenham funções de administração e desenvolvimento de sistemas do tipo Slackware, procurando fechar um circuito de produção, envolvendo a construção, a instalação de pacotes e até mesmo a instalação do sistema de forma automatizada. + +Do lado do desenvolvedor/a, ele ajuda na criação de SlackBuilds e construção de pacotes. Do lado do administrador/a, ele possibilita a instalação automatizada de sistemas, instalação de pacotes e a criação de "templates" de instalação -- que contém todos os arquivos de configuração, informações de permissões e scripts de pós-instalação de uma dada máquina ou jaula. +\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, além da facilidade na criação de pacotes. + +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 \emph{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 configurar o \emph{simplepkg} para obter pacotes de um repositório local ou remoto. + +Gerenciar instalações e pacotes não é tudo o que o \emph{simplepkg} faz. Ele pode ser usado até na criação de jaula e vservers, podendo manter toda a configuração das máquinas num repositório Subversion. + +O \emph{simplepkg} funciona não apenas com o Slackware mas com qualquer port (oficial ou não) que siga minimamente os padrões oficiais. + +\section{Arquitetura} + +O \emph{simplepkg} é um conjunto de scripts escritos com a filosofia KISS (Keep It Simple, Stupid) 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 templatepkg: criar ou adiciona pacotes a um template + \item lspkg: lista pacotes instalados + \item jail-update: inverso do jail-commit + \item jail-commit: atualiza o template + \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages + \item simplaret: obtém pacotes de repositórios locais ou remotos + \item createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório + \item repos: cria e mantém repositórios + \item mkbuild: cria scripts de construção de pacotes +\end{itemize} + +\section{Instalando o simplepkg} + +Para baixar o pacote do \emph{simplepkg}, vá em \htmladdnormallink{http://slack.sarava.org/packages/noarch/}{http://slack.sarava.org/packages/noarch/}. Depois, basta usar o comando + +\begin{verbatim} +installpkg simplepkg-VERSAO-noarch-BUILD.tgz +\end{verbatim} + +\section{Usando o simplepkg} + +As três principais aplicações desse conjunto são: + +\begin{itemize} + \item Gerenciamento de pacotes + \item Criação e manutenção de jaulas + \item Criação de pacotes +\end{itemize} + +O gerencamento de pacotes é feito através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, e por ser algo bem específico está detalhado no artigo correspondente. As seções a seguir mostrarão como o \emph{simplepkg} pode ser utilizado para criar e manter jaulas, assim como também criar pacotes. + +\section{Criando templates de instalação} + +Originalmente, o \emph{simplepkg} foi desenvolvido para ajudar na automatização de instalações de sistemas slackware. Para isso, 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 ou criar um chroot. + +A construção de um template é feita através do programa templatepkg. Para criar um template de nome "meu-slackware" contendo a lista de pacotes atualmente instalados no seu sistema, digite + +\begin{verbatim} +templatepkg -c meu-slackware +\end{verbatim} + +A opção -c (ou --create) criará a pasta /etc/simplepkg/templates/meu-slackware, que conterá os seguintes componentes: + +\begin{itemize} + \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.d}: cópia de arquivos de configuração + \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.s}: scripts de pós-instalação + \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.perms}: informações sobre arquivos + \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.template}: lista de pacotes +\end{itemize} + +Esses quatro componentes são suficientes para armazenar todas as características de uma instalação de slackware: a lista de pacotes controla o software instalado (a partir do conteúdo da pasta \emph{/var/log/packages}), a cópia dos arquivos de configuração controla as personalizações feitas para o uso dos aplicativos e os scripts de pós-instalação cuidam de qualquer rotina que precisa ser realizada exatamente após a instalação do sistema. Já o arquivo de informações sobre arquivos contém as permissões, o dono/a e grupo de cada arquivo de configuração presente no template. + +Se você quiser criar um template a partir de uma instalação de slackware presente numa outra partição do sistema que não seja a raíz, basta usar um comando do tipo + +\begin{verbatim} +templatepkg -c meu-slackware /mnt/slackware +\end{verbatim} + +onde /mnt/slackware é o local onde o sistema alternativo está instalado. Após criado, o template possuirá apenas a lista de pacotes contendo o nome dos aplicativos instalados no seu sistema. Como a pasta /var/log/packages não preserva a ordem de instalação dos pacotes, então talvez você queira editar manualmente a lista de pacotes de um template. Para isso, use o comando + +\begin{verbatim} +templatepkg -e meu-slackware +\end{verbatim} + +Para adicionar um arquivo de configuração no seu novo template, basta dar um comando como + +\begin{verbatim} +templatepkg -a meu-slackware /etc/hosts +\end{verbatim} + +Isso adicionará o arquivo /etc/hosts no template "meu-slackware". Além de salvar o arquivo e copiá-lo automaticamente quando você instalar seu sistema, o \emph{simplepkg} ainda pode tomar conta de qualquer alteração que o /etc/hosts sofrer no sistema, seja mudança no conteúdo do arquivo, dono ou permissão. Se você ainda estiver armazenando seus templates num repositório svn (o que veremos a seguir), o \emph{simplepkg} pode ainda manter um histórico completo das alterações do arquivo. + +ATENÇÂO: evite ao máximo deixar arquivos contendo senhas ou chaves privadas num template. O lugar mais adequado para deixar esse tipo de coisa é num backup seguro. + +\section{Criando jaulas e replicando instalações} + +Uma vez que um template foi criado com uma lista de pacotes e opcionalmente com arquivos de configuração e scripts de pós-instalação (que serão detalhados a seguir), você pode replicar sua instalação de slackware utilizando o comando + +\begin{verbatim} +mkjail jaula meu-slackware +\end{verbatim} + +Isso cria uma nova árvore do slackware em /vservers/jaula contendo todos os pacotes e arquivos de configuração do template "meu-slackware". A instalação dos pacotes será feita pelo aplicativo \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, que deve estar configurado corretamente e cuja configuração padrão deve funcionar para a maioria dos casos. + +Se você quiser instalar essa jaula em outro local que não seja a pasta /vservers (esse local padrão pode ser mudado pelo arquivo de configuração do \emph{simplepkg}), basta usar 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 /mnt/hda2, dispensando totalmente o programa de instalação do slackware! + +Caso nenhum template for especificado, o mkjail utiliza o template /etc/simplepkg/default. O \emph{simplepkg} já vem com alguns templates padrões, presentes em /etc/simplepkg/defaults/templates. + +\section{Scripts de pós-instalação} + +Opcionalmente, é possível manter scripts de pós-instalação num template. Tais script são executados exatamente +após a instalação de uma jaula e cópia de arquivos de configuração pelo mkjail. Para criar ou editar um script +de pós-instalação, use um comando como + +\begin{verbatim} +templatepkg -b meu-slackware nome-do-script.sh +\end{verbatim} + +Isso adicionará o script nome-do-script.sh no template "meu-slackware". O mkjail passa dois argumentos para cada script de pós-instalação: a pasta superior e o nome da jaula ("/mnt" e "hda2" no nosso exemplo anterior). Assim, um exemplo de script seria algo como + +\begin{verbatim} +#!/bin/bash +chroot $1/$2/ sbin/ldconfig +\end{verbatim} + +\section{Listando o conteúdo de um template} + +Para listar os templates disponíveis ou o conteúdo de um template, use comandos como + +\begin{verbatim} +templatepkg -l +templatepkg -l meu-slackware +\end{verbatim} + +\section{Removendo arquivos de um template} + +Analogamente à forma como se adicona arquivos num template, removê-los pode ser feito com o seguinte comando: + +\begin{verbatim} +templatepkg -d meu-slackware /etc/hosts +\end{verbatim} + +Isso remove o arquivo /etc/hosts do template "meu-slackware". + +\section{Apagando um template} + +Para apagar um template, basta utilizar um comando como + +\begin{verbatim} +templatepkg -r meu-slackware +\end{verbatim} + +\section{Atualizando um template} + +Agora que já abordamos as opções do templatepkg, é hora de visitarmos um outro aplicativo, desta vez utilizado para manter um template atualizado. O jail-commit é um script que copia as alterações dos arquivos (conteúdo, propriedade e permissões) de um template a partir do conteúdo de uma jaula ou instalação. + +Por exemplo, caso se queira copiar as alterações da jaula /mnt/hda2 no template "meu-slackware", basta usar o comando + +\begin{verbatim} +jail-commit /mnt/hda2 meu-slackware +\end{verbatim} + +Além da lista de pacotes do template "meu-slackware" ser atualizada de acordo com a lista de pacotes presente em /mnt/hda2/var/log/packages, todos os arquivos de configuração presentes no template "meu-slackware" serão comparados com os correspondentes da pasta /mnt/hda2 e as diferenças são copiadas para o template. Da mesma forma, as permissões e informação de dono/grupo dos arquivos também é atualizada no template. + +O comando jail-commit possibilita que um template sempre esteja atualizado e refletindo a configuração atual de uma instalação de slackware. Se você quiser atualizar apenas a lista de pacotes de um template, porém, use + +\begin{verbatim} +templatepkg -u meu-template +\end{verbatim} + +Para facilitar ainda mais o controle das alterações do sistema, existe ainda uma facilidade do arquivo /etc/simplepkg/jailist. Esse arquivo serve, além de outros propósitos descritos na \htmladdnormallink{documentação do simplaret}{http://slack.sarava.org/simplaret}, para que o jail-commit saiba de antemão quais são as instalações de sistema do tipo Slackware presentes numa máquina, além da instalação principal na raíz do sistema. + +Suponha que uma máquina possua duas instalações de slackware, além da principal (raíz): + +\begin{itemize} + \item /mnt/slackware-1 usando o template "slackware-1" + \item /mnt/slackware-2 usando o template "slackware-2" +\end{itemize} + +Se o arquivo /etc/simplepkg/jailist contiver as seguintes linhas, + +\begin{verbatim} +/mnt/slackware-1 +/mnt/slackware-2 +\end{verbatim} + +então o comando + +\begin{verbatim} +jail-commit +\end{verbatim} + +atualizará o template "slackware-1" de acordo com o conteúdo da jaula /mnt/slackware-1 e o template "slackware-2" com o conteúdo da jaula /mnt/slackware-2. Se, além desses dois templates, existir um outro de nome "main", então o jail-commit sem argumentos também copiará as atualizações da instalação raíz, deixando-as no template "main". + +Você pode inclusive colocar uma entrada no crontab do tipo + +\begin{verbatim} +20 4 * * * jail-commit +\end{verbatim} + +para que seus templates sejam atualizados diariamente. Se você ainda possui o envio de emails configurado na sua máquina, então a saída do jail-commit será enviada pelo cron diariamente para seu email, contendo diffs das alterações de arquivos de configuração a lista de pacotes adicionados ou removidos no sistema. + +\section{Restaurando arquivos de configuração numa jaula} + +A operação contrária ao que o jail-commit faz também é possível: suponha que você mexeu na configuração do sistema mas se arrependeu das alterações e deseja voltar a configuração para o modo como ela se encontra no seu template, basta usar o comando + +\begin{verbatim} +jail-update /mnt/hda2 meu-slackware +\end{verbatim} + +\section{Armazenando as configurações no repositório Subversion} + +Para aumentar ainda mais a flexibilidade e o controle do conteúdo dos templates, é possível armazená-los num repositório Subversion. Para isso, edite o arquivo /etc/simplepkg/simplepkg.conf e deixe o parâmetro de configuração \emph{TEMPLATES\_UNDER\_SVN} com o valor "yes". + +Depois, crie um repositório subversion para armazenar seus templates, usando algo como + +\begin{verbatim} +svnadmin create /var/svn/simplepkg --fs-type fsfs +\end{verbatim} + +Com o repositório criado, basta importar seus templates com o comando + +\begin{verbatim} +templatepkg -e file:///var/svn/simplepkg +\end{verbatim} + +A partir daí, o comando jail-commit enviará automaticamente todas as alterações dos templates para o repositório subversion. Se, por outro lado, você quiser baixar as alterações dos templates que estão no repositório remoto para sua cópia local, use o comando + +\begin{verbatim} +templatepkg -s +\end{verbatim} + +Caso você queira importar uma pasta de templates de um repositório já existente, use + +\begin{verbatim} +templatepkg -i file:///var/svn/simplepkg +\end{verbatim} + +onde file:///var/svn/simplepkg é o camninho do repositório. + +\section{Atualização de jaulas} + +A atualização de jaulas e sistemas instalados é feita através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret} e também utiliza o arquivo /etc/simplepkg/jailist. Para mais informações a respeito, consulte a \htmladdnormallink{documentação do simplaret}{http://slack.sarava.org/simplaret} para mais detalhes. + +\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 \htmladdnormallink{simplaret}{http://slack.sarava.org/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 /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 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. + +\section{Criando um pacote de um template} + +Se, por algum motivo, você quiser construir um pacote com o conteúdo de um template, experimente o comando + +\begin{verbatim} +templatepkg -p nome-do-template +\end{verbatim} + +No entanto, o \emph{simplepkg} foi criado para que esse tipo de comportamento seja evitado, já que é mais simples manter templates de configuração do que pacotes contendo a configuração de uma instalação. + +\section{Construindo pacotes} + +Até aqui, apenas mostramos os aplicativos do \emph{simplepkg} usados para a manutenção de instalações de slackware. No entanto, uma das outras finalidades desta suíte é a construção de pacotes, o que é feita pelo programa createpkg, Como dito anteriormente, o createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório de scripts, funcionando com um gerenciador de "ports" para slackware. + +O createpkg pode funcionar com qualquer tipo de script de construção de pacotes (SlackBuilds) mas funcionará melhor se os mesmos seguirem o padrão descrito na página + +\begin{verbatim} +http://slack.sarava.org/trac/wiki/SlackBuilds +\end{verbatim} + +Especificamente, o createpkg foi desenvolvido para utilizar os slackbuild disponíveis em \htmladdnormallink{http://slack.sarava.org/slackbuilds}{http://slack.sarava.org/slackbuilds}. O createpkg trabalha com repositórios do tipo subversion. + +Para obter os scripts do repositório do slack.sarava.org, digite + +\begin{verbatim} +createpkg --sync +\end{verbatim} + +Em seguida, você pode listas todos os scripts disponíveis: + +\begin{verbatim} +createpkg --list +\end{verbatim} + +Para buscar por um pacote, use + +\begin{verbatim} +createpkg --search latex2html +\end{verbatim} + +No caso, a busca é feita pelo SlackBuild do aplicativo "latex2html". Suponha agora que você queira construir o pacote desse aplicativo: + +\begin{verbatim} +createpkg latex2html +\end{verbatim} + +O pacote resultante estará na pasta /tmp ou no valor especificado pela variável de ambiente \emph{\$REPOS}. Para criar e também instalar o pacote, basta + +\begin{verbatim} +createpkg --install latex2html +\end{verbatim} + +Se o pacote possuir dependências listadas num arquivo slack-required e que não estiverem instaladas no sistema, o createpkg tentará processá-las uma a uma antes de tentar construir o pacote desejado: se as dependências não forem encontradas no repositório de scripts, então o createpkg tentará baixá-las de um repositório binário através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}. Se você não quiser que a resolução de dependências seja seguida, use a opção --no-deps. + +Para mais detalhes de funcionamento, experimente o comando + +\begin{verbatim} +createpkg --help +\end{verbatim} + +ou então acesse a página http://slack.sarava.org/trac/wiki/SlackBuilds + +\section{Aplicativos auxiliares} + +O \emph{simplepkg} acompanha ainda alguns aplicativos auxiliares: + +\begin{itemize} + \item lspkg: lista pacotes instalados + \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages + \item repos: cria e mantém repositórios + \item mkbuild: cria scripts de construção de pacotes +\end{itemize} + +O comando lspkg é um utilitário simples para a visualização de pacotes instalados no sistema. Já o rebuildpkg 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 + +\begin{verbatim} +rebuildpkg coreutils +\end{verbatim} + +reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do /var/log/packages/ correspondente ao coreutils. + +Por fim, os scripts repos e mkbuild são os que se encontram na etapa de maior desenvolvimento: repos cria um repositório de pacotes a partir de uma pasta contendo pacotes do tipo pkgtool e o mkbuild é um aplicativo para auxiliar a criação de scripts de construção de pacotes que podem ser utilizados sozinhos ou pelo o createpkg. + +\section{Parâmetros de configuração} + +O arquivo de configuração do \emph{simplepkg} é o /etc/simplepkg/simplepkg.conf. Ele contém parâmetros de configuração de todos os scripts, porém neste texto não trataremos das opções específicas ao \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, as quais tem uma seção específica no artigo correspondente. + +\begin{itemize} + \item \emph{JAIL\_ROOT}: pasta padrão onde as jaulas são criadas pelo mkjail. Valor padrão: "/vservers". + \item \emph{ADD\_TO\_JAIL\_LIST}: controla se uma jaula criada pelo mkjail deve ser adicionada automaticamente no arquivo /etc/simplepkg/jailist. O valor padrão é "1" (habilitado). + \item \emph{TEMPLATES\_UNDER\_SVN}: indica se os templates estão armazenados num repositório subversion. O valor padrão é "no" (não). + \item \emph{TEMPLATE\_FOLDER}: indica qual é a pasta de templates. O valor padrão é "/etc/simplepkg/templates" e não é recomendável alterá-lo. + \item \emph{TEMPLATE\_STORAGE\_STYLE}: controla a forma de armazenamento de templates. O valor padrão é "own-folder" e essa opção apenas deve ser modificada se você armazena seus templates num formato antigo do \emph{simplepkg} e deseja manter compatibilidade. +\end{itemize} + +Vale lembrar que todas as opções booleanas (isto é, que podem ser apenas habilitadas ou desabilitadas) do simplepkg.conf tem os seguintes valores permitidos: "1" e "yes" para habilitado e "0" ou "no" para desabilitado. + +\section{Mais informações} + +O \emph{simplepkg} foi escrito por Silvio Rhatto (rhatto at riseup.net) sob licença GPL e seu código fonte é disponibilizado através do repositório subversion: + +\begin{verbatim} +svn checkout svn://slack.sarava.org/simplepkg +\end{verbatim} + +O wiki de desenvolvimento está em http://slack.sarava.org/trac/wiki/Simplepkg e o endereço da lista de discussão utilizada para discussões sobre o \emph{simplepkg} ou mesmo distribuições e pacotes do tipo Slackware é http://listas.sarava.org/wws/info/slack. + +\end{document} diff --git a/trunk/doc/simplepkg.pt_BR.pdf b/trunk/doc/simplepkg.pt_BR.pdf deleted file mode 100644 index 53cbe06..0000000 Binary files a/trunk/doc/simplepkg.pt_BR.pdf and /dev/null differ diff --git a/trunk/doc/simplepkg.pt_BR.tex b/trunk/doc/simplepkg.pt_BR.tex deleted file mode 100644 index e4094b6..0000000 --- a/trunk/doc/simplepkg.pt_BR.tex +++ /dev/null @@ -1,395 +0,0 @@ -\documentclass{article} -\usepackage[brazilian]{babel} -\usepackage[latin1]{inputenc} -\usepackage[dvips]{graphics} -\usepackage{hyperref} -\usepackage{html,makeid} - -\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 sistemas slackware que roda sobre o pkgtool. Ele é composto por vários scripts que desempenham funções de administração e desenvolvimento de sistemas do tipo Slackware, procurando fechar um circuito de produção, envolvendo a construção, a instalação de pacotes e até mesmo a instalação do sistema de forma automatizada. - -Do lado do desenvolvedor/a, ele ajuda na criação de SlackBuilds e construção de pacotes. Do lado do administrador/a, ele possibilita a instalação automatizada de sistemas, instalação de pacotes e a criação de "templates" de instalação -- que contém todos os arquivos de configuração, informações de permissões e scripts de pós-instalação de uma dada máquina ou jaula. -\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, além da facilidade na criação de pacotes. - -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 \emph{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 configurar o \emph{simplepkg} para obter pacotes de um repositório local ou remoto. - -Gerenciar instalações e pacotes não é tudo o que o \emph{simplepkg} faz. Ele pode ser usado até na criação de jaula e vservers, podendo manter toda a configuração das máquinas num repositório Subversion. - -O \emph{simplepkg} funciona não apenas com o Slackware mas com qualquer port (oficial ou não) que siga minimamente os padrões oficiais. - -\section{Arquitetura} - -O \emph{simplepkg} é um conjunto de scripts escritos com a filosofia KISS (Keep It Simple, Stupid) 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 templatepkg: criar ou adiciona pacotes a um template - \item lspkg: lista pacotes instalados - \item jail-update: inverso do jail-commit - \item jail-commit: atualiza o template - \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages - \item simplaret: obtém pacotes de repositórios locais ou remotos - \item createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório - \item repos: cria e mantém repositórios - \item mkbuild: cria scripts de construção de pacotes -\end{itemize} - -\section{Instalando o simplepkg} - -Para baixar o pacote do \emph{simplepkg}, vá em \htmladdnormallink{http://slack.sarava.org/packages/noarch/}{http://slack.sarava.org/packages/noarch/}. Depois, basta usar o comando - -\begin{verbatim} -installpkg simplepkg-VERSAO-noarch-BUILD.tgz -\end{verbatim} - -\section{Usando o simplepkg} - -As três principais aplicações desse conjunto são: - -\begin{itemize} - \item Gerenciamento de pacotes - \item Criação e manutenção de jaulas - \item Criação de pacotes -\end{itemize} - -O gerencamento de pacotes é feito através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, e por ser algo bem específico está detalhado no artigo correspondente. As seções a seguir mostrarão como o \emph{simplepkg} pode ser utilizado para criar e manter jaulas, assim como também criar pacotes. - -\section{Criando templates de instalação} - -Originalmente, o \emph{simplepkg} foi desenvolvido para ajudar na automatização de instalações de sistemas slackware. Para isso, 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 ou criar um chroot. - -A construção de um template é feita através do programa templatepkg. Para criar um template de nome "meu-slackware" contendo a lista de pacotes atualmente instalados no seu sistema, digite - -\begin{verbatim} -templatepkg -c meu-slackware -\end{verbatim} - -A opção -c (ou --create) criará a pasta /etc/simplepkg/templates/meu-slackware, que conterá os seguintes componentes: - -\begin{itemize} - \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.d}: cópia de arquivos de configuração - \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.s}: scripts de pós-instalação - \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.perms}: informações sobre arquivos - \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.template}: lista de pacotes -\end{itemize} - -Esses quatro componentes são suficientes para armazenar todas as características de uma instalação de slackware: a lista de pacotes controla o software instalado (a partir do conteúdo da pasta \emph{/var/log/packages}), a cópia dos arquivos de configuração controla as personalizações feitas para o uso dos aplicativos e os scripts de pós-instalação cuidam de qualquer rotina que precisa ser realizada exatamente após a instalação do sistema. Já o arquivo de informações sobre arquivos contém as permissões, o dono/a e grupo de cada arquivo de configuração presente no template. - -Se você quiser criar um template a partir de uma instalação de slackware presente numa outra partição do sistema que não seja a raíz, basta usar um comando do tipo - -\begin{verbatim} -templatepkg -c meu-slackware /mnt/slackware -\end{verbatim} - -onde /mnt/slackware é o local onde o sistema alternativo está instalado. Após criado, o template possuirá apenas a lista de pacotes contendo o nome dos aplicativos instalados no seu sistema. Como a pasta /var/log/packages não preserva a ordem de instalação dos pacotes, então talvez você queira editar manualmente a lista de pacotes de um template. Para isso, use o comando - -\begin{verbatim} -templatepkg -e meu-slackware -\end{verbatim} - -Para adicionar um arquivo de configuração no seu novo template, basta dar um comando como - -\begin{verbatim} -templatepkg -a meu-slackware /etc/hosts -\end{verbatim} - -Isso adicionará o arquivo /etc/hosts no template "meu-slackware". Além de salvar o arquivo e copiá-lo automaticamente quando você instalar seu sistema, o \emph{simplepkg} ainda pode tomar conta de qualquer alteração que o /etc/hosts sofrer no sistema, seja mudança no conteúdo do arquivo, dono ou permissão. Se você ainda estiver armazenando seus templates num repositório svn (o que veremos a seguir), o \emph{simplepkg} pode ainda manter um histórico completo das alterações do arquivo. - -ATENÇÂO: evite ao máximo deixar arquivos contendo senhas ou chaves privadas num template. O lugar mais adequado para deixar esse tipo de coisa é num backup seguro. - -\section{Criando jaulas e replicando instalações} - -Uma vez que um template foi criado com uma lista de pacotes e opcionalmente com arquivos de configuração e scripts de pós-instalação (que serão detalhados a seguir), você pode replicar sua instalação de slackware utilizando o comando - -\begin{verbatim} -mkjail jaula meu-slackware -\end{verbatim} - -Isso cria uma nova árvore do slackware em /vservers/jaula contendo todos os pacotes e arquivos de configuração do template "meu-slackware". A instalação dos pacotes será feita pelo aplicativo \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, que deve estar configurado corretamente e cuja configuração padrão deve funcionar para a maioria dos casos. - -Se você quiser instalar essa jaula em outro local que não seja a pasta /vservers (esse local padrão pode ser mudado pelo arquivo de configuração do \emph{simplepkg}), basta usar 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 /mnt/hda2, dispensando totalmente o programa de instalação do slackware! - -Caso nenhum template for especificado, o mkjail utiliza o template /etc/simplepkg/default. O \emph{simplepkg} já vem com alguns templates padrões, presentes em /etc/simplepkg/defaults/templates. - -\section{Scripts de pós-instalação} - -Opcionalmente, é possível manter scripts de pós-instalação num template. Tais script são executados exatamente -após a instalação de uma jaula e cópia de arquivos de configuração pelo mkjail. Para criar ou editar um script -de pós-instalação, use um comando como - -\begin{verbatim} -templatepkg -b meu-slackware nome-do-script.sh -\end{verbatim} - -Isso adicionará o script nome-do-script.sh no template "meu-slackware". O mkjail passa dois argumentos para cada script de pós-instalação: a pasta superior e o nome da jaula ("/mnt" e "hda2" no nosso exemplo anterior). Assim, um exemplo de script seria algo como - -\begin{verbatim} -#!/bin/bash -chroot $1/$2/ sbin/ldconfig -\end{verbatim} - -\section{Listando o conteúdo de um template} - -Para listar os templates disponíveis ou o conteúdo de um template, use comandos como - -\begin{verbatim} -templatepkg -l -templatepkg -l meu-slackware -\end{verbatim} - -\section{Removendo arquivos de um template} - -Analogamente à forma como se adicona arquivos num template, removê-los pode ser feito com o seguinte comando: - -\begin{verbatim} -templatepkg -d meu-slackware /etc/hosts -\end{verbatim} - -Isso remove o arquivo /etc/hosts do template "meu-slackware". - -\section{Apagando um template} - -Para apagar um template, basta utilizar um comando como - -\begin{verbatim} -templatepkg -r meu-slackware -\end{verbatim} - -\section{Atualizando um template} - -Agora que já abordamos as opções do templatepkg, é hora de visitarmos um outro aplicativo, desta vez utilizado para manter um template atualizado. O jail-commit é um script que copia as alterações dos arquivos (conteúdo, propriedade e permissões) de um template a partir do conteúdo de uma jaula ou instalação. - -Por exemplo, caso se queira copiar as alterações da jaula /mnt/hda2 no template "meu-slackware", basta usar o comando - -\begin{verbatim} -jail-commit /mnt/hda2 meu-slackware -\end{verbatim} - -Além da lista de pacotes do template "meu-slackware" ser atualizada de acordo com a lista de pacotes presente em /mnt/hda2/var/log/packages, todos os arquivos de configuração presentes no template "meu-slackware" serão comparados com os correspondentes da pasta /mnt/hda2 e as diferenças são copiadas para o template. Da mesma forma, as permissões e informação de dono/grupo dos arquivos também é atualizada no template. - -O comando jail-commit possibilita que um template sempre esteja atualizado e refletindo a configuração atual de uma instalação de slackware. Se você quiser atualizar apenas a lista de pacotes de um template, porém, use - -\begin{verbatim} -templatepkg -u meu-template -\end{verbatim} - -Para facilitar ainda mais o controle das alterações do sistema, existe ainda uma facilidade do arquivo /etc/simplepkg/jailist. Esse arquivo serve, além de outros propósitos descritos na \htmladdnormallink{documentação do simplaret}{http://slack.sarava.org/simplaret}, para que o jail-commit saiba de antemão quais são as instalações de sistema do tipo Slackware presentes numa máquina, além da instalação principal na raíz do sistema. - -Suponha que uma máquina possua duas instalações de slackware, além da principal (raíz): - -\begin{itemize} - \item /mnt/slackware-1 usando o template "slackware-1" - \item /mnt/slackware-2 usando o template "slackware-2" -\end{itemize} - -Se o arquivo /etc/simplepkg/jailist contiver as seguintes linhas, - -\begin{verbatim} -/mnt/slackware-1 -/mnt/slackware-2 -\end{verbatim} - -então o comando - -\begin{verbatim} -jail-commit -\end{verbatim} - -atualizará o template "slackware-1" de acordo com o conteúdo da jaula /mnt/slackware-1 e o template "slackware-2" com o conteúdo da jaula /mnt/slackware-2. Se, além desses dois templates, existir um outro de nome "main", então o jail-commit sem argumentos também copiará as atualizações da instalação raíz, deixando-as no template "main". - -Você pode inclusive colocar uma entrada no crontab do tipo - -\begin{verbatim} -20 4 * * * jail-commit -\end{verbatim} - -para que seus templates sejam atualizados diariamente. Se você ainda possui o envio de emails configurado na sua máquina, então a saída do jail-commit será enviada pelo cron diariamente para seu email, contendo diffs das alterações de arquivos de configuração a lista de pacotes adicionados ou removidos no sistema. - -\section{Restaurando arquivos de configuração numa jaula} - -A operação contrária ao que o jail-commit faz também é possível: suponha que você mexeu na configuração do sistema mas se arrependeu das alterações e deseja voltar a configuração para o modo como ela se encontra no seu template, basta usar o comando - -\begin{verbatim} -jail-update /mnt/hda2 meu-slackware -\end{verbatim} - -\section{Armazenando as configurações no repositório Subversion} - -Para aumentar ainda mais a flexibilidade e o controle do conteúdo dos templates, é possível armazená-los num repositório Subversion. Para isso, edite o arquivo /etc/simplepkg/simplepkg.conf e deixe o parâmetro de configuração \emph{TEMPLATES\_UNDER\_SVN} com o valor "yes". - -Depois, crie um repositório subversion para armazenar seus templates, usando algo como - -\begin{verbatim} -svnadmin create /var/svn/simplepkg --fs-type fsfs -\end{verbatim} - -Com o repositório criado, basta importar seus templates com o comando - -\begin{verbatim} -templatepkg -e file:///var/svn/simplepkg -\end{verbatim} - -A partir daí, o comando jail-commit enviará automaticamente todas as alterações dos templates para o repositório subversion. Se, por outro lado, você quiser baixar as alterações dos templates que estão no repositório remoto para sua cópia local, use o comando - -\begin{verbatim} -templatepkg -s -\end{verbatim} - -Caso você queira importar uma pasta de templates de um repositório já existente, use - -\begin{verbatim} -templatepkg -i file:///var/svn/simplepkg -\end{verbatim} - -onde file:///var/svn/simplepkg é o camninho do repositório. - -\section{Atualização de jaulas} - -A atualização de jaulas e sistemas instalados é feita através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret} e também utiliza o arquivo /etc/simplepkg/jailist. Para mais informações a respeito, consulte a \htmladdnormallink{documentação do simplaret}{http://slack.sarava.org/simplaret} para mais detalhes. - -\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 \htmladdnormallink{simplaret}{http://slack.sarava.org/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 /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 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. - -\section{Criando um pacote de um template} - -Se, por algum motivo, você quiser construir um pacote com o conteúdo de um template, experimente o comando - -\begin{verbatim} -templatepkg -p nome-do-template -\end{verbatim} - -No entanto, o \emph{simplepkg} foi criado para que esse tipo de comportamento seja evitado, já que é mais simples manter templates de configuração do que pacotes contendo a configuração de uma instalação. - -\section{Construindo pacotes} - -Até aqui, apenas mostramos os aplicativos do \emph{simplepkg} usados para a manutenção de instalações de slackware. No entanto, uma das outras finalidades desta suíte é a construção de pacotes, o que é feita pelo programa createpkg, Como dito anteriormente, o createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório de scripts, funcionando com um gerenciador de "ports" para slackware. - -O createpkg pode funcionar com qualquer tipo de script de construção de pacotes (SlackBuilds) mas funcionará melhor se os mesmos seguirem o padrão descrito na página - -\begin{verbatim} -http://slack.sarava.org/trac/wiki/SlackBuilds -\end{verbatim} - -Especificamente, o createpkg foi desenvolvido para utilizar os slackbuild disponíveis em \htmladdnormallink{http://slack.sarava.org/slackbuilds}{http://slack.sarava.org/slackbuilds}. O createpkg trabalha com repositórios do tipo subversion. - -Para obter os scripts do repositório do slack.sarava.org, digite - -\begin{verbatim} -createpkg --sync -\end{verbatim} - -Em seguida, você pode listas todos os scripts disponíveis: - -\begin{verbatim} -createpkg --list -\end{verbatim} - -Para buscar por um pacote, use - -\begin{verbatim} -createpkg --search latex2html -\end{verbatim} - -No caso, a busca é feita pelo SlackBuild do aplicativo "latex2html". Suponha agora que você queira construir o pacote desse aplicativo: - -\begin{verbatim} -createpkg latex2html -\end{verbatim} - -O pacote resultante estará na pasta /tmp ou no valor especificado pela variável de ambiente \emph{\$REPOS}. Para criar e também instalar o pacote, basta - -\begin{verbatim} -createpkg --install latex2html -\end{verbatim} - -Se o pacote possuir dependências listadas num arquivo slack-required e que não estiverem instaladas no sistema, o createpkg tentará processá-las uma a uma antes de tentar construir o pacote desejado: se as dependências não forem encontradas no repositório de scripts, então o createpkg tentará baixá-las de um repositório binário através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}. Se você não quiser que a resolução de dependências seja seguida, use a opção --no-deps. - -Para mais detalhes de funcionamento, experimente o comando - -\begin{verbatim} -createpkg --help -\end{verbatim} - -ou então acesse a página http://slack.sarava.org/trac/wiki/SlackBuilds - -\section{Aplicativos auxiliares} - -O \emph{simplepkg} acompanha ainda alguns aplicativos auxiliares: - -\begin{itemize} - \item lspkg: lista pacotes instalados - \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages - \item repos: cria e mantém repositórios - \item mkbuild: cria scripts de construção de pacotes -\end{itemize} - -O comando lspkg é um utilitário simples para a visualização de pacotes instalados no sistema. Já o rebuildpkg 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 - -\begin{verbatim} -rebuildpkg coreutils -\end{verbatim} - -reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do /var/log/packages/ correspondente ao coreutils. - -Por fim, os scripts repos e mkbuild são os que se encontram na etapa de maior desenvolvimento: repos cria um repositório de pacotes a partir de uma pasta contendo pacotes do tipo pkgtool e o mkbuild é um aplicativo para auxiliar a criação de scripts de construção de pacotes que podem ser utilizados sozinhos ou pelo o createpkg. - -\section{Parâmetros de configuração} - -O arquivo de configuração do \emph{simplepkg} é o /etc/simplepkg/simplepkg.conf. Ele contém parâmetros de configuração de todos os scripts, porém neste texto não trataremos das opções específicas ao \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, as quais tem uma seção específica no artigo correspondente. - -\begin{itemize} - \item \emph{JAIL\_ROOT}: pasta padrão onde as jaulas são criadas pelo mkjail. Valor padrão: "/vservers". - \item \emph{ADD\_TO\_JAIL\_LIST}: controla se uma jaula criada pelo mkjail deve ser adicionada automaticamente no arquivo /etc/simplepkg/jailist. O valor padrão é "1" (habilitado). - \item \emph{TEMPLATES\_UNDER\_SVN}: indica se os templates estão armazenados num repositório subversion. O valor padrão é "no" (não). - \item \emph{TEMPLATE\_FOLDER}: indica qual é a pasta de templates. O valor padrão é "/etc/simplepkg/templates" e não é recomendável alterá-lo. - \item \emph{TEMPLATE\_STORAGE\_STYLE}: controla a forma de armazenamento de templates. O valor padrão é "own-folder" e essa opção apenas deve ser modificada se você armazena seus templates num formato antigo do \emph{simplepkg} e deseja manter compatibilidade. -\end{itemize} - -Vale lembrar que todas as opções booleanas (isto é, que podem ser apenas habilitadas ou desabilitadas) do simplepkg.conf tem os seguintes valores permitidos: "1" e "yes" para habilitado e "0" ou "no" para desabilitado. - -\section{Mais informações} - -O \emph{simplepkg} foi escrito por Silvio Rhatto (rhatto at riseup.net) sob licença GPL e seu código fonte é disponibilizado através do repositório subversion: - -\begin{verbatim} -svn checkout svn://slack.sarava.org/simplepkg -\end{verbatim} - -O wiki de desenvolvimento está em http://slack.sarava.org/trac/wiki/Simplepkg e o endereço da lista de discussão utilizada para discussões sobre o \emph{simplepkg} ou mesmo distribuições e pacotes do tipo Slackware é http://listas.sarava.org/wws/info/slack. - -\end{document} -- cgit v1.2.3