usar que librerias instalar como actualizar python debian packaging distutils debhelper

que - instalar librerias python en ubuntu



¿Forma estándar de crear paquetes Debian para distribuir programas Python? (4)

Hay muchísima información sobre cómo hacer esto, pero dado que "hay más de una manera de despellejar a un gato" , y todos los tutoriales / manuales que cubren un poco del proceso parecen hacer ciertas suposiciones que son diferentes de otras. tutoriales, todavía no logré entenderlo.

Hasta ahora esto es lo que creo que entendí.

  1. Mi objetivo final debería ser crear un paquete .deb "binario". Tal paquete será independiente de la plataforma (32/64 bit) ya que todos los programas de Python son tales.
  2. Para crear un paquete "binario", primero necesito crear un paquete fuente.
  3. Para crear el paquete fuente, puedo usar CDBS o debhelper . Debhelper es la forma recomendada para principiantes.
  4. El núcleo de la creación de un paquete fuente está poblando el directorio DEBIAN en el directorio fuente con una serie de archivos que aclaran dónde se deben copiar los archivos, qué esquema de derechos de autor y licencias están sujetos, qué dependencias tienen, etc.
  5. El paso # 4 se puede automatizar en gran medida el comando dh_make si el origen de python también viene con una secuencia de comandos setup.py de setup.py .

Ahora mis preguntas:

  1. ¿Es correcto mi entendimiento del proceso? ¿Hay algo que me falta, o algo que me haya pasado mal?
  2. El paso # 5 es realmente el más confuso para mí: específicamente, los dos puntos que me resultan más oscuros son:
    • ¿Cómo escribo un script setup.py que instala un programa independiente? EDITAR: Por programa independiente me refiero a un programa destinado a ser utilizado por un usuario de escritorio (a diferencia de un módulo que entiendo como una colección de funcionalidad para ser utilizado por otro software después de haber sido importado). En mi caso específico, realmente necesitaría dos de esos "programas": el software principal y una utilidad separada (en efecto, un segundo "programa" que debería estar en el mismo paquete que el otro).
    • ¿Cuáles son las características específicas de tal script para los paquetes DEB? La documentación oficial solo parece tratar con RPM y Windows ...

Por cierto: estas son las mejores fuentes de información que podría encontrar hasta ahora. Si tienes algo mejor que esto, ¡por favor comparte! :)


Hay varias bibliotecas que abstraen todos los pasos necesarios y le permiten transformar su paquete python en un paquete Debian con un solo comando.

Suponiendo que su paquete python ya tiene el setup.py , en el directorio donde se encuentra setup.py , puede usar:

  • stdeb (ya mencionado en esta answer , instalar con pip install stdeb ). Para crear un paquete Debian, ejecute:

    python setup.py --command-packages=stdeb.command bdist_deb

    El archivo .deb salida se ubicará en el directorio bdist_deb .

  • fpm (instalar con gem install --no-ri --no-rdoc fpm ). Para crear un paquete Debian, ejecute:

    fpm -s python -t deb setup.py

  • py2deb (instalar con pip install py2deb ). Para crear un paquete Debian, ejecute:

    py2deb -r . .

Cada una de estas bibliotecas tiene sus propias advertencias, por lo que es posible que desee probar lo que funciona mejor para usted.


La forma correcta de compilar un paquete deb es usar 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 tipo de script binario o con cualquier tipo de script que se ejecute automáticamente sin necesidad de compilación manual (Python, Bash, Pearl, Ruby):

  1. Cree los archivos y las 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 colocados en /usr/bin/ se llaman directamente desde el terminal, tenga en cuenta que no agregué una extensión al script. También puede observar que la estructura del paquete deb será la estructura del programa una vez que esté instalado. Entonces, si sigue esta lógica si su programa tiene un solo archivo, puede colocarlo directamente en ProgramName-Version/usr/bin/your_script , pero si tiene varios archivos, debe colocarlos bajo ProgramName-Version/usr/share/ProgramName/all your files y coloca solo un archivo en /usr/bin/ que llamará a tus scripts desde /usr/share/ProgramName/

  1. Cambie todos los permisos de la carpeta a la raíz:

    chown root:root -R /path/to/ProgramName-Version

  2. Cambiar los permisos del script:

    chmod 0755 /path/to/the/script

  3. Finalmente, puede ejecutar: dpkg -b /path/to/the/ProgramName-Version y se dpkg -b /path/to/the/ProgramName-Version su paquete dpkg -b /path/to/the/ProgramName-Version . (También puede agregar las secuencias de comandos 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 ponerlo 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.