\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}
