\documentclass{article}
\usepackage[brazilian]{babel}
\usepackage[latin1]{inputenc}
\usepackage[dvips]{graphics}
\usepackage{hyperref}
\usepackage{html,makeid}

\title{Gerenciamento de pacotes no Slackware e afins}
\author{Silvio Rhatto}

\begin{document}\label{start}
\maketitle

\begin{abstract}
O gerenciamento de pacotes no slackware é uma tarefa simples mas que nem sempre é esclarecida aos novos usuários e usuárias do sistema quando começam a administrar uma máquina pela primeira vez. Sei que estarei sendo um pouco repetitivo num tema talvez já bem explorado em inúmeros outros tutoriais, mas aí vai.

Pacotes são arquivos que contém programas, arquivos de configuração e documentação. Distribuir um programa através de um pacote é a melhor maneira de controlarmos o que está instalado no servidor, pois existem comandos que cuidam da instalação, atualização e desinstalação de pacotes, enquanto que cada programa pode ter sua própria forma de ser instalado, o que pode criar umaconfusão. Forçar os programas a serem empacotados é uma forma de unificar a tarefa de instalação.
\end{abstract}

O \htmladdnormallink{Slackware}{http://www.slackware.com} tem um gerenciamento de pacotes muito simples:

\begin{itemize}
  \item Os pacotes são arquivos no formato \emph{tgz}
  \item Os pacotes podem ser baixados em \htmladdnormallink{http://www.slackware.com/pb/}{http://www.slackware.com/pb/}
  \item Todos os pacotes vem com \htmladdnormallink{checksum}{http://en.wikipedia.org/wiki/Checksum} (um arquivo \emph{md5}) e \htmladdnormallink{assinatura}{http://docs.indymedia.org/view/Sysadmin/GnuPGpt\#Como\_verificar\_mensagens\_assinad} (arquivo \emph{asc}), para verificação de integridade
\end{itemize}

Por exemplo, no caso do programa \emph{bzip2}, o pacote é o \emph{bzip2-1.0.2-i486-5.tgz}, onde

\begin{verbatim}
bzip2-1.0.2-i486-5.tgz
 |      |     |  |  |
 |      |     |  | extensão: formato tar.gz
 |    versão  |  |
 |            |  versão do pacote
 |            |
 |        plataforma
 |
nome do programa
\end{verbatim}

A assinatura desse pacote é o arquivo \emph{bzip2-1.0.2-i486-5.tgz.asc} e o checksum é o arquivo \emph{bzip2-1.0.2-i486-5.tgz.md5}.

\section{Baixar pacote}

Este procedimento serve para baixar pacotes oficiais e não-oficiais do slack. Cuidado especial ao baixar coisas não-oficiais, pois nem sempre a qualidade e confiabilidade dos arquivos estão garantidas.

Supondo que você queira instalar um pacote oficial: vá até o \htmladdnormallink{Slackware Package Browser}{http://www.slackware.com/pb/} e faça uma busca por nome de pacote ou nome de arquivo. O resultado da sua busca será o \emph{.tgz} correspondente. Baixe também o \emph{.asc} e opcionalmente o \emph{.md5}. Em seguida, efetue a verificação de integridade do arquivo. Se você ainda não tem a chave \htmladdnormallink{OpenPGP}{http://docs.indymedia.org/view/Sysadmin/GnuPGpt} do slackware, baixe-a \htmladdnormallink{aqui}{ftp://ftp.slackware.com/pub/slackware/slackware/GPG-KEY} ou num dos \htmladdnormallink{mirrors}{http://www.slackware.com/getslack/} e depois \htmladdnormallink{importe-a}{http://docs.indymedia.org/view/Sysadmin/GnuPGpt#Como\_adicionar\_uma\_chave\_p\_blica}.

Na sequência use o comando

\begin{verbatim}
gpg nome-do-pacote.asc
\end{verbatim}

para verificar a assinatura e

\begin{verbatim}
md5sum nome-do-pacote | diff nome-do-pacote.md5 -
\end{verbatim}

para verificar o checksum. Se tudo der certo você não receberá nenhuma mensagem de erro. Não se preocupe se o *gpg* der uma me nsagem do tipo

\begin{verbatim}
gpg: AVISO: Esta chave não está certificada com uma assinatura confiável!
gpg:        Não há indicação de que a assinatura pertence ao dono.
\end{verbatim}

Se a assinatura estiver correta, não é preciso se preocupar. Para maiores informações, consulte o \htmladdnormallink{Guia de Criptografia}{http://docs.indymedia.org/view/Sysadmin/GnuPGpt}.

\section{Instalar pacote}

Para instalar um pacote, digite

\begin{verbatim}
installpkg nome-do-pacote
\end{verbatim}

onde \emph{nome-do-pacote} é o arquivo que você baixou.

Exemplo:

\begin{verbatim}
installpkg bzip2-1.0.2-i486-5.tgz
\end{verbatim}

Uma vez instalado, um arquivo com o nome do pacote (mas sem o \emph{.tgz}) será criado em \emph{/var/log/packages} (no nosso caso, \emph{/var/log/packages/bzip2-1.0.2-i486-5}), que contém o nome de todos os arquivos que foram instalados no sistema. Essa informação é preciosa para quando ocorrer uma atualização ou desinstalação do pacote.

\section{Remover pacote}

Para remover um pacote, digite

\begin{verbatim}
removepkg nome-do-pacote
\end{verbatim}

Exemplo:

\begin{verbatim}
removepkg bzip2-1.0.2-i486-5.tgz
\end{verbatim}

O removepkg procurará se cada arquivo listado em \emph{/var/log/packages/bzip2-1.0.2-i486-5} também consta em outros pacotes, isto é, se o arquivo também está listado nos outros arquivos do \emph{/var/log/packages}. Caso afirmativo, o arquivo é preservado, do contrário apagado. No fim da operáção, o arquivo \emph{/var/log/packages/bzip2-1.0.2-i486-5} é movido para o \emph{/var/log/removed\_packages/}

\section{Atualizar pacote}

Para atualizar um pacote, digite

\begin{verbatim}
upgradepkg nome-do-pacote
\end{verbatim}

onde o \emph{nome-do-pacote} é o nome do novo pacote, e não o do que está atualmente instalado.

Exemplo:

\begin{verbatim}
upgradepkg bzip2-1.0.2-i486-5.tgz
\end{verbatim}

Isso fará com que o seu bzip2 seja atualizado para a nova versão.

\section{Dependências}

O sistema de pacotes do slackware só faz um tipo de checagem de dependências, que é verificar se os arquivos a serem removidos num pacote também fazem parte de outro pacote. Por isso, se você instalar um programa que depende de outros pacotes para funcionar mas que não estão instalados, você terá de caçar as dependências na mão. Se para muitos isso é um pesadelo, no caso de um servidor isso é feito de forma muito simples:

- Pode acontecer do programa não rodar e enviar uma mensagem de erro dizendo que tal biblioteca não foi encontrada, e aí é só procurar o pacote dela.

- Você pode traçar as dependências de um programa utilizando o *ldd*, que checa as bibliotecas contra o qual determinado programa foi compilado:

\begin{verbatim}
ldd nome-do-programa
\end{verbatim}

onde nome-do-programa é o comando (caso ele esteja em seu \htmladdnormallink{\$PATH}){http://focalinux.cipsga.org.br/guia/iniciante/ch-run.htm\#s-run-path} ou o arquivo do programa, por exemplo:

\begin{verbatim}
$ ldd /usr/bin/bzip2
        libbz2.so.1 => /lib/libbz2.so.1 (0x4002e000)
        libc.so.6 => /lib/libc.so.6 (0x4003d000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
\end{verbatim}

Nesse exemplo as bibliotecas \emph{libbz2.so.1} (cujo arquivo é \emph{/lib/libbz2.so.1}), \emph{libc.so.6} e \emph{/lib/ld-linux.so.2} são necessárias para o \emph{bzip2} funcionar e estão todas presentes no sistema. Se não tivessem, apareceria um \emph{Not found} ao lado delas e aí é só procurar e instalar o pacote correspondente.

\section{Ferramentas para o sistemas de pacotes}

Existem ferramentas que facilitam um pouco a checagem de dependências e o download dos pacotes. São elas:

\begin{itemize}
  \item \htmladdnormallink{slackpkg}{http://slackpkg.sourceforge.net/}
  \item \htmladdnormallink{slapt-get}{http://software.jaos.org/#slapt-get}, similar ao \htmladdnormallink{apt-get}{http://www.debian.org/doc/manuals/apt-howto/index.pt-br.html} do \htmladdnormallink{debian}{http://www.debian.org}
  \item \htmladdnormallink{Swaret}{http://swaret.sourceforge.net/}
\end{itemize}

Existem outras ferramentas em \htmladdnormallink{http://www.slackwarebrasil.org/pt/projetos/}{http://www.slackwarebrasil.org/pt/projetos/}. Para informações adicionais sobre o sistema de pacotes do Slackware, consulte a seção \htmladdnormallink{Package Utilities}{http://www.slackware.com/book/index.php?source=x4000.html} do \htmladdnormallink{Slackware Linux Essentials}{http://www.slackware.com/book/}.

\end{document}
