6.2 Creación de paquetes RPM

El formato RPM es estándar en muchas distribuciones de Linux populares, incluyendo Red Hat, SuSE y Mandrake. Si tu entorno habitual se basa en RPM, es trivial crear paquetes RPM para otros usuarios de la misma distribución. Dependiendo de la complejidad de la distribución de módulos y de las diferencias entre distribuciones de Linux, puede que seas capaz de crear RPMs para otras distribuciones basadas en RPM.

El modo usual de crear un RPM de tu distribución de módulos es ejecutar bdist_rpm:

python setup.py bdist_rpm
o la orden bdist con la opción --format:
python setup.py bdist --formats=rpm
La primera permite especificar opciones específicas de RPM, la segunda permite especificar más de un formato en una sola ejecución. Si necesitas las dos cosas, puedes especificar múltiples órdenes bdist_* y sus opciones:
python setup.py bdist_rpm --packager="Juana Pérez <jperez@python.net>" \
                bdist_wininst --target_version="2.0"

La creación de paquetes RPM va dirigida por un fichero .spec, del mismo modo en que el guion de configuración dirige las Distutils. Para facilitar la vida en la medida de lo posible, la orden bdist_rpm crea normalmente un fichero .spec basado en la información proporcionada en el guion de configuración, la línea de órdenes o cualquier fichero de configuración de Distutils. Del guion de configuración se derivan varias opciones y secciones del fichero .spec:
opción o sección del fichero .spec de RPM  Opción del guion de configuración de Distutils 
Name name
Resumen (en el preámbulo) descripción
Versión versión
Vendor author y author_email o
& maintainer y maintainer_email
Copyright licence
Url url
%description (section) long_description

Además hay tres opciones más en los ficheros .spec sin correspondencia en las opciones del guion de configuración. La mayoría de ellas se gestionan mediante opciones de la orden bdist_rpm:
opción o sección del fichero .spec de RPM  opción bdist_rpm  valor predeterminado 
Release release ``1''
Group group ``Development/Libraries''
Vendor vendor (see above)
Packager packager (none)
Provides provides (none)
Requires requires (none)
Conflicts conflicts (none)
Obsoletes obsoletes (none)
Distribution distribution_name (none)
BuildRequires build_requires (none)
Icon icon (none)
Obviamente, proporcionar estas opciones en la línea de órdenes sería tedioso y propenso a errores, por lo que resulta mejor ponerlas en el fichero de configuración de la instalación, setup.cfg, consultar la sección . Si distribuyes o empaquetas muchas distribuciones de módulos de Python, es posible que te convenga poner las opciones que se apliquen a todas ellas en tu fichero personal de configuración de Distutils ( /.pydistutils.cfg).

Hay tres pasos para generar un paquete binario RPM y todos ellos los gestiona Distutils automáticamente:

  1. crear un fichero .spec, que describe el paquete (análogo al guion de configuración de Distutils; mucha de la información de este fichero acaba en .spec)
  2. crear el RPM fuente
  3. crear el RPM ``binario'' (que puede contener, o no, código binario, dependiendo de si tu distribución de módulos contiene extensiones de Python)
RPM suele juntar los dos últimos pasos. Al usar Distutils, se suelen juntar los tres.

Si lo deseas, puedes separar estos tres pasos. Puedes usar la opción --spec-only para hacer que bdist_rpm sólo cree el fichero .spec y termine. En este caso, el fichero .spec quedará en el ``directorio de distribución'', normalmente dist/, pero se puede personalizar mediante la opción --dist-dir. Normalmente, bdist_rpm deja el fichero .spec en un directorio temporal bastante profundo

** this isn't implemented yet--is it needed?! ** También se puede especificar un fichero .spec a medida con la opción --spec-file. Utilizada junto con --spec-only, permite personalizar el fichero .spec manualmente:

> python setup.py bdist_rpm --spec-only
# ...edit dist/FooBar-1.0.spec
> python setup.py bdist_rpm --spec-file=dist/FooBar-1.0.spec
Puede que sea mejor sobreescribir la orden bdist_rpm estándar con una que escriba exactamente lo deseado en el fichero .spec Consulta la sección  para obtener información sobre la extensión de las Distutils.


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