Compilar Dynamips

En este artículo voy a mostrar como compilar Dynamip para Mac (tanto intel como PowerPC, ambas requieren MacPorts instalado) y para Linux Debian, pero es bastante sencillo compilar para cualquier otra plataforma y hay mucha documentación en internet.

Compilar para Mac OSX (Vía MacPorts)

Es lo más sencillo y cómodo ya que todo lo han hecho ya los chicos de MacPorts (gracias):

sudo port install dynamips

Compilar para Mac OSX (Power PC)

Primero creamos un directorio temporal:

mkdir dynamips

cd dynamips

Instalamos las librerías necesarias:

sudo port install libpcap

sudo port install libelf

y descargamos el source de dynamips (en este ejemplo la versión 0.2.8-RC2) y lo descomprimimos:

wget http://www.ipflow.utc.fr/dynamips/dynamips-0.2.8-RC2.tar.gz

tar xvfz dynamips-0.2.8-RC2.tar.gz

cd dynamips-0.2.8-RC2

Para poder compilar en PowerPC hay que realizar algunos cambios en el Makefile, aquí tenéis el patch:

--- dynamips-0.2.8-RC2/Makefile 2007-10-14 10:43:07.000000000 +0200
+++ Makefile    2008-01-11 01:03:01.000000000 +0100
@@ -3,7 +3,8 @@

 # Replace x86 by amd64 for a build on x86_64.
 # Use "nojit" for architectures that are not x86 or x86_64.
-DYNAMIPS_ARCH?=x86
+# DYNAMIPS_ARCH?=x86
+DYNAMIPS_ARCH?=nojit

 # Change this to 0 if your system doesn't support RFC 2553 extensions
 HAS_RFC2553?=1
@@ -62,8 +63,10 @@
    DESTDIR=/usr
 else
 ifeq ($(shell uname -s), Darwin)
-   CFLAGS+=-I/usr/local/include -mdynamic-no-pic -D_FILE_OFFSET_BITS=64
-   LIBS=-L/usr/local/lib -L. -ldl -lelf -lpthread
+   LOCALBASE?=/opt/local
+   CFLAGS+=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/libelf 
+      -I/usr/local/include -mdynamic-no-pic -D_FILE_OFFSET_BITS=64
+   LIBS=-L$(LOCALBASE)/lib -L/usr/local/lib -L. -ldl -lelf -lpthread
 else
 ifeq ($(shell uname -s), SunOS)
    CFLAGS+=-I/usr/local/include -DINADDR_NONE=0xFFFFFFFF

Una vez aplicado el patch al Makefile podemos proceder a compilar:

make

Saldrán muchos warnings que realmente no sé que significan ni si es correcto ignorarlos, pero a pesar de todo el programa funciona de forma correcta.

Ya solo queda pasarle el comando strip para reducir el tamaño del ejecutable y ponerle permisos de ejecución.

strip dynamips

chmod +x dynamips

Compilar para Linux (Debian)

Primero creamos un directorio temporal:

mkdir dynamips

cd dynamips

Instalamos las librerías necesarias:

apt-get install libpcap0.8 libpcap0.8-dev

apt-get install libelf1 libelf-dev

apt-get install debhelper

y descargamos el source de dynamips (en este ejemplo la versión 0.2.8-RC2) y lo descomprimimos:

wget http://www.ipflow.utc.fr/dynamips/dynamips-0.2.8-RC2.tar.gz

tar xvfz dynamips-0.2.8-RC2.tar.gz

cd dynamips-0.2.8-RC2

Como dynamips viene preparado para construir un paquete .DEB, procedemos a realizar dicho paquete (a mi me hizo falta hace el chmod aunque no está de más hacerlo):

chmod +x debian/rules

dpkg-buildpackage

La versión que nos genera es la 0.2.8-RC2 pero como los fichero Debian no han sido modificados el fichero resultante tendrá como versión 0.2.6-RC2, es solo el nombre del fichero .DEB. También posiblemente nos dé algún warning, especialmente del fichero .DSC que podemos ignorar.

Para que el fichero nos indique la versión correcta debemos editar antes de compilar los 2 sigueintes fichero y poner la versión correcta:

vim debian/files

vim debian/changelog

Ya solo queda instalar (o actualizar) el paquete como otro cualquiera

cd ..

dpkg -i dynamips_0.2.8-RC2-1_i386.deb

Retro

Lugares

Redes

Sistemas

Varios