1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
|
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,
como por exemplo Slamd64 e Slackintosh, permitindo que você gerencie facilmente todas as suas
jaulas e instalações de Slackware, independentemente da arquitetura ou versão que elas utilizem.
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.
Documentação
------------
A documentação atualizada do simplaret se encontra em http://slack.sarava.org/simplaret.
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.
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
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
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.
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.
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:
- 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.
- 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/.
- 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.
- 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).
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:
- 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.
- Em seguida, pacotes são procurados nas definições ROOT da arquitetura em questão, na ordem
em que aparecem no repos.conf.
- 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.
- 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).
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.
Mas para 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
- ucSlack (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.
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 http://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.
|