Distribución del Software Diplomado en Software Libre Ernesto Hernández-Novich <emhn@usb.ve> Universidad Simón Bolívar Copyright c 2010 Hernández-Novich (USB) Distribución del Software 2010 1 / 9
Distribución del Software Distribución del código fuente. Acceso sólo lectura al repositorio de control de versiones. Paquete (.tar.gz,.tar.bz2) contentivo del código fuente y del programa auxiliar de instalación. Distribución de ejecutables. Dependiente de la arquitectura de uso! Utilice el sistema de paquetes de la distribución Linux. Ambas cosas aplican para la documentación, que debe poder ser instalada por separado. Respete el Filesystem Hierarchy Standard. Hernández-Novich (USB) Distribución del Software 2010 2 / 9
Distribución de Código Fuente Para aplicaciones que requieren compilación antes de ejecutar (C, C++, Java, Fortran,... ). Utilice las herramientas autoconf Generación semiautomática de Makefiles para las instrucciones de compilación. Generación semiautomática de un script de shell que configura automáticamente según la plataforma destino. El instalador hace./configure ; make ; make install Ofrezca make test para ejecutar las pruebas. Otros lenguajes compilados tienen mecanismos similares (Haskell tiene Cabal)... úselos! Evite escribir scripts a la medida. Hernández-Novich (USB) Distribución del Software 2010 3 / 9
Distribución de Código Fuente Para aplicaciones que no requieren compilación antes de ejecutar (Perl, Python, Ruby, PHP,... ). Utilice las herramientas provistas por el lenguaje para preparar un paquete de distribución. Generación automática del programa de instalación de software. Integración correcta de su aplicación con el resto de las librerías y aplicaciones en el sistema anfitrión. La flexibilidad del sistema de empaquetamiento varía según el lenguaje Perl dispone de Extutils::Makemaker, Module::Build y Module::Install para distribuir a través de CPAN. Ruby dispone de Gems. PHP dispone de PEAR. Evite escribir scripts a la medida. Hernández-Novich (USB) Distribución del Software 2010 4 / 9
Caso de Estudio: Perl Creación de una aplicación con librerías Se prepara un directorio de trabajo $ module s t a r t e r module=mi : : Modulo \ a u t h o r=" E r n e s t o Hernandez Novich " \ e m a i l=emhn@usb. ve $ l s Mi Modulo/ Changes l i b M a k e f i l e. PL MANIFEST README t Escriba sus librerías dentro de lib y sus pruebas dentro de t. Agregue un directorio bin para ejecutables si es necesario. Adecúe Makefile.PL agregando las configuraciones adicionales según Extutils::Makemaker o Module::Install. Construya el paquete de distribución $ p e r l M a k e f i l e. PL ; make d i s t Hernández-Novich (USB) Distribución del Software 2010 5 / 9
Distribución de ejecutables Si el ejecutable es compilado, cada plataforma de hardware requiere un paquete diferente (i386, amd64, alpha,... ). El sistema debe cumplir con las dependencias requisito de su aplicación Librerías necesarias para compilar y ejecutar. Servicios auxiliares (servidor web, servidor de correo,... ). Programas auxiliares (L A TEX, CUPS, DocBook,... ). Su aplicación debe cooperar con el sistema existente. Debe ser fácil actualizar preservando o transformando las configuraciones. Componentización. Hernández-Novich (USB) Distribución del Software 2010 6 / 9
Caso de Estudio: Debian Un paquete es el componente mínimo instalable Formato.deb (archivo ar comprimido con scripts adicionales). Detalle de Dependencias, Sugerencias y Recomendaciones. Un paquete fuente describe como crear uno o muchos paquetes Basado en el código fuente original. Directorio debian incluye las instrucciones de creación del paquete. Sistema de aplicación de parches (quilt) para adecuar el paquete al FHS y al Debian Policy. Herramientas automatizadas de construcción y control de calidad (pbuilder, debuild, lintian). Herramientas para construcción de repositorios (reprepro). APT y sus aplicaciones (aptitude, synaptic) son el front-end para el usuario (buscar, descargar, instalar). aptitude install foo Hernández-Novich (USB) Distribución del Software 2010 7 / 9
Caso de Estudio: Debian Produzca su aplicación en formato fuente (para compilar o no) y distribuya su.tar.gz. Emplee las herramientas provistas por Debian para armar paquetes de forma automática o semi-automática dh-make para aplicaciones C/C++. dh-make-perl para módulos y aplicaciones Perl desde CPAN. dh-make-php para PHP Pear. ruby-pkg-tools para Gems Ruby. debhelper para asistir en las operaciones simples de instalación y configuración. Incluya la ejecución de las pruebas como parte del aprovisionamiento del paquete de instalación. Mantenga la configuración del paquete en un VCS y emplee las herramientas auxiliares Debian para construcción automática del paquete (svn-buildpackage, git-buildpackage,... ). Hernández-Novich (USB) Distribución del Software 2010 8 / 9
Construyendo la comunidad Sitio Web con información de la aplicación Acceso web sólo lectura al repositorio del VCS. Acceso web al WiKi de documentación. Acceso a algún sistema de tickets para manejar reportes de error o solicitudes de mejora. Listas de correo Para hacer anuncios de liberaciones o intenciones de avance. Para discusiones técnicas entre desarrolladores. Para apoyo a usuarios finales y administradores. Sea honesto, claro y directo con los problemas de seguridad. Hernández-Novich (USB) Distribución del Software 2010 9 / 9
Referencias Filesystem Hierarchy Standard http://www.pathname.com/fhs/ Herramientas Autoconf http://www.gnu.org/software/autoconf/autoconf.html Debian Policy http://www.debian.org/doc/debian-policy/ Hernández-Novich (USB) Distribución del Software 2010 10 / 9