moeblog

programación

Empaquetado deb rápido y sucio de aplicaciones python

by moebius on Jun.26, 2009, under Debian, empaquetado, linux, python

Ieup,

Toca mini-receta basado en el artículo de David en la web de crysol.

  1. Necesitamos un fichero setup.py. Si el software no lo trae deberemos crearlo nosotros.
  2. creamos el dir debian: mkdir debian
  3. Creamos el fichero debian/control:

  4. Source: hola-pythoneros
    Section: utils
    Priority: optional
    Maintainer: Juan Nadie <juan.nadie@loquesea.es>
    Build-Depends: debhelper (>= 5.0.38)
    Build-Depends-Indep: cdbs (>= 0.4.43), python-all-dev (>= 2.3.5-11), python-central (>= 0.5.6)
    Standards-Version: 3.7.2
    XS-Python-Version: all


    Package: hola-pythoneros
    Architecture: all
    Depends: ${python:Depends}
    XB-Python-Version: ${python:Versions}
    Description: Ejemplo básico de script Python empaquetado en Debian GNU/Linux
    Un script "hola mundo" que sirve únicamente para explicar cómo se
    empaquetan scripts Python en GNU/Linux de forma adecuada.

  5. Creamos el rules (ojo, tiene que ser ejecutable chmod +x debian/rules):

  6. #!/usr/bin/make -f


    DEB_PYTHON_SYSTEM=pycentral
    DBK2MAN_XSL=/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl


    include /usr/share/cdbs/1/rules/debhelper.mk
    include /usr/share/cdbs/1/class/python-distutils.mk

  7. Creamos el debian/changelog : dch --create

Con esto tenemos lo ultrabásico para poder compilar el paquete deb: dpkg-buildpackage

Es una manera sucia de empaquetar algo (es más una nota mental para mi que un howto) y para que el paquete sea medio decente hay que hacer muchas más cosas :) Leeros el articulo de David que es más completo.

Leave a Comment more...

Como procesar un fichero .changes de un paquete debian

by moebius on Nov.24, 2008, under Debian, python

Buenas,

Si queremos procesar un fichero .changes de un paquete debian es tan sencillo como:

  1. Quitarle la firma
  2. Procesar el contenido con una librería de yaml, por ejemplo syck

En código sería lo siguiente:

import os
import GnuPGInterface
import syck
 
changes_file = '/tmp/factoriapegaso-panel_0.2.6-4_amd64.changes'
 
gnupg = GnuPGInterface.GnuPG()
ciphertext = open(changes_file).read()
p2 = gnupg.run(['--decrypt'], create_fhs=['stdin', 'stdout'])
p2.handles['stdin'].write(ciphertext)
p2.handles['stdin'].close()
decrypted_plaintext = p2.handles['stdout'].read()
p2.handles['stdout'].close()
#Puede fallar por no tener la llave GPG
try:
        p2.wait()
except:
        pass
 
changes_info = syck.load(decrypted_plaintext)
 
 
print "tenemos:"
print changes_info

No es lo mas elegante del mundo, solo una prueba de concepto :)

Leave a Comment : more...

Control del flujo tipo switch en python

by moebius on Oct.14, 2008, under programación, python

Ieup,

Otra pildorita de python. Siempre hechaba de menos una orden de control delflujo del tipo switch de PHP. Hasta ahora siempre hacía un sucio hack con if-s anidados (si asi de WTF es uno :P ). Pero hoy, cansado ya y con necesidad urgente he rebuscado en san google y he econtrando que se puede hacer tan sencillo como mapeanda funciones a valores en un array. Sacado del blog de Simon Willson :

#Definimos las funciones
def alerta(texto):
        print "ALERTA: %s"%texto
def farsa(texto):
        print "FARSA: %s"%texto
#Definimos el array mapeador
case = {
    'a': alerta,
    'f': farsa
    }
variable='a'
print variable
case[variable]("lala")
print "Ahora cambiamos"
variable='f'
print variable
case[variable]("lele")

1 Comment :, , more...

Gestión de “opciones” en guiones python

by moebius on Oct.09, 2008, under programación, python

Python mola! Necesitaba añadir a un guión python el recibir un parametro del tipo –parametro valor. He mirado la referencia de python (ya sabeis, hay que mantenerla siempre debajo de la almohada ;) y voila! optparser al rescate. A sido tan sencillo como:

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-c", "--config",action="store", type="string", dest="configfile")
(options, args) = parser.parse_args()
#Es oblligatorio indicar el fichero de configuración
if not options.configfile:
    print "Falta indicar el fichero de configuración"
    exit()
#esperamos 2 parámetros libres
if len(args) != 2:
    print "Faltan parametros"
    exit()

Espero que a alguna le sirva. Sino sirva como nota mental :)

Agur.

1 Comment : more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!