Como executar o seu servidor PyPI (Cheeseshop) pessoal

Tradução de: http://tarekziade.wordpress.com/2008/03/20/how-to-run-your-own-private-pypi-cheeseshop-server/

Como executar o seu servidor PyPI (Cheeseshop) pessoal

O PloneSoftwareCenter 1.5 apesar de não ter sido lançado, está sendo fortemente desenvolvido, e a versão atual do trunk está funcionando bem para usar como um servidor semelhante ao PyPI. Ele pode ser realmente útil para empresas que desenvolvem softwares Python e estão buscando uma forma de centralizar seus eggs internamente. É o que usamos atualmente na Ingeniweb para trabalhar em projetos de clientes.

Esse tutorial explica como configurar um servidor PloneSoftwareCenter, se você quer ser um early-adopter do que será a próxima versão em execução do software center do plone.org em alguns meses (mas esse código deve ser usado por seu próprio risco, é claro ;))

Porque um PyPI particular?

Você tem alguns pacotes python que você quer tratar da mesma forma que o Cheeseshop faz. Em outras palavras, você quer trabalhar com eles com easy_install, zc.buildout, etc..

Mas esses pacotes são privados da sua empresa...

O modo mais simples é salvar seus eggs em algum lugar compartilhado. Mas distutils e setuptools fornecem um conjunto interessante de comandos para construir e enviar eggs automaticamente para o PyPI ou qualquer servidor que implemente as apis do PyPI.

Como? PloneSoftwareCenter!

A comunidade Plone fornece uma ferramenta interessante para gerenciar pacotes Python, e que é compatível com o PyPI. Em outras palavras, ele pode agir como o Cheesehop para interagir com suas ferramentas de linha de comando.

Ele também fornece um conjunto extensivo de features para gerenciar seus releases, executar seus bug trackers, etc.

Veja a seção de produtos do plone.org, ele usa o PSC.

4 passos para a instalação

Graças ao zc.buildout, consigurar um Plone Software Center é realmente fácil. Ainda não existem binários disponíveis, então você precisa compilar algumas coisas.

Passo 1 - Pré-requisitos

Se você está no, Windows, baixe o arquivo: http://release.ingeniweb.com/third-party-dist/python2.4.4-win32.zip, descompacte-o e execute o "install.bat". Ele vai instalar o Python 2.4 junto com um conjunto de ferramentas e irá atualizar o PATH

Se você está no Linux, assegure-se de ter o gcc, subversion e make instalados. Então, instale o easy_install e o PIL, assim:

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
$ easy_install http://release.ingeniweb.com/third-party-dist/PILwoTk-1.1.6.4.tar.gz

Passo 2 - instalando o PSC

  • Crie um diretório no seu sistema chamando softwarecenter
  • Obtenho o cóigo do PSC usando o subversion:
$ svn co http://svn.plone.org/svn/collective/Products.PloneSoftwareCenter/buildout/trunk .
  • Execute o buildout com esse conjunto de comandos:
$ python bootstrap.py
$ bin/buildout
  • Vai levar algum tempo para trazer todos os elementos necessários para executar o PSC.
  • Execute o servidor
$ bin/instance start

Passo 3 - configurando o PSC

Vamos criar um website Plone com uma instância do PloneSoftwareCenter:

  • Abra um navegador e vá para http://localhost:8080/manage. O login e senha são admin/admin.
  • Na parte direita há uma combobox, selecione "Plone Site" e clique em Adicionar
  • No formulário, configure o id para "plone" e pressione enter.
  • Vá para http://localhost:8080/plone/prefs_install_products_form
  • Selecione o "PloneSoftwareCenter" no lado esquerdo e clique em "Instalar"
  • Vá para to http://localhost:8080/plone
  • No menu "Adicionar novo...", clique em "software center"
  • No formulário, no título, coloque "Catalog"
  • Selecione Use Classifiers to display Categories (with Topic : : * ) em Classifiers
  • Salve

Seu Software Center está pronto e disponível em http://localhost:8080/plone/catalog

Passo 4 - configurando o lado cliente

Agora vamos configurar o lado cliente para que as pessoas possam usar seu Software Center:

  • Instale o iw.dist:
$ easy_install iw.dist
  • Crie um arquivo no seu diretório home, chamado .pypirc com esse conteúdo:
[distutils]
index-servers =
  pypi
  local

[pypi]
username:YOUR_PYPI_LOGIN
password:YOUR_PYPI_PASSWORD

[local]
repository:http://localhost:8080/plone/catalog/
username:admin
password:admin

É claro, o valor localhost será diferente se localizado em outra máquina..

iw.dist adiciona dois novos comandos no distutils: mregister e mupload. Esses comandos melhoram o resgistro e upload e fazem o distutils trabalhar com múltiplos servidores. Ele deve ser adicionado ao Python 2.6 muito em breve. vamos usar !

Agora, você tem dois novos comandos no distutils, chamados 'mregister' e 'mupload' que vão permitir que você use ou o seu PSC ou o PyPI.

Vamos enviar um egg para o PSC:

$ python setup.py mregister sdist bdist_egg mupload -r local

Vamos enviar um egg para o PyPI:

$ python setup.py mregister sdist bdist_egg mupload -r pypi

Se o -r é omitido, o pypi é o padrão.

Se você quer usar o no zc.buildout ou easy_install, você pode informar http://localhost:8080/plone/catalog/simple como um find-links ou valor de índice:

[buildout]  find-links = http://localhost:8080/plone/catalog/simple

Ou:

$ easy_install -f http://localhost:8080/plone/catalog/simple my.egg

Isso é tudo!

# % if c.boo_box: CD Majikat Earth Tour 1976 - Digipack CD What Would the Community Think CD The Very Best Of Cat Stevens CD The Covers Record CD Matthew & Son - Importado DVD Majikat - Earth Tour 1976