From c892ac977939879070d366dd55caec4e0c8deec9 Mon Sep 17 00:00:00 2001 From: rhatto Date: Tue, 17 Apr 2007 01:01:27 +0000 Subject: doc update / simplaret support for --get and --install with full package filename git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@346 04377dda-e619-0410-9926-eae83683ac58 --- trunk/doc/CHANGELOG | 7 ++ trunk/doc/README.pt_BR | 2 +- trunk/doc/README.simplaret.pt_BR | 173 +++++++++++++++++++++------------------ trunk/install/slack-desc | 2 +- trunk/simplepkg.SlackBuild | 2 +- trunk/src/simplaret | 49 ++++++++--- 6 files changed, 142 insertions(+), 93 deletions(-) (limited to 'trunk') diff --git a/trunk/doc/CHANGELOG b/trunk/doc/CHANGELOG index ad62068..d7215bb 100644 --- a/trunk/doc/CHANGELOG +++ b/trunk/doc/CHANGELOG @@ -1,6 +1,13 @@ simplepkg changelog =================== +0.5pre19 +======== + + - simplaret: + - options --get and --install now can work + with full file name. + 0.5pre15-18 =========== diff --git a/trunk/doc/README.pt_BR b/trunk/doc/README.pt_BR index 80634d2..18e2b84 100644 --- a/trunk/doc/README.pt_BR +++ b/trunk/doc/README.pt_BR @@ -46,7 +46,7 @@ comando instalar o template numa parti para obter pacotes de um repositório local ou remoto. Gerenciar instalações e pacotes não é tudo o que o simplepkg faz. Ele pode ser usado até na -criação de jaula e vservers. Ou então ele ... +criação de jaula e vservers. Arquitetura ----------- diff --git a/trunk/doc/README.simplaret.pt_BR b/trunk/doc/README.simplaret.pt_BR index 7b1cd58..5671313 100644 --- a/trunk/doc/README.simplaret.pt_BR +++ b/trunk/doc/README.simplaret.pt_BR @@ -2,135 +2,136 @@ simplaret: ferramenta para obten ---------------------------------------------- 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. +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. -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 simplepkg possam utilizá-lo posteriormente. -O simplaret ainda pode ser usado sozinho para procurar e baixar pacotes. +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. Documentação ------------ -A documentação atualizada do simplaret se encontra em http://slack.sarava.org/node/16 +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 e configuração é dada no artigo do simplepkg. -Ele utiliza o mesmo arquivo de configuração do simplepkg, o /etc/simplepkg/simplepkg.conf e guarda as -definições de repositórios em /etc/simplepkg/repos.conf. +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 -Organização do repositório --------------------------- + installpkg simplepkg-VERSAO-noarch-BUILD.tgz -O repositório de armazenamento local do simplaret é definido pelo parâmetro STORAGE e é organizado -da seguinte maneira: +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. - $STORAGE/arch/version/ - -Pacotes obtidos num repositório que não seja oficial da distribuição ficam em - - $STORAGE/arch/version/repository-name/ +Usando o simplaret +------------------ -Isso quer dizer, por exemplo, que pacotes do slackware 10.2 ficariam em +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. - $STORAGE/i386/10.2/ +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 -e os pacotes obtidos a partir do repositório slamd64 do slack.sarava.org ficaria, por exemplo, em + simplaret --update - $STORAGE/x86_64/10.2/slack.sarava.org/ +ou simplesmente -No arquivo de repositórios (/etc/simplepkg/repos.conf), as definições de repositório seguem o -seguinte esquema, semelhante ao formato de configuração do swaret: + simplaret update - 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/" +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). -Repositórios definidos como ROOT são aqueles que +Depois de atualizar a lista de pacotes, experimente buscar por um pacote com um comando do tipo - - Possuem pacotes da distribuição oficial ou - - Estão organizados por versão, de acordo com os mirror guidelines + simplaret search ekiga -Já os repositórios definidos como REPOS são aqueles que contém pacotes para uma versão específica e/ou -que são não-oficiais. +O resultado pode ser algo do tipo -Quando o simplaret busca ou obtém um pacote, a precedência pelos repositórios é dada às definições de -ROOT e em seguinda às de REPOS. As definições REPOS ainda devem possuir, além da URL do repositório, um -nome para identificá-lo, sendo que esses dois campos são separados por um delimitador. + REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz -Baixando as listas de pacotes ------------------------------ +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). -Após configurá-lo, é preciso atualizar a lista de pacotes: +Para instalar esse pacote, basta o comando - simplaret --update + simplaret install ekiga -Isso atualiza a lista de pacotes da arquitetura definida em DEFAULT_ARCH e da versão DEFAULT_VERSION -apenas. Se você quiser forçar a atualização, por exemplo, para a arquitetura x86_64 (slamd64) -e versão 10.2, basta +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. - ARCH=x86_64 VERSION=10.2 simplaret --update +Se você apenas quiser baixar o pacote, digite apenas -Buscando pacotes ----------------- + simplaret get ekiga -Para buscar um pacote, esses comandos servem de exemplo: +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 coreutils + simplaret search kernel-generic -pacote para o Slack/390, +pode retornar algo como - ARCH=s390 simplaret --search x11 + 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 -e para slackware 10.1 com pacotes adicionais em i686, +Assim, o comando - ARCH=i686 VERSION=10.1 simplaret --search icecast + simplaret install kernel-generic -Baixando um pacote ------------------- +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: -Para baixar um pacote: + simplaret install kernel-generic-2.6.18-i486-1.tgz - simplaret --get icecast +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 -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. + simplaret install simplepkg -Baixando patches ----------------- +atualiza o simplepkg caso haja uma nova versão disponível. -Através do parâmetro de configuração PATCHES_DIR é possível especificar uma pasta -onde os patches de cada distribuição serão armazenados, organizados também por arquitetura. +Mais: -Por exemplo, patches do slackware 10.2 ficarão sempre em + - Baixando patches + - Atualização + - Removendo pacotes + - Limpeza do cache - $PATCHES_DIR/i386/10.2/ +Trabalhando com múltiplas arquiteturas e versões +------------------------------------------------ -Os patches na verdade são baixados através de um "simplaret --get" e armazenados na subpasta -de $STORAGE correspondente e apenas um link simbólico é mantido em $PATCHES_DIR/$ARCH/$VERSION. +... -Para baixar os patches, use uma chamada do tipo +Trabalhando com múltiplas instalações +------------------------------------- - ARCH=arquitetura VERSION=versao simplaret --get-patches + - Instalação de pacotes + - Obtenção de patches + - Atualização -E os patches dessa arquitetura e versão serão baixados. +O arquivo repos.conf +-------------------- -Apagando pacotes ----------------- + - Tipos de repositorio, suas prioridades e ordens de precedência. -O repositório de pacotes de uma arquitetura e versão pode ser apagado com o comando +Parâmetros de configuração do simplepkg.conf +-------------------------------------------- - simplaret --purge +... -Mas pra quê serve isso? ------------------------ +Mas para quê serve isso? +------------------------ Você pode estar se perguntando: quem utilizaria uma ferramenta que baixa pacotes de várias arquiteturas? @@ -146,3 +147,17 @@ O condenado/a em quest 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 +---- + + - Obtenção do código fonte + - Wiki de desenvolvimento + - Lista de discussão + diff --git a/trunk/install/slack-desc b/trunk/install/slack-desc index 586d7b6..38ea489 100644 --- a/trunk/install/slack-desc +++ b/trunk/install/slack-desc @@ -9,7 +9,7 @@ simplepkg: simplepkg (slackware management system) simplepkg: simplepkg: simplepkg is a very small set of scripts intended to help slackware -simplepkg: users and developers, like the createpkg packagement tool, simplaret +simplepkg: users and developers, like the createpkg packaging tool, simplaret simplepkg: package retrieval, mkjail chroot installer and templatepkg template simplepkg: management system. simplepkg: diff --git a/trunk/simplepkg.SlackBuild b/trunk/simplepkg.SlackBuild index e373fd9..d5831b5 100755 --- a/trunk/simplepkg.SlackBuild +++ b/trunk/simplepkg.SlackBuild @@ -6,7 +6,7 @@ PACKAGE="simplepkg" PACK_DIR="package-$PACKAGE" BUILD=${BUILD:=1rha} -VERSION="0.5pre18" +VERSION="0.5pre19" ARCH="noarch" LIBEXEC="/usr/libexec/$PACKAGE" BINDIR="/usr/bin" diff --git a/trunk/src/simplaret b/trunk/src/simplaret index 00b0c25..419f048 100755 --- a/trunk/src/simplaret +++ b/trunk/src/simplaret @@ -487,18 +487,31 @@ function simplaret_search_and_delete { function simplaret_get { # get a package - # usage: simplaret_get [--silent] + # usage: simplaret_get [--silent] local silent generate_patches search search_results + local name version build # prevent user to stay in $storage cd + name="`package_name $1`" + + if [ "$name" != "$1" ]; then + # simplaret_get was called with the package file + # name and not with just the package name + version="`package_version $1`" + build="`package_build $1`" + else + version="" + build="" + fi + # first search for an already downloaded package for repos_type in patches root repos noarch; do simplaret_set_storage_folder - simplaret_search_and_delete $1 $storage $2 + simplaret_search_and_delete $name $storage $2 if [ "$?" == "1" ]; then return 0 @@ -507,7 +520,7 @@ function simplaret_get { done # then search for the package in the repositories - search="`simplaret_search $1 --formatted`" + search="`simplaret_search $name --formatted`" search_results="`echo "$search" | wc -l`" for result in $search; do @@ -523,7 +536,18 @@ function simplaret_get { simplaret_repository_name candidate="`basename $file`" - if [ "`package_name $candidate`" == "$1" ]; then + if [ "`package_name $candidate`" == "$name" ]; then + + if [ ! -z "$build" ] && [ ! -z "$version" ]; then + # simplaret_get was called with the package file + # name and not with just the package name + if [ "$version" != "`package_version $candidate`" ] && \ + [ "$build" != "`package_build $candidate`" ]; then + # the package version and/or build doesnt matched + # the desired one + continue + fi + simplaret_repository_url # if repos_type == root, the package is a patch and @@ -545,8 +569,8 @@ function simplaret_get { rm $folder/$candidate.asc fi - if [ -f "$folder/$1.slack-required" ]; then - rm $folder/$1.slack-required + if [ -f "$folder/$name.slack-required" ]; then + rm $folder/$name.slack-required fi # download the signature, if exist @@ -555,8 +579,8 @@ function simplaret_get { fi # download slack-required, if exist - if simplaret_check_url $repository_url/`dirname $file`/$1.slack-required; then - simplaret_download $repository_url `dirname $file`/$1.slack-required $folder + if simplaret_check_url $repository_url/`dirname $file`/$name.slack-required; then + simplaret_download $repository_url `dirname $file`/$name.slack-required $folder fi if [ ! -f "$folder/$candidate" ]; then @@ -824,9 +848,12 @@ function simplaret_checksum { function simplaret_install { # download and install a package - # usage: simplaret_install [--skip-checks] + # usage: simplaret_install [--skip-checks] local package root jail_arch jail_version slack_required dep dependency tmp + local name version build + + name="`package_name $1`" root="/$ROOT" mkdir -p $root/var/log/setup/tmp @@ -857,7 +884,7 @@ function simplaret_install { package="$LAST_DOWNLOADED_PACKAGE" if [ "$package" != "0" ] && [ ! -z "$package" ]; then - slack_required="`dirname $package`/$1.slack-required" + slack_required="`dirname $package`/$name.slack-required" if [ -f "$package" ]; then if [ -f "$slack_required" ] && [ "$DEPENDENCY_CHECKING" == "1" ]; then @@ -866,7 +893,7 @@ function simplaret_install { ( cat $slack_required | while read dep; do if [ ! -z "$dep" ]; then dependency="`echo $dep | awk '{ print $1 }'`" - simplaret_solve_dep $1 $dependency $root + simplaret_solve_dep $name $dependency $root fi true done ) -- cgit v1.2.3