simplaret: ferramenta para obtenção de pacotes

O simplaret é a ferramenta do simplepkg utilizada para obter pacotes de repositórios locais ou remotos. Com ele, você pode não só baixar pacotes do seu sistema slackware como também pode baixar de qualquer versão ou arquitetura cujo repositório siga os Mirror Guidelines do Slackware, 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 here.

Além da obtenção, o simplaret ainda pode fazer a instalação, a remoção ou a atualização dos pacotes de um sistema e também das demais jaulas existentes numa máquina. O simplaret é totalmente não-intrusivo no sistema e roda sobre o pkgtool.

1 Obtendo e instalando

O simplaret acompanha o simplepkg e por isso sua instalação é feita baixando o pacote do simplepkg em http://slack.sarava.org/packages/noarch/ e em seguida instalando-o com o comando

installpkg simplepkg-VERSAO-noarch-BUILD.tgz

A partir daí você já pode utilizar o simplaret para baixar pacotes dos repositórios padrão ou então alterar a lista de repositórios do arquivo /etc/simplepkg/repos.conf ou a configuração do aplicativo pelo arquivo /etc/simplepkg/simplepkg.conf.

2 Usando o simplaret

Em geral, como o simplaret armazena as informações em pastas do sistema, algumas funcionalidades só estarão disponíveis quando o mesmo é rodado pelo superusuário do sistema.

Antes de explorar todas as funcionalidades do simplaret, é necessário atualizar a lista de pacotes para sua arquitetura e versão, o que pode ser feito com o comando

simplaret --update

ou simplesmente

simplaret update

já que o simplaret suporta que suas opções básicas de linha de comando sejam passas precedidas por dois hífens ou não (-update ou update).

Depois de atualizar a lista de pacotes, experimente buscar por um pacote com um comando do tipo

simplaret search ekiga

O resultado pode ser algo do tipo

REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz

Como veremos adiante, "REPOS" significa o tipo de repositório, "sarava" é o nome do repositório, "arch" mostra a arquitetura do pacote e do repositório (i386, no caso) e "version" a versão do repositório (11.0, no caso).

Para instalar esse pacote, basta o comando

simplaret install ekiga

Por padrão, se o simplaret encontrar no repositório um arquivo slack-required referente ao pacote en questão (ou seja, um arquivo ekiga.slack-required na mesma pasta que o pacote do ekiga, neste caso), então o simplaret tentará instalar todos os requisitos contidos nesse slack-required, caso já não estejam instalados no sistema. Essa resolução de dependências automática pode, no entanto, ser desabilitada através de um parâmetro de configuração, como veremos a seguir.

Se você apenas quiser baixar o pacote, digite apenas

simplaret get ekiga

No caso do simplaret encontrar mais de um pacote com o mesmo nome, ele baixará na ordem que a opção "search" listá-los, sendo que essa precedência é definida de acordo com a ordem em que os repositórios estão listados no arquivo de configuração. Por exemplo, o comando

simplaret search kernel-generic

pode retornar algo como

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

Assim, o comando

simplaret install kernel-generic

instalará o pacote "kernel-generic-2.6.17.13-i486-1.tgz" ao invés do pacote "kernel-generic-2.6.18-i486-1.tgz". Caso você queira forçar a instalação do segundo pacote, basta especificá-lo com o nome completo:

simplaret install kernel-generic-2.6.18-i486-1.tgz

Se um pacote já estiver instalado no sistema, a opção install fará o upgrade do mesmo, caso a versão ou o build number do pacote presente no repositório for diferente da instalada no sistema. Assim, o comando

simplaret install simplepkg

atualiza o simplepkg caso haja uma nova versão disponível nalgum repositório.

Para remover um pacote, digite

simplaret remove nome-do-pacote

o que na verdade é apenas uma chamada indireta ao removepkg.

O simplaret armazena pacotes baixados de repositórios numa pasta local do sistema, que por padrão é /var/simplaret. Conforme você vai baixando e instalando pacotes, essa pasta tende a crescer e ocupar muito espaço. Para apagar os pacotes, basta usar o comando

simplaret purge

Isso apagará apenas os pacotes da arquitetura e versão usadas atualmente. Detalhes de como apagar os pacotes de todas a arquiteturas e versões serão dados numa seção seguinte.

