modulos - ¿Cómo hago el empaquetado Debian de un paquete Python?
instalar virtualenv (5)
Necesito escribir, o encontrar, un script para crear un paquete Debian, usando python-support, desde un paquete Python El paquete de Python será Python puro sin extensiones C.
El paquete de Python para propósitos de prueba solo será un directorio con un archivo __init__.py
vacío y un solo módulo de Python, package_test.py
.
El script de empaquetado debe usar el soporte de Python para proporcionar el código de byte correcto para las posibles instalaciones múltiples de Python en una plataforma de destino, es decir, v2.5 y v2.6 en Ubuntu Jaunty.
La mayoría de los consejos que encuentro mientras busco en Google son solo ejemplos de hacks desagradables que ni siquiera usan python-support o python-central.
He pasado horas investigando esto, y lo mejor que puedo hacer es hackear el script de un proyecto de código abierto existente, pero no sé qué bits son necesarios para lo que estoy haciendo.
¿Alguien aquí ha hecho un paquete Debian a partir de un paquete Python de una manera razonablemente no hacky?
Estoy empezando a pensar que me llevará más de una semana pasar de no tener conocimiento del empaquetado de Debian y del soporte de python a obtener un script de trabajo. ¿Cuánto tiempo le ha llevado a los demás?
Creo que lo que quieres es http://pypi.python.org/pypi/stdeb :
stdeb produce paquetes fuente de Debian desde paquetes de Python a través de un nuevo comando distutils, sdist_dsc. Se proporcionan valores predeterminados automáticos para el paquete Debian, pero muchos aspectos del paquete resultante se pueden personalizar (consulte la sección de personalización, a continuación). Un comando adicional, bdist_deb, crea un paquete binario de Debian, un archivo .deb.
En primer lugar, ya hay muchos paquetes de Python en Debian; puede descargar la fuente (incluido todo el paquete) para cualquiera de ellos utilizando apt-get source
o visitando http://packages.debian.org .
Puede encontrar los siguientes recursos de uso:
La forma correcta de crear un paquete deb es usando dpkg-buildpackage
pero a veces es un poco complicado. En su lugar, puede usar dpkg -b <folder>
y creará su paquete Debian.
Estos son los conceptos básicos para crear un paquete Debian con dpkg -b <folder>
con cualquier binario o con cualquier tipo de script que se ejecute automáticamente sin necesidad de compilación manual (Python, Bash, Pearl, Ruby):
Crea los archivos y carpetas para recrear la siguiente estructura:
ProgramName-Version/ ProgramName-Version/DEBIAN ProgramName-Version/DEBIAN/control ProgramName-Version/usr/ ProgramName-Version/usr/bin/ ProgramName-Version/usr/bin/your_script
Los scripts ubicados en
/usr/bin/
se llaman directamente desde el terminal, tenga en cuenta que no agregué una extensión al script. También puedes notar que la estructura del paquete deb será la estructura del programa una vez que esté instalado. Por lo tanto, si sigue esta lógica si su programa tiene un solo archivo, puedeProgramName-Version/usr/bin/your_script
directamente enProgramName-Version/usr/bin/your_script
, pero si tiene varios archivos, debe colocarlos enProgramName-Version/usr/share/ProgramName/all your files
y coloque solo un archivo en/usr/bin/
que llamará a sus scripts desde/usr/share/ProgramName/
Cambie todos los permisos de la carpeta a la raíz:
chown root:root -R /path/to/ProgramName-Version
Cambia los permisos del script:
chmod 0755 /path/to/the/script
Finalmente, puede ejecutar:
dpkg -b /path/to/the/ProgramName-Version
y sedpkg -b /path/to/the/ProgramName-Version
su paquete deb! (También puede agregar los scripts post / pre inst y todo lo que desee, funciona como un paquete Debian normal)
Aquí hay un ejemplo del archivo de control
. Solo necesita copiarlo y pegarlo en un archivo vacío llamado "control" y colocarlo en la carpeta DEBIAN
Package: ProgramName
Version: VERSION
Architecture: all
Maintainer: YOUR NAME <EMAIL>
Depends: python2.7, etc , etc,
Installed-Size: in_kb
Homepage: http://foo.com
Description: Here you can put a one line description. This is the short Description.
Here you put the long description, indented by 1 space.
La mayoría de las respuestas publicadas aquí están desactualizadas, afortunadamente recientemente se ha realizado una excelente publicación de Debian wiki, que explica las mejores prácticas actuales y describe cómo crear paquetes de Debian para módulos y aplicaciones de Python.
Tomaría las fuentes de un paquete Debian existente y reemplazaría el paquete real en él con su paquete. Para encontrar una lista de paquetes que dependen de la compatibilidad con Python, haga
apt-cache rdepends python-support
Elija un paquete que sea Architecture: all
, para que sea un paquete de Python puro. Al revisar esta lista, descubrí que, por ejemplo, python-flup podría ser un buen punto de partida. Para obtener la fuente de uno de estos paquetes, haga
apt-get source <package>
Para construirlo, hazlo.
cd <packagesrc>
dpkg-buildpackage -rfakeroot
Cuando lo edite, espere que solo necesite los archivos en la carpeta debian
; Reemplace todas las referencias a flup con su propio nombre de paquete.
Una vez que comience, le tomará un día completarla.