simplaret: simplepkg retrieval tool ----------------------------------- Simplaret is a simplepkg 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. Documentation ------------- The always updated english documentation is hosted at http://slack.sarava.org/simplaret-en 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. 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 simplaret --update or simply simplaret update as simplepkg supports both command line behaviour (--update or just update). After that, you can search for packages using commands like simplaret search ekiga The result should be something like REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz 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 simplaret install ekiga 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 simplaret get ekiga 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 simplaret search kernel-generic can return something like 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 So the command simplaret install kernel-generic 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: simplaret install kernel-generic-2.6.18-i486-1.tgz 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 simplaret install simplepkg updates simplepkg in the case there's a new version. To remove a package, type simplaret remove nome-do-pacote 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 simplaret purge 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: simplaret purge -w 3 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 simplaret get-patches If you don't just donwload but also apply those patches, use simplaret upgrade 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 ARCH=x86_64 VERSION=11.0 simplaret update 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 ARCH=powerpc VERSION=11.0 simplaret search package-name 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. 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: - Slamd64 11.0 at the root folder - Slackware 11.0 at /mnt/slackware-1 - Slackware 10.2 at /mnt/slackware-2 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 ARCH=i386 VERSION=11.0 simplaret update ROOT=/mnt/slackware-1 simplaret install package-name 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 ARCH=i386 VERSION=10.2 simplaret update ROOT=/mnt/slackware-2 simplaret install package-name 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): /mnt/slackware-1 /mnt/slackware-2 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 simplaret get-patches To get the patches and/or apply them in all jails (including the root system), use simplaret upgrade This feature makes easier to keep all your installations always upgraded. 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: TYPE[-ARCH][-VERSION]="name%URL" 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: - 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). [...] 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: - slamd64 11.0 - slackware 10.0 - slackware 11.0 with additional i686 packages - uSlack (i386 uClibc) Keep all this stuff update manually is really a headache. Simplaret just tries to make it trivial.