Você também pode forçar o simplaret a apagar apenas pacotes antigos. O comando a seguir apaga apenas os pacotes baixados a três semanas ou mais (ou seja, os pacotes baixados a menos de três semanas continuam armazenados):

simplaret purge -w 3

3 Baixando patches e atualizando o sistema

O simplaret possui, além do básico do gerenciamento de pacotes, duas funcionalidades adicionais: a obtenção e a aplicação de patches (pacotes contendo atualizações e correções de segurança).

Assumindo que os repositórios contendo patches para sua distribuição do tipo Slackware estejam corretamente configurados, o que ocorre com a configuração padrão que acompanha o simplepkg e que veremos a seguir como alterá-la, você pode baixar os patches disponíveis para o seu sistema com o comando

simplaret get-patches

Se você quiser não só baixar mas também atualizar seu sistema, isto é, fazer um upgrade com os patches disponíveis, use

simplaret upgrade

4 Trabalhando com múltiplas arquiteturas e versões

Até aqui vimos apenas o que é a obrigação de qualquer sistema de gerenciamento de pacotes possuir: obtenção de pacotes, instalação, busca e atualização do sistema. O que diferencia o simplaret das outras ferramentas, além do esquema de resolução de dependências, é sua capacidade de lidar simultaneamente com múltiplas arquiteturas, versões e até instalações de sistemas do tipo Slackware.

O uso dos seguintes comandos só fará sentido à luz da próxima seção, onde trataremos a respeito de múltiplas instalações e jaulas num mesmo computador, porém é um pré-requisito para entendê-la.

Supondo que você esteja rodando Slackware (arquitetura i386) mas que queira atualizar a lista de pacotes do sistema Slamd64 versão 11.0 (arquitetura x86_64), basta usar o comando

ARCH=x86_64 VERSION=11.0 simplaret update

Esse comando baixará a lista de pacotes para o Slamd64 sem conflitar de nenhuma forma com a lista e os pacotes já baixados para o Slackware. Isso acontece porque o simplaret armazena as informações e os pacotes de cada repositório em pastas próprias, organizadas de acordo com a arquitetura e versão.

Passar as variaveis ARCH e VERSION para o simplaret é opcional. Se qualquer uma delas não foi especificada, o simplaret utilizará o valor padrão do seu sistema, usualmente obtido do arquivo /etc/slackware-version ou então especificada através do arquivo de configuração do simplepkg.

Por exemplo, para pesquisar por um pacote da arquitetura powerpc (distribuição Slackintosh) na versão 11.0, basta o comando

ARCH=powerpc VERSION=11.0 simplaret search nome-do-pacote

Todos os comandos apresentados anteriormente funcionarão dessa maneira, à exceção daqueles que instalam ou fazer a atualização de pacotes, já que em geral é destrutivo misturar pacotes de arquiteturas e versões diferentes num mesmo sistema.

5 Trabalhando com múltiplas instalações

A funcionalidade apresentada na seção anterior só faz sentido quando existirem sistemas, jaulas e/ou vservers instalados num mesmo computador.

Suponha que você possua uma máquina x86_64 com três sistemas instalados:

- Slamd64 11.0 na raíz - Slackware 11.0 em /mnt/slackware-1 - Slackware 10.2 em /mnt/slackware-2

No caso da instalação de pacotes, da obtenção e aplicação de atualizações, o simplaret suporta a variável de ambiente ROOT para especificar qual é a pasta na qual o simplaret deve buscar o sistema.

Para instalar um pacote no Slackware contido em /mnt/slackware-1, basta usar os comandos

ARCH=i386 VERSION=11.0 simplaret update
ROOT=/mnt/slackware-1 simplaret install nome-do-pacote

O primeiro comando apenas atualiza a lista de pacotes e o segundo faz com que o simplaret baixe o pacote da arquitetura e versão do sistema presente em /mnt/slackware-1 bem como efetue sua instalação.

Para o caso da instalação em /mnt/slackware-2, o uso é análogo:

ARCH=i386 VERSION=10.2 simplaret update
ROOT=/mnt/slackware-2 simplaret install nome-do-pacote

Existe ainda uma facilidade para que a obtenção e aplicação de atualizações seja feita de forma única, através do arquivo /etc/simplepkg/jailist. Esse arquivo serve, além de outros propósitos descritos na documentação do simplepkg, para que o simplaret 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.

