6 Creación de distribuciones binarias

Una ``distribución compilada'' se corresponde con los nombres comunes de ``paquete binario'' o ``instalador'' (dependiendo de tu bagaje cultural). No es necesario que sea binaria, sin embargo, porque es posible que sólo contenga código fuente de Python o bytecode. No lo llamamos paquete porque la palabra ya estaba tomada para otra cosa en Python. Instalador es un término específico de Windows. ** do Mac people use it? **

Una distribución compilada es la manera de facilitar más las cosas a los instaladores de la distribución de módulos: para los usuarios de Linux basado en RPM, es un RPM binario; para los usuarios de Windows, un instalador ejecutable; para los usuarios de Debian, un paquete Debian, etc. Por supuesto, nadie será capaz de generar distribuciones para todas las plataformas habidas y por haber, por lo que las Distutils están diseñadas para permitir que los diseñadores de módulos se concentren en su especialidad, escribir código y generar las distribuciones de fuentes, mientras surge una especie nueva, los empaquetadores, para convertir las distribuciones de fuentes en distribuciones para tantas plataformas como sea posible.

Por supuesto, el desarrollador de módulos puede ser su propio empaquetador. Podría ser un voluntario ``de por ahí'' que tuviera acceso a una plataforma a la que no tiene acceso el desarrollador original. Podría, incluso, ser software que periódicamente recopilase las distribuciones de fuentes y las compilase de tantos modos como fuera posible. Independientemente de la especie de la bestia en cuestión, un empaquetador usa el guion de configuración y la familia de órdenes bdist para generar distribuciones compiladas.

Por ejemplo, si ejecuto la siguiente orden en el árbol de fuentes de las Distutils:

python setup.py bdist
las Distutils generan mi distribución de módulos (en este caso, las propias Distutils ), generan un instalación ``falsa'' (también en el directorio build) y crea el tipo de distribución predeterminada de la plataforma. El formato predeterminado para las distribuciones compiladas es un fichero tar ``bobo''4 en Unix y un sencillo instalador ejecutable en Windows.

Por lo tanto, la orden anterior, en un sistema Unix, genera Distutils-0.9.1.plat.tar.gz; descomprimiendo el tar en el sitio correcto se instalan las Distutils, tal y como si se hubiera descargado la distribución de fuentes y se hubiera ejecutado python setup.py install. El sitio correcto es la raíz del sistema de archivos o el directorio prefix de Python, dependiendo de las opciones pasadas a la orden bdist_dumb; por omisión se generan distribuciones bobas relativas a prefix.

Por supuesto, en el caso de las distribuciones de Python puras, esto no supone una ventaja sustancial, pero para las distribuciones no puras, puede suponer el salto entre que alguien sea capaz de usar tus extensiones o no lo sea. Y generar distribuciones compiladas ``listas'', como los paquetes RPM o los instaladores ejecutables de Windows, facilita enormemente las cosas incluso si la distribución no incluye extensiones.

La orden bdist tiene una opción --formats, parecida a la orden sdist, que se puede usar para elegir los tipos de distribución compilada a generar: por ejemplo,

python setup.py bdist --format=zip
crearía, en un sistema Unix Distutils-0.8.plat.zip. Esto, nuevamente, se debería descomprimir en el sitio adecuado para instalar las Distutils.

Los formatos disponibles para distribuciones compiladas son:
Formato  Descripción  Notas 
gztar fichero tar gzipeado (.tar.gz) (1),(3)
ztar fichero tar comprimido (.tar.Z) (3)
tar fichero tar (.tar) (3)
zip fichero zip (.zip) (4)
rpm RPM (5)
srpm RPM de fuentes (5) ** to do! **
wininst fichero ZIP autoextraíble para Windows (2),(6)

Notas:

(1)
predeterminado en Unix
(2)
predeterminado en Windows ** to-do! **
(3)
requiere utilidades externas: tar y gzip, bzip2 o compress
(4)
requiere utilidad zip o el módulo zipfile (que no es parte de la biblioteca estándar de Python)
(5)
requiere utilidad externa rpm, versión 3.0.4 o superior (usa rpm -version para averiguar qué versión tienes)
(6)
** requisitos de bdist_wininst? **

No es necesario usar la orden bdist con la opción --formats, también se puede usar la orden que implementa directamente el formato deseado. Algunos de estas ``sub-órdenes'' bdist generan varios formatos similares; por ejemplo, la orden bdist_dumb genera todos los formatos de archivo ``bobos'' (tar, ztar, gztar y zip) y bdist_rpm genera los RPMs binarios y de fuentes. Las sub-órdenes bdist y los formatos que genera cada una son:
Orden  Formatos 
bdist_dumb tar, ztar, gztar, zip
bdist_rpm rpm, srpm
bdist_wininst wininst

Las siguientes secciones proporcionan detalles de las diferentes órdenes bdist_*.



Notas al pie

... ``bobo''4
el fichero se considera ``bobo'' porque se debe desempaquetar en una ubicación específica para que funcione


Subsecciones

Ver Sobre este documento... para obtener información sobre sugerencias.