devpi - gerência de pacotes

Introdução

Este artigo é sequência dos meus estudos sobre o devpi. E são estes até o momento: Será apresentado os paramêtros para carga e gerenciamento de pacotes no repositório local.

Escopo

  • devpi-server (previamente instalado)
  • devpi-client (previamente instalado)
  • source reportlab (exclusivamente para teste)

Baixar código fonte do reportlab

Baixe os fontes no sítio oficial do projeto em https://www.reportlab.com/pypi/packages/, ou no pypi com o comando abaixo:
wget https://pypi.python.org/packages/source/r/reportlab/reportlab-3.2.0.tar.gz

Alterar revisão do pacote

Para não ter que baixar um novo pacote a cada teste, execute o comando abaixo, alterando a versão do pacote, sempre que necessário:

  1. tar xvzf reportlab-3.2.0.tar.gz
  2. cd reportlab-3.2.0/
  3. cp src/reportlab/__init__.py src/reportlab/__init__.py0
  4. sed 's/Version = "3.2.0"/Version = "3.2.0.1"/g' src/reportlab/__init__.py0 > src/reportlab/__init__.py

Procedimentos

  • Login

    devpi login root
  • Seleção de indice

    Será apresentado dois métodos para seleção de indice, um partindos do zero, com a criação de usuário, permissões e indice; e outro apenas selecionando um já criado.

    Crie um indice

    No devpi os indices estão atrelados a usuários, que devem ser previamente criados.
    1. devpi user -c dev password='dev'
    2. devpi index -c dev/test bases=root/pypi acl_upload=root,dev
      http://mirror.incoluem.com.br/dev/test:
        type=stage
        bases=root/pypi
        volatile=True
        uploadtrigger_jenkins=None
        acl_upload=root,dev
        pypi_whitelist=
      
    3. devpi use dev/test

    Selecione um indice pré-existente

    devpi use dev/test
  • Carga de pacote (formato sdist)

    1. tar xvzf reportlab-3.2.0.tar.gz
    2. cd reportlab-3.2.0/
    3. devpi upload
      using workdir /tmp/devpi2
      --> $ /usr/bin/python setup.py sdist --formats gztar 
      built: /tmp/reportlab-3.2.0/dist/reportlab-3.2.0.tar.gz [SDIST.TGZ] 1678kb
      register reportlab-3.2.0 to http://mirror.incolume.com.br/dev/test/
      file_upload of reportlab-3.2.0.tar.gz to http://mirror.incolume.com.br/dev/test/
      
    4. Para prova acesse via web ou execute:
      devpi list reportlab
      http://mirror.incolume.com.br/dev/test/+f/fc9/1214fa20449b6/reportlab-3.2.0.tar.gz
  • Carga de pacote (previamente empacotados)

    Carga de pacote a partir de um diretório

    1. tar xvzf reportlab-3.2.0.tar.gz
    2. cd reportlab-3.2.0/
    3. python setup.py sdist
    4. devpi upload --from-dir dist/
      register reportlab-3.2.0 to http://mirror.incolume.com.br/dev/test/
      file_upload of reportlab-3.2.0.tar.gz to http://mirror.incolume.com.br/dev/test/
      

    Carga de multiplos pacotes a partir de um diretório

    Execute o procedimento do item 4 do topico "Alterar a versão revisão do pacote", realise novas cargas e copie os arquivos para /tmp.
    1. devpi upload --from-dir /tmp
      ffjcext.zip: does not contain PKGINFO, skipping
      reportlab-3.2.0.tar.gz: does not contain PKGINFO, skipping
      register reportlab-3.2.0.1 to http://mirror.incolume.com.br/dev/test/
      file_upload of reportlab-3.2.0.1.tar.gz to http://mirror.incolume.com.br/dev/test/
      register reportlab-3.2.0.2 to http://mirror.incolume.com.br/dev/test/
      file_upload of reportlab-3.2.0.2.tar.gz to http://mirror.incolume.com.br/dev/test/
      register reportlab-3.2.0.3 to http://mirror.incolume.com.br/dev/test/
      file_upload of reportlab-3.2.0.3.tar.gz to http://mirror.incolume.com.br/dev/test/
      register reportlab-3.2.0 to http://mirror.incolume.com.br/dev/test/
      file_upload of reportlab-3.2.0.tar.gz to http://mirror.incolume.com.br/dev/test/
      

    A diretiva --from-dir, procura recursivamente em todos nos formatos de empacotamento (zip, tar.gz, tar.bz2, e outros) a meta informação PKGINFO, se não forem encontradas o comando ignora o arquivo.

    Como para os pacotes ffjcext.zip e reportlab-3.2.0.tar.gz, apresentados na tela acima.

    Carga de multiplos pacotes a partir de um repositório git ou svn

    devpi upload --no-vcs --formats=sdist.zip,bdist_egg,sdist
    Ou
    devpi upload --no-vcs --formats=sdist.zip,bdist_egg,sdist,bdist
    Ou
    devpi upload --no-vcs --formats=sdist.zip,sdist,bdist_wheel,bdist_egg,bdist
  • Exibir versões disponíveis

    Execute o procedimento do item 4 do topico "Alterar a versão revisão do pacote" e realise novas cargas.

    Do indice

    devpi list
    pysober
    reportlab
    fixProductsEasyNewsletter
    tema.balanco
    

    Do pacote

    devpi list reportlab --all
    http://mirror.incolume.com.br/dev/test/+f/490/0c02959d5a6be/reportlab-3.2.0.3.tar.gz
    http://mirror.incolume.com.br/dev/test/+f/93b/389553ba06e51/reportlab-3.2.0.2.tar.gz
    http://mirror.incolume.com.br/dev/test/+f/f29/eb93c496c1735/reportlab-3.2.0.1.tar.gz
    http://mirror.incolume.com.br/dev/test/+f/fc9/1214fa20449b6/reportlab-3.2.0.tar.gz
    
  • Remover revisões

    Remover uma versão específica de pacote

    devpi remove -y reportlab==3.2.0
    About to remove the following releases and distributions
    version: 3.2.0
      - http://mirror.incolume.com.br/dev/test/+f/fc9/1214fa20449b6/reportlab-3.2.0.tar.gz
    Are you sure (yes/no)? yes (autoset from -y option)
    deleting release 3.2.0 of reportlab
    

    Remover todas as revisões de um pacote

    devpi remove -y reportlab
    About to remove the following releases and distributions
    version: 3.2.0.1
      - http://mirror.incolume.com.br/dev/test/+f/f29/eb93c496c1735/reportlab-3.2.0.1.tar.gz
    version: 3.2.0.2
      - http://mirror.incolume.com.br/dev/test/+f/93b/389553ba06e51/reportlab-3.2.0.2.tar.gz
    version: 3.2.0.3
      - http://mirror.incolume.com.br/dev/test/+f/490/0c02959d5a6be/reportlab-3.2.0.3.tar.gz
    Are you sure (yes/no)? yes (autoset from -y option)
    deleting release 3.2.0.1 of reportlab
    deleting release 3.2.0.2 of reportlab
    deleting release 3.2.0.3 of reportlab
    
  • Compartilhar indices

    Os indices têm que existir previamente.

    1. devpi index -c dev/stat bases=root/pypi acl_upload=root,dev
    2. devpi index dev/test bases=root/pypi,dev/stat acl_upload=root,dev
      /dev/test changing acl_upload: ['root', 'dev']
      /dev/test changing bases: ['root/pypi', 'dev/stat']
      http://mirror.incolume.com.br/dev/test:
        type=stage
        bases=root/pypi,dev/stat
        volatile=True
        uploadtrigger_jenkins=None
        acl_upload=root,dev
        pypi_whitelist=
      
      

Atualizações

12/06/2015; 15/06/2015; 20/04/2016;

Referências

http://doc.devpi.net/latest/quickstart-releaseprocess.html
http://doc.devpi.net/latest/userman/devpi_packages.html
http://doc.devpi.net/latest/userman/devpi_indices.html
http://doc.devpi.net/latest/userman/devpi_commands.html

Comentários