Considerando que a máquina possua as três instalações citadas no início deste tópico, a atualização automática das mesmas pode ser feita quando o arquivo /etc/simplepkg/jailist contiver as seguintes linhas (sem espaços no início de cada uma):

/mnt/slackware-1
/mnt/slackware-2

O sistema principal, contido na raíz do sistema, não precisa estar listado nesse arquivo. Se todas as suas instalações de sistema do tipo Slackware estiverem constando corretamente no /etc/simplepkg/jailist, o seguinte comando baixará as atualizações disponíveis para todas elas, incluindo o sistema contido na raíz:

simplaret get-patches

Analogamente, o seguinte comando baixará e/ou aplicará todas as atualizações disponíveis em todas as instalações, incluindo o sistema contido na raíz:

simplaret upgrade

Desse modo, o gerenciamento de pacotes numa máquina que contenha mais de uma instalação do tipo Slackware fica unificada e consequentemente simplificada.

6 O arquivo repos.conf

Agora que o comportamento do simplaret foi delineado, é importante descrever o arquivo de definição de repositórios, o /etc/simplepkg/repos.conf. Se você não pretende fazer um uso avançado do simplaret, provavelmente pode deixar de ler esta e a próxima seção, já que para o uso corriqueiro do simplaret você provavelmente não precisará alterar seu repos.conf, a não ser que queira mudar o espelho de download dos seus pacotes ou montar um esquema avançado para a escolha e priorização de repositórios.

O arquivo /etc/simplepkg/repos.conf contém uma definição de repositório por linha e a sintaxe de cada uma delas é:

TIPO[-ARQUITETURA][-VERSAO]="nome%URL"

O conteúdo demarcado por colchetes é opcional dependendo do tipo de repositório, como veremos a seguir. Os tipos de repositório aceitos pelo simplaret são:

6.1 PATCHES

PATCHES: definição para repositórios que contenham patches (pacotes de atualização) e cuja lista de arquivos é FILE_LIST e não FILELIST.TXT; exemplo:

PATCHES-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/patches/"

No caso da definição acima, temos um repositório de patches para a arquitetura i386 (distribuição Slackware), versão 11.0 e o nome dado ao repositório é "sarava".

Possuir uma definição do tipo PATCHES é opcional para ter acesso às atualizações: a definição de repositório ROOT, que veremos em seguida, já lida com patches: o tipo de repositório PATCHES serve apenas se você quiser utilizar algum repositório não-oficial como fonte de patches prioritária, já que repositório PATCHES são pesquisados pelo simplaret antes de qualquer outro.

Em resumo, se você não tiver um bom motivo para usar esse tipo de repositório, evite-o.

6.2 ROOT

ROOT: são tipos de repositórios cujo conteúdo está dividido por versão. O exemplo tradicional deste caso é o próprio repositório oficial das distribuições:

ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/"

Repositórios ROOT necessitam apenas de uma definição de arquitetura, um nome e uma URL. No caso acima, temos a definição de repositório ROOT de nome "tds", ou seja, não há definição de versão, já que o simplaret considerará que a versão desejada está numa subpasta dessa URL. Ou seja, definições ROOT implicam que as pastas contendo pacotes de cada versão estejam bem separadas, ou seja, pastas como http://slackware.mirrors.tds.net/pub/slackware/slackware-10.2/ e http://slackware.mirrors.tds.net/pub/slackware/slackware-11.0/.

6.3 REPOS

REPOS: este tipo de repositório é orientado a arquitetura e versão, como por exemplo

REPOS-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/"

No caso acima, um repositório de nome "sarava" é definido para a arquitetura i386 e versão 11.0 com a URL http://slack.sarava.org/packages/slackware/slackware-11.0/. Esse tipo de definição é recomendado para repositórios não-oficiais.

6.4 NOARCH

NOARCH: o último tipo de definição é usado para repositórios cujos pacotes são independentes de arquitetura e versão da distribuição. Como exemplo temos um repositório do Projeto Slack:

NOARCH="sarava%http://slack.sarava.org/packages/noarch"

Em qualquer tipo de repositório, a URL pode ser do tipo http://, ftp:// ou file:// (para repositórios locais).

7 Ordem e precedência em repositórios

Como podem haver mais de uma definição de repositório para cada tipo, versão e/ou arquitetura, as mesmas são diferenciadas de acordo com o nome. Definições de repositório podem ter nomes idênticos, desde que se refiram a tipo de repositório e/ou arquitetura e versão diferentes.

