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.
Es lo más sencillo y cómodo ya que todo lo han hecho ya los chicos de MacPorts (gracias):
sudo port install dynamips
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
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