python madrid empaquetamiento deb aplicaciones python

Download Python Madrid empaquetamiento deb aplicaciones Python

Post on 03-Jul-2015

2.489 views

Category:

Technology

3 download

Embed Size (px)

DESCRIPTION

Python Empaquetamiento Deb I Python Madrid 14/4/2011

TRANSCRIPT

  • 1. Python Empaquetamiento Deb I Python Madrid 14/4/2011

2. Quin... [email_address] [email_address] http://www.eferro.net eferro DrTrucho 3. Disclaimeronline de contenido abierto, es decir,"no me responsabilizo del contenido"voluntaria de personas y grupos"lo que comento aqu es mi experiencia"que desarrollan conjuntamente una fuente del conocimiento humano. "debian/rules"Sus trminos de uso permiten a cualquier persona navegador web, modificar"Soy notavo en paquetes deb"el contenido o pginas, por favor tenga presente que la informacin que encuentre"Soy novato en conferencias"no ha sido expertos profesionales que conozcan los temas"Se aceptan sugerencias de mejora"de las diferentes materias necesaria para proporcionar aqu y ahora"Ni de lejos una informacin completa, precisa y fiable" . 4. Manos a la obra... 5. Indice...

    • Introduccin
    • Qu es (un paquete deb)
    • Cmo se genera(un paquete deb)
    • Empaquetando Python
      • distutils/setup.py
      • Directorio debian
      • rules (CDBS/Debhelper)
    • A construir
    • Conclusiones
    • Ejemplos y demos
    • Referencias

6. Introduccin: Contexto...

    • Sistemas GNU/Linux
    • Distros basadas en paquetes DEB (Debian, Ubuntu, etc)
    • Distribucin / Deploy libreras y mdulos creados en Python

7. Introduccin: Por qu empaquetar...

    • Control de dependencias
    • Inventario de software
    • Gestin comn soft de base (distro) y soft propio
    • Instalador estandarizado
    • Sistema de repositorios
    • Utilidades (buscadores, ndices, etc...)
    • Somos gente con estilo :)

8. Introduccin: Qu empaquetar...

    • Software de base / infraestructura
    • Versiones diferentes de software disponible en la distro usada (backports, nuevas versiones, etc...)
    • Software de aplicacin y de libreras

9. Introduccin: Cunto cuesta empaquetar...

    • Si es python y usa distutils (setup.py), casi nada
    • Hacerlo para un paquete oficial de distro, bastante (cumplir la debian/policy)
    • Hacerlo para nuestros paquetes, no tanto

10. Paquetes Deb Aplicaciones Python Manos a la obra 11. Qu es: Anatoma de un Deb I

  • Un fichero deb simplemente son tres ficheros unidos en uno slo mediante "ar".
  • Ejemplo:
  • ar -xv .deb
  • x - debian-binary x - control.tar.gz x - data.tar.gz

12. Qu es: Anatoma de un Deb II

    • debian-binaryVersion del paquete deb (actualmente 2.0)
    • control.tar.gz
      • ./config
      • ./preinst
      • ./prerm
      • ./conffiles
      • ./md5sums
      • ./control
      • ....
    • data.tar.gzFicheros incluidos en el paquete (binarios, librerias, etc...)

13. Cmo se genera: Herramientas I

  • Herramientas para contruir paquetes
    • python(incluye distutils)
    • dpkg-dev / dpkg-buildpackage
    • debhelperhelper programs for debian/rules
    • fakerootGives a fake root environment
    • cdbscommon build system for Debian packages
    • dh-make tool that converts source archives into Debian package source

14. Cmo se genera: Creacin deb (app/lib Python)

    • Partimos de fuentes con app/lib Python
    • Verificamos/Creamos setup.py (distutils)
    • Realizamos la debianizacin inicial
    • Ponemos a punto:
      • debian/rules
      • debian/control
      • debian/changelog
      • debian/...
    • Construccin del paquete binario

15. Empaquetando python: setup.py (distutils)

    • Buena prctica
    • Solucin estndard (y recomendacin oficial de python)
  • Distribuye tu aplic/lib python con estilo
  • http://docs.python.org/install/index.html
  • http://docs.python.org/distutils/index.html

16. Empaquetando python: setup.py (distutils) I

  • #!/usr/bin/env python
  • from setuptools import *
  • import aptdaemon
  • setup(name="aptdaemon",
  • ...
  • packages=["aptdaemon"],
  • scripts=["aptd", "aptdcon"],
  • data_files=[("../etc/dbus-1/system.d/",
  • ["data/org.debian.apt.conf"]),
  • "doc/org.debian.apt.transaction.7"])],
  • platforms = "posix")

17. Empaquetando python: setup.py (distutils) II

  • distutils.core.setup(
  • name='argparse',
  • version=argparse.__version__,
  • author='Steven Bethard',
  • description='Python command-line parsing library',
  • long_description = read_description(),
  • license='Apache 2.0',
  • classifiers=[
  • 'Topic :: Software Development',
  • ...
  • ],
  • py_modules=['argparse'],
  • )

18. Empaquetando python: setup.py (distutils) III

  • #!/usr/bin/env python
  • from distutils.core import setup
  • import glob
  • import os.path
  • setup(
  • name='Boscli-oss',
  • ...
  • package_dir = { '' : 'src' },
  • packages = ['boscli', ],
  • scripts = ['src/bin/boscli', ],
  • data_files = [ ( '/usr/lib/boscli/',
  • glob.glob( 'src/lib/*.py') ) ],
  • )

19. Empaquetando python: setup.py (distutils) IV

  • #!/usr/bin/env python
  • from distutils.core import setup
  • setup(name = "amqplib",
  • description = "AMQP Client Library",
  • version = "0.6",
  • license = "LGPL",
  • author = "Barry Pederson",
  • author_email = "bp@barryp.org",
  • url = "http://barryp.org/software/py-amqplib/",
  • packages = ['amqplib', 'amqplib.client_0_8']
  • )

20. Empaquetando python: Debianizacin inicial I

    • Se crea el directorio debian:
      • Usando dh_make
    • Se adaptan ficheros del directorio debian
  • Si el cdigo es nuestro:
    • Si usamosdistutils / setup.pytenemos el95%del trabajo hecho.

21. Empaquetando python: Debianizacin inicial II

  • dh_make [options] -c, --copyright
  • -e, --email
  • -f, --file
  • -r, --createorig
  • -s, --single / -i, --indep / -m, --multi / ... -b, --cdbs
  • -p, --packagename
  • ...

22. Empaquetando python: Debianizacin inicial III

  • Opciones tpicas:
    • dh_make -r -f ../.tar.gz -p _ -s
    • dh_make -r -f ../.tar.gz -p _ --cdbs

23. Empaquetando python: Debianizacin inicial IV

  • El directorio debian creado con dh_make contiene los siguientes ficheros:
  • debian/ control debian/ changelog
  • debian/ rules debian/docs debian/compat debian/copyright debian/*.ex y debian/*.EX
  • debian/README.*

24. Empaquetando python: Fichero Control I

  • Source: python-amqplib
  • Section: bif
  • Priority: extra
  • Build-Depends:python-support(>= 0.6),debhelper (>= 5)
  • Maintainer: Eduardo Ferro
  • Package: python-amqplib
  • Architecture: all
  • Depends:${python:Depends}