Existe ainda uma prioridade dentre tipos de repositório e ordens de precedência. Numa pesquisa, repositórios são pesquisados de acordo com a seguinte ordem:

  1. PATCHES tem prioridade mais alta: caso um pacote de uma dada arquitetura e versão não seja encontrado no primeiro repositório PATCHES do repos.conf, o próximo repositório definido na ordem em que ele aparece no arquivo é pesquisado, e assim por diante.
  2. Em seguida, pacotes são procurados nas definições ROOT da arquitetura em questão, na ordem em que aparecem no repos.conf.
  3. Depois, são os pacotes de repositórios REPOS daquela arquitetura e versão são pesquisados, na ordem em que aparecem no repos.conf.
  4. Por fim, repositórios NOARCH são pesquisados, na ordem em que são definidos.

Em resumo, o simplaret tem uma ordem de precedência e execução de repositórios e para busca e obtenção de pacotes: pacotes são exibidos de acordo com a ordem e precedência descritas acima. No caso da ontenção de pacotes, o primeiro repositório que possuí-lo será utilizado, isto é, caso o pacote não for solicitado explicitamente com seu nome de arquivo completo mas sim apenas com seu nome.

No caso da obtenção de patches, por padrão apenas repositórios do tipo PATCHES e ROOT são pesquisados, a não ser que isso seja configurado como contrário.

Em repositórios do tipo REPOS e ROOT ainda é possível, através de parâmetros de configuração, explicitar a ordem de pastas que são pesquisadas dentro dos repositórios, algo que veremos a seguir e facilita no caso do usuário estar interessado em dar prioridade para aplicativos em fase de testes (usualmente armazenados na pasta testing/) ou pacotes antigos (pasture).

8 Parâmetros de configuração do simplepkg.conf

Nesta seção os parâmetros do arquivo de configuração /etc/simplepkg/simplepkg.conf relevantes ao simplaret estão descritos. Para uma lista completa de todos os parâmetros disponíveis, consulte o simplepkg.conf contido no pacote do simplepkg. Aqui estão descritos apenas os principais, que são:

  • STORAGE: local de armazenameto dos pacotes baixados e das informações de repositório. O valor padrão é /var/simplaret/packages.

  • PATCHES_DIR: local de armazenamento de pacotes que são patches (atualizações), isto é, o local de armazenamento de pacotes de repositórios do tipo PATCHES (e eventualmente de patches encontrados em repositórios do tipo ROOT, como veremos a seguir). O valor padrão é /var/simplaret/patches.

  • SIMPLARET_DOWNLOAD_FROM_NEXT_REPO: indica se o simplaret deve tentar baixar um pacote do próximo repositório (caso exista) quando o download do repositório atual tiver falhado. Valores possíveis são "1" ou "yes" para habilitar a opção (que é o comportamento padrão) ou "0" ou "no" para desabilitá-la.

  • SIMPLARET_PURGE_PATCHES: indica se o conteúdo da pasta de patches também deve ser apagado quando o comando "simplaret -purge" é chamado. Use "yes" ou "1" para habilitar e "no" ou "0" para desabilitar. O valor padrão é "1".

  • SIMPLARET_PURGE_WEEKS: controla o número de semanas a partir do qual o simplaret irá apagar pacotes quando chamado com o comando "simplaret -purge", o que é equivalente a usar o comando "simplaret -purge -w N". O valor padrão é "3". Para desabilitar essa opção, atribua o valor "0".

  • PASSIVE_FTP: Indica se o simplaret deve fazer as transferências de FTP no modo passivo. O valor padrão é "1" (habilitado).

  • HTTP_TOOL: especifica qual a ferramenta para obtenção de arquivos via protocolo HTTP. As opções disponíveis são "curl" e "wget", sendo que a opção padrão é "curl".

  • FTP_TOOL: especifica qual a ferramenta para obtenção de arquivos via protocolo FTP. As opções disponíveis são "curl", "wget" e "ncftpget", sendo que a opção padrão é "curl".

  • CONNECT_TIMEOUT: tempo máximo de espera para uma conexão de rede, dado em segundos. O valor padrão é "20".

  • ROOT_PRIORITY: especifica a ordem de prioridades das pastas de repositórios do tipo ROOT numa pesquisa. O valor padrão é "patches slackware extra testing pasture", indicando que a pasta de patches tem precedência sobre todas as outras no repositório, sendo seguida pela pasta slackware e depois pelas extra, testing e pasture. Como podem existir nomes de pacotes idênticos nessas pastas, o estabelecimento de uma ordem se faz necessária.

  • REPOS_PRIORITY: da mesma forma como repositorios ROOT necessitam de uma prioridade de pesquisa em pastas, este parâmetro de configuração especifica a prioridade de pastas em repositórios do tipo REPOS. O valor padrão é "patches slackware extra testing pasture".

  • SIGNATURE_CHECKING: indica se o simplaret deve checar pela assinatura dos pacotes baixados, caso ela esteja disponível. Você deve ter a chave pública do distribuidor dos pacotes no seu chaveiro. O valor padrão é "0" (desabilitado).

  • DEPENDENCY_CHECKING: indica se o simplaret deve trabalhar com a resuloção de dependências caso ele encontre, no repositório, um arquivo slack-required correspondente ao pacote que está sendo instalado. O valor padrão é "1" (habilitado).

  • DOWNLOAD_EVEN_APPLIED_PATCHES: indica de o simplaret deve baixar todos os patches disponíveis a uma dada instalação de sistema do tipo Slackware, mesmo que os mesmo já se encontrem aplicados. Esta opção é útil se você quiser manter uma cópia local das atualizações existentes para seu sistema. O valor padrão é "0" (desabilitado).

  • CONSIDER_ALL_PACKAGES_AS_PATCHES: especifica se o simplaret deve, durante a obtenção de pacotes de atualização, procurar por atualizações também nos tipos de repositórios REPOS e NOARCH. Com essa opção, o simplaret faz uma pesquisa pelo pacote e, se sua versão ou buildnumber da primeira ocorrência não bater com as do pacote atualmente instalado, ele baixa e o aplica, mesmo que seja um pacote de repositórios do tipo REPOS ou NOARCH. O valor padrão é "0" (desabilitado). O uso dessa opção não é muito recomendado por poder causar confusão e deixar o simplaret mais lento, mas pode ser útil caso você esteja usando um repositório não-oficial que sempre atualiza seus pacotes.

  • STORE_ROOT_PATCHES_ON_PATCHES_DIR: controla se o simplaret deve armazenar os patches baixados de repositórios do tipo ROOT na mesma pasta de armazenamento de patches provenientes de repositórios do tipo PATCHES. É uma opção útil apenas se você quiser manter todos os patches de repositórios ROOT e PATCHES num mesmo local. O valor padrão é "0" (desabilitado).

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.

9 Mas pra quê serve isso?

Você pode estar se perguntando: para que mais um gerenciador de pacotes para o Slackware e quem utilizaria uma ferramenta que baixa pacotes de várias arquiteturas?

O simplaret foi escrito tendo em mente um ambiente *86 onde várias jaulas de diferentes arquiteturas estão instaladas. Suponha por exemplo uma máquina x86_64 que possua as seguintes jaulas:

  • slamd64 11.0
  • slackware 11.0
  • slackware 11.0 com pacotes adicionais em i686
  • uSlack (uClibc para i386)

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 simplaret e eventualmente com o simplepkg, a tarefa se torna trivial.

Além disso, as inúmeras novas tecnologias de virtualização poderão necessitar de um sistema de gerenciamento de pacotes que trabalha simultaneamente com múltiplas arquiteturas e versões.

Mesmo que você possua apenas um único sistema do tipo Slackware em seu computador ou trabalhe apenas com uma única arquitetura e/ou versão, o simplaret possui todas as funcionalidades necessárias para facilitar seu dia-a-dia de gerenciamento de pacotes.

10 Mais informações

O simplaret foi escrito por Silvio Rhatto (rhatto at riseup.net) e é disponibilizado dentro do pacote do simplepkg e sob a licença GPL. Para obter o código fonte, digite

svn checkout svn://slack.sarava.org/simplepkg

O wiki de desenvolvimento é http://slack.sarava.org/trac/wiki/Simplepkg e o endereço da lista de discussão utilizada para discussões sobre simplaret, simplepkg ou mesmo distribuições e pacotes do tipo Slackware é http://listas.sarava.org/wws/info/slack.

About this document ...

Simplaret: ferramenta para obtenção de pacotes

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html simplaret-pt_BR.tex -nonavigation -notop_navigation -show_section_numbers -split 0

The translation was initiated by on 2007-08-23


2007-08-23