You are here

Empaquetar Asterisk para Debian

No hace mucho hablábamos sobre como instalar y mantener Asterisk corriendo en un sistema Debian GNU/Linux, ya comentamos el estado de los repositorios y se aconsejó compilar Asterisk. Aunque es cierto que los gestores de paquetes nos dejan tener un mejor control del software instalado, Eduardo Ferro nos comentaba que otra solución seria construir un paquete Debian.

Si vamos a instalar Asterisk en varias máquinas tener un paquete deb nos va a suponer un ahorro de tiempo, y si por el contrario lo vamos a instalar en un sistema nos permitirá de cualquier modo tener una mejor gestión del software usando las herramientas de la distribución.

Así que manos a la obra, para crear el paquete Asterisk separaremos el soporte H.323 (si fuera necesario lo empaquetaremos aparte) siguiendo la estructura de paquetes Asterisk de Debian Lennny. Usaremos en este caso Asterisk 1.4.21.1

Para crear el paquete usaremos diferentes herramientas, algunas de ellas nos ayudarán en el proceso. Para ello necesitaremos tener instalados los paquetes: dh-make, devscripts, fakeroot, build-essential.

Creamos un directorio de trabajo y allí vamos a descargar y descomprimir Asterisk, el primer paso es "debianizar" y para ello usaremos dh_make (donde especificaremos el correo del mantainer), lo opción "s" indica que vamos a empaquetar software, y "r" hará una copiadel archivo de fuentes original:

dh_make -s -r -e nuestrocorreo@example.com

Maintainer name : root
Email-Address   : nuestrocorreo@example.com
Date            : Sat, 19 Jul 2008 17:27:57 +0200
Package Name    : asterisk
Version         : 1.4.21.1
License         : blank
Using dpatch    : no
Type of Package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now. asterisk
uses a configure script, so you probably don't have to edit the Makefiles.

Para configurar el paquete modificaremos 3 archivos. debian/control donde especificaremos la sección. mantainer, url del proyecto, descripción, dependencias:

Source: asterisk
Section: comm  
Priority: optional
Maintainer: Bytecoders <nuestrocorreo@example.com>
Build-Depends: debhelper (>= 7), autotools-dev
Standards-Version: 3.7.3
Homepage: http://www.asterisk.org/

Package: asterisk
Architecture: i386
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Open Source Private Branch Exchange (PBX)
 Asterisk is an Open Source PBX and telephony toolkit.  It is, in a
 sense, middleware between Internet and telephony channels on the bottom,
 and Internet and telephony applications at the top.
 .
 Asterisk can be used with Voice over IP (SIP, H.323, IAX and more) standards,
 or the Public Switched Telephone Network (PSTN) through supported hardware.
 .
 Supported hardware:
 .
  * All Wildcard (tm) ISDN PRI cards from Digium (http://www.digium.com)
  * HFC-S/HFC-4S-based ISDN BRI cards (Junghanns.NET, beroNet, Digium etc.)
  * All TDM (FXO/FXS) cards from Digium
  * Various clones of Digium cards such as those by OpenVox
  * Xorcom Astribank USB telephony adapter (http://www.xorcom.com)
  * Voicetronix OpenPCI, OpenLine and OpenSwitch cards
  * CAPI-compatible ISDN cards (using the add-on package chan-capi)
  * Full Duplex Sound Card (ALSA or OSS) supported by Linux
  * Tormenta T1/E1 card (http://www.zapatatelephony.org)
  * QuickNet Internet PhoneJack and LineJack (http://www.quicknet.net)
 .
 This is the main package that includes the Asterisk daemon and most channel
 drivers and applications.

debian/changelog nos permite especificar los cambios de la nueva versión:

asterisk (1.4.21.1-1) stable; urgency=low

  * include/asterisk/lock.h: Fix a typo in the non-DEBUG_THREADS
          version of the recently added DEADLOCK_AVOIDANCE() macro. This
          caused the lock to not actually be released, and as a result, not
          avoid deadlocks at all. This resolves the issues reported in the
          last while about Asterisk locking up all over the place (and most
          commonly, in chan_iax2). (closes issue #12927) (closes issue
          #12940) (closes issue #12925) (potentially closes others ...)

 -- Bytecoders <nuestrocorreo@example.com>  Sat, 19 Jul 2008 17:56:43 +0200

En debian/rules modificaremos la línea donde esta el "configure" para añadirle el flag --without-h323 y así no compilaremos chan_h323:

./configure $(CROSS) --without-h323 --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs"

Vamos pues a compilar el código fuente con dpkg-buildpackage, y si hemos seguido las instrucciones debería compilar "del tirón" y acabar con un aviso diciendo que no se han firmado los ficheros .dsc y .changes:

dpkg-buildpackage -rfakeroot
(...)

dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

Al final de este proceso ya tendremos el paquete listo para ser instalado:

dpkg --info asterisk_1.4.21.1-1_i386.deb
 paquete debian nuevo, versión 2.0.
 tamaño 2203340 bytes: archivo de control= 8165 bytes.
    1742 bytes,    32 líneas     control              
   17365 bytes,   249 líneas     md5sums              
 Package: asterisk
 Version: 1.4.21.1-1
 Architecture: i386
 Maintainer: Bytecoders <nuestrocorreo@example.com>
 Installed-Size: 5768
 Depends: libasound2 (>> 1.0.16), libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libgcrypt11 (>= 1.4.0), libgnutls26 (>= 2.4.0-0), libgpg-error0 (>= 1.4), libgsm1 (>= 1.0.12), libiksemel3, libncurses5 (>= 5.6+20071006-3), libogg0 (>= 1.0rc3), libpopt0 (>= 1.10), libssl0.9.8 (>= 0.9.8f-5), libstdc++6 (>= 4.1.1), libvorbis0a (>= 1.1.2), libvorbisenc2 (>= 1.1.2), zlib1g (>= 1:1.1.4)
 Section: comm
 Priority: optional
 Homepage: http://www.asterisk.org/
 Description: Open Source Private Branch Exchange (PBX)
  Asterisk is an Open Source PBX and telephony toolkit.  It is, in a
  sense, middleware between Internet and telephony channels on the bottom,
  and Internet and telephony applications at the top.
  .
  Asterisk can be used with Voice over IP (SIP, H.323, IAX and more) standards,
  or the Public Switched Telephone Network (PSTN) through supported hardware.
  .
  Supported hardware:
  .
   * All Wildcard (tm) ISDN PRI cards from Digium (http://www.digium.com)
   * HFC-S/HFC-4S-based ISDN BRI cards (Junghanns.NET, beroNet, Digium etc.)
   * All TDM (FXO/FXS) cards from Digium
   * Various clones of Digium cards such as those by OpenVox
   * Xorcom Astribank USB telephony adapter (http://www.xorcom.com)
   * Voicetronix OpenPCI, OpenLine and OpenSwitch cards
   * CAPI-compatible ISDN cards (using the add-on package chan-capi)
   * Full Duplex Sound Card (ALSA or OSS) supported by Linux
   * Tormenta T1/E1 card (http://www.zapatatelephony.org)
   * QuickNet Internet PhoneJack and LineJack (http://www.quicknet.net)
  .
  This is the main package that includes the Asterisk daemon and most channel
  drivers and applications.

Existen otras herramientas útiles que nos pueden ayudar a realizar este trabajo, por ejemplo el asistente Debmaker creado por Elio Rojano, y según nos comenta al parecer las últimas versiones van a permitir ya compilarse como paquete deb.

Referencias: Ubuntu-es

Debian: 
Asterisk: 
Qué te parece: 

Comments

Hola disculpa mi ignorancia porque al tener que debianizar hay que remover el H.323 ? es por algo en especial?
o porque no funcionaria el empaquetado?

Me gustaría saber ya que estoy armando mis paquetes para mi distro.

Saludos
Federico Pereira

Hola,

lo hice mayormente para seguir la estructura de los paquetes de Debian.

En Debian exixte el paquete asterisk-h323 que ofrece el chan_h323 pero que se instala aparte de asterisk con el otro paquete siempre que el usuario lo considere necesario.

Es ese el motivo por el cual lo quité, aunque no te debería dar problemas siempre que no tengas instalado o instales el otro paquete asterisk-h323.

Saludos.

Hola! te hago una pregunta, indicas que el proposito de estos pasos es ahorrar tiempo ya que esto serviria para instalaciones de nuevos servidores con la misma distro y misma version de Asterisk??

PD: te felicito por el blog esta muy bueno!

Saludos desde Argentina

Julio