jueves, 19 de febrero de 2009

INSTALACION DE NS2 EN UBUNTU 7.10

Para la instalación del simulador de redes ns-2, consulté varias paginas de google pero ninguna acertaba, ya que al ingresar el comando: sudo apt-get install build-essential autoconf automake libxmu-dev, presentaba los siguientes errores:

Dependencia de paquetes de libc6 y g++:

cesar@cesar:~$ sudo apt-get install build-essential autoconf automake libxmu-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have unmet dependencies:
build-essential: Depends: libc6-dev but it is not going to be installed or
libc-dev
libstdc++6-4.1-dev: Depends: libc6-dev (>= 2.3.6-7) but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).


Para quitar estos errores lo solucioné con el comando aptitude


Para descargar los paquetes correspondientes se elige la opcion g:

Se selecciona el paquete libc6 para su instalación u actualización, donde se instalará con todos los paquetes de dependencia.


Es necesario convertirse en administrador para la instalación del paquete

En la siguiente imagen se muestra el inicio de descarga del paquete


INSTALACION DE NS-2.31


Luego de resolver la dependencia de paquetes seguí los siguientes pasos basándome en esta pagina.

Existen varias formas de instalarar ns-2 pero esta es la que yo seguí y me funcionó perfectamente.

  1. Descargar e instalar ns2.31

$ wget http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-2.31.tar.gz

  • Descomprimir el archivo e ir al directorio donde se descomprimió.

$ tar -xzvf ns-allinone-2.31.tar.gz
$ cd ns-allinone-2.31
$ sudo apt-get install build-essential autoconf automake libxmu-dev

  • Luego correr el siguiente comando para la instalación

$./install


Despues que termine la instalación debe presentar un mensaje como se muestra a continuación:


    También se presentará la información siguiente, que servirá para ayuda de configuración de las variables de entorno. Punto 2



    1. Configurar variables de entorno

    Añadir las siguientes lineas al archivo .bashrc

    $ gedit ~/.bashrc

    Añadir el siguiente codigo al final del archivo. Sustituir
    /home/cesar/” por la ruta de su directorio home, como por ejemplo“/home/su nombre de usuario/

    • # LD_LIBRARY_PATH
      OTCL_LIB=/home/cesar/ns-allinone-2.31/otcl-1.13
      NS2_LIB=/home/cesar/ns-allinone-2.31/lib
      X11_LIB=/usr/X11R6/lib
      USR_LOCAL_LIB=/usr/local/lib
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$X11_LIB:$USR_LOCAL_LIB

      # TCL_LIBRARY
      TCL_LIB=/home/cesar/ns-allinone-2.31/tcl8.4.14/library
      USR_LIB=/usr/lib
      export TCL_LIBRARY=$TCL_LIB:$USR_LIB

      # PATH
      XGRAPH=/home/cesar/ns-allinone-2.31/bin
      XGRAPH=$XGRAPH:/home/cesar/ns-allinone-2.31/tcl8.4.14/unix
      XGRAPH=$XGRAPH:/home/cesar/ns-allinone-2.31/tk8.4.14/unix
      NS=/home/cesar/ns-allinone-2.31/ns-2.31/
      NAM=/home/cesar/ns-allinone-2.31/nam-1.13/
      PATH=$PATH:$XGRAPH:$NS:$NAM
    • Recargar el archivo .bashrc con el siguiente comando:
      $source .bashrc o $ source ~/.bashrc
    • Luego reiniciar el equipo, y despues ejecutar el comando:
      $ ns

    Para terminar se digita exit, si no da ningún error esto prueba que la instalación de ns es correcta



    3. Validación

    Dentro del directorio ns-allinone-2.31:

    $ cd ns-2.31
    $ ./validate

    • Inicio Validación.
      Esto puede tardar varias horas…

    • Fin de la validación

    • Acerca del programa tcl/tk

    Para saber si está instalado correctamente tcl/tk digitar:

    tclsh

    y luego:

    info patchlevel

    • Instalar emacs para editar los archivos .tcl

    $sudo apt-get install emacs

    Si todos los pasos se ejecutaron correctamente y no dió ningún error, se ha instalado el programa ns2


    En una siguiente entrada se mostrará como ejecutar un archivo .tcl...

    PD: Cualquier duda me la pueden hacer conocer, estaré dispuesta a ayudarles en lo que este a mi alcance.

    22 comentarios:

    Cris dijo...
    Este comentario ha sido eliminado por el autor.
    Raquel dijo...

    Creo que olvidé uno de los pasos principales que es la ejecución.
    Para la ejecución de un programa para Ns2 se realiza los siguientes pasos:
    1) ns (nombre.tcl) enter (para ejecutar el programa)
    2) nam (nombrearchivo.nam) enter ( para ver resultados graficamente de la simulación)
    3) xgraph (nombrearchivo1.tr) enter (para ver los resultos mediante gráfica)

    donde nombre es el archivo generado en tcl, nombrearchivo es el archivo .nam para la visualización y nombrearchivo1 es el archivo .tr para ver la traza de resultados, los dos últimos archivos se crean dentro del archivo tcl

    Para más información ingresar a http://nile.wpi.edu/NS/, aqui existen algunos ejemplos para descargar

    T3l31NF0R*UD dijo...

    Hola raquel, me podrias decir por favor donde esta ubicado el .bashrc ya que en una de mis prueba danie mi bash por modificar un bash.baschrc.
    Ademas si me puedes indicar en que parte del archivo incluyo las lineas.

    por otra parte te comento que al darle el comando ns me sale comand not found. que he hecho mal?

    Raquel dijo...

    Pido disculpas por no contestar antes

    Al archivo .bashrc lo puedes encontrar al digitar gedit ~/.bashrc o ingresando directamente a tu usuario lo encuentras con el nombre .bashrc, (si no lo puedes ver vas a la pestaña Ver y seleccionas Mostrar los archivos ocultos) las lineas incluyes al final de todo lo que haya en el archivo.

    El mensaje de not found es porque precisamente no están incluidas las librerías en el archivo .bashrc

    Si sigues los pasos tal como está en el post te aseguro que no vas a tener inconvenientes

    Saludos
    Raquel

    Jorge Fernández H. dijo...

    Hola Raquel, bueno he tratado bastante de instalar el ns2 en ubuntu y creo q ya lo logre sabes pongo tclsh y sale el prompt % bueno, pero no se si estara del todo bien, como puedo probar correr algo en ns2?? tengo q conseguir archivos .tcl?? Ademas mi duda tambien es x q cuando coloco el $ns (enter), no me sale % sino como q llama a otro programa de ubuntu acerca de unos host, algo asi:

    Usage: host [-v] [-a] [-t querytype] [options] name [server]
    Listing: host [-v] [-a] [-t querytype] [options] -l zone [server]
    Hostcount: host [-v] [options] -H [-D] [-E] [-G] zone


    bueno y mas opciones, antes me figuraba "comando no encontrado, lo puedes descargar asi: sudo apt-get install hosts" y pues una vez lo hice, y pos enton sale asi ahora. NO creo q eso tenga q ver con el ns2, bueno raquel, quisiera q me ayudaras como puedo probar si mi instalacion de ns2 esta bien, y como utilizarla lo mas optimo. gracias.

    Raquel dijo...

    En las referencias del final subí 2 ejemplos de ns2 que puedes descargar, uno para red inalámbrica y otro para Lan, están en .tcl
    Para que pruebes si funciona digita:

    ns basico.tcl ó
    ns simulacion.tcl

    y si la instalación esta bien debería correrte automáticamente la simulación, te aparecerá la ventana del archivo .nam

    Con respecto a los mensajes que te aparecen creo que algo está mal en la instalación, si te salia "comando no encontrado" es porque no estaba instalado el ns2 y la sugerencia de "sudo apt-get install hosts" se refería a que ejecutes "sudo apt-get install ns", por lo tanto te sugiero hacer de nuevo todos los pasos

    Saludos!!


    Referencias:
    http://www.4shared.com/file/121354375/dbb70e02/basico.html
    http://www.4shared.com/file/121355917/d6c82a1b/simulacion.html

    Jorge Fernández H. dijo...

    Hola Raquel, sabes he revisado una y otra vez y nada, al parecer he instalado mal el ns, x q cada vez q digito $ns (enter) me salen estas opciones:

    Usage: host [-v] [-a] [-t querytype] [options] name [server]
    Listing: host [-v] [-a] [-t querytype] [options] -l zone [server]
    Hostcount: host [-v] [options] -H [-D] [-E] [-G] zone
    Check soa: host [-v] [options] -C zone
    Addrcheck: host [-v] [options] -A host
    Listing options: [-L level] [-S] [-A] [-p] [-P prefserver] [-N skipzone]
    Common options: [-d] [-f|-F file] [-I chars] [-i|-n] [-q] [-Q] [-T] [-Z]
    Other options: [-c class] [-e] [-m] [-o] [-r] [-R] [-s secs] [-u] [-w]
    Special options: [-O srcaddr] [-j minport] [-J maxport]
    Extended usage: [-x [name ...]] [-X server [name ...]]

    Hago los siguientes seteos (tengo el ns-allinone-2.34):

    # LD_LIBRARY_PATH
    OTCL_LIB=/usr/src/ns-allinone-2.34/otcl-1.13
    NS2_LIB=/usr/src/ns-allinone-2.34/lib
    X11_LIB=/usr/X11R6/lib
    USR_LOCAL_LIB=/usr/local/lib
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$X11_LIB:$USR_LOCAL_LIB

    # TCL_LIBRARY
    TCL_LIB=/usr/src/ns-allinone-2.34/tcl8.4.18/library
    USR_LIB=/usr/lib
    export TCL_LIBRARY=$TCL_LIB:$USR_LIB

    # PATH
    XGRAPH=/usr/src/ns-allinone-2.34/bin
    XGRAPH=$XGRAPH:/usr/src/ns-allinone-2.34/tcl8.4.18/unix
    XGRAPH=$XGRAPH:/usr/src/ns-allinone-2.34/tk8.4.18/unix
    NS=/usr/src/ns-allinone-2.34/ns-2.34/
    NAM=/usr/src/ns-allinone-2.34/nam-1.14/
    PATH=$PATH:$XGRAPH:$NS:$NAM

    actualizo y nada, sigue con la misma opcion, digito para probar con tus ejemplos y resulta:

    rolly@desktop1:~/Escritorio/NS2$ ns basico.tcl
    basico.tcl does not exist (Authoritative answer)
    rolly@desktop1:~/Escritorio/NS2$ ns simulacion.tcl
    simulacion.tcl does not exist (Authoritative answer)

    Como te digo, no se q pasa, pero otras cosas de la instalacion me funcionan x ejemplo digito $nam (enter) y me aparece el entorno del programa, incluso me genera algunos archibos .ns los cuales tienen el codigo fuente en Otcl de lo q diseño en el animador.

    Pero supongo q de todas maneras debe funcionar cuando pongo $ns y pues como ves no esta bien, mi pregunta es ¿donde esta mi error?

    Raquel dijo...

    Pueda que haya algún error en la configuración de variables, te sugiero hacer de nuevo la instalación para que te fijes en los datos que te muestra luego de que termina la instalación de ns2, donde te indica las rutas y las versiones de tcl, tk, ns y nam que se ha instalado.

    No he tenido en ninguna de las instalaciones ese tipo de error pero de acuerdo a lo leído creo que el error proviene de la ejecución del comando "sudo apt-get install hosts".

    He leído en otros posts y lo que puedes hacer es reinstalar el sistema operativo e instalar de nuevo el ns

    Espero que te sirva en algo de ayuda!!

    LeOniD dijo...

    Hola Raquel, gracias por la respuesta... me ha ayudado también, necesitamos una sugerencia, podrías facilitarme tu correo?, el mío es leohm.pe@gmail.com, saludos!!

    Israel dijo...

    Hola Raquel:

    Muchas gracias por el tutorial. Mi instalacion quedo muy bien, menos el nam. Cuando corro los programas, se general los .nam y .tr, pero no los puedo ver. Como puedo saber si el nam esta instalado correctamente?

    Saludos y Gracias

    Raquel dijo...

    Israel

    A que te refieres con que no los puedes ver a .tr y .nam??. Con respecto a nam, para saber si está instalado, abres la terminal y escribes nam, si esta correctamente instalado te aparecerá una ventana de NAM con la bienvenida, muestra la versión, autores, entre otra información.

    Saludos!!

    Unknown dijo...

    hola mi nombre es juan y yo tambien tanía el problema de:

    ns

    Usage: host [-v] [-a] [-t querytype] [options] name [server]
    Listing: host [-v] [-a] [-t querytype] [options] -l zone [server]
    Hostcount: host [-v] [options] -H [-D] [-E] [-G] zone

    para resolverlo desinstale el ns que tenía que corresponde a otro programa, sin embargo seguia apareciendo lo mismo.
    lo que hice fue desinstalar el programa con el siguiente comando

    sudo apt-get purge host

    posterior a eso aplicaba el comando ns y me aparecia comando no encontrado
    Despues de todo volvi a instalar el ns siguiendo los pasos sin embargo hay que observar bien la modificacion del bashrc y verificar que existan las carpetas ruta y librerias
    eso
    ojala les sirva

    Unknown dijo...

    hola Raquel, cuando ejecuto ./install, cuando empieza a compilar el OTcl me da un error y no se a que se debe.. es el siguiente.

    * Build OTcl-1.13
    ============================================================
    No .configure file found in current directory

    luego empieza a chequear todo y luego me da el make failed con el siguiente mensaje


    No explicit static compilation flag; setting V_STATIC to ""
    checking for dlopen in -ldl... yes
    checking for a BSD-compatible install... /usr/bin/install -c
    configure: creating ./config.status
    config.status: creating Makefile
    rm -f libotcl.so otcl.o so_locations
    gcc -c -g -O2 -DNDEBUG -DUSE_SHM -fpic -I. -I/usr/src/ns-allinone-2.34/include -I/usr/src/ns-allinone-2.34/include -I/usr/src/ns-allinone-2.34/include -I/include otcl.c
    ld -shared -o libotcl.so otcl.o
    otcl.o: In function `OTclDispatch':
    /usr/src/ns-allinone-2.34/otcl-1.13/otcl.c:495: undefined reference to `__stack_chk_fail_local'
    otcl.o: In function `Otcl_Init':
    /usr/src/ns-allinone-2.34/otcl-1.13/otcl.c:2284: undefined reference to `__stack_chk_fail_local'
    ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined
    ld: final link failed: Nonrepresentable section on output
    make: *** [libotcl.so] Error 1
    otcl-1.13 make failed! Exiting ...

    Unknown dijo...

    problema resuelto.. el otcl tiene problemas con el gcc 4.4 hay q instalar el gcc 4.3 y modificar el makefile.in para que lo utilice

    Raquel dijo...

    Estaba buscando la solución al problema pero veo que ya está solucionado...
    Gracias Joel por tu aporte y por compartir la solución.

    Saludos!!

    Carlos Negron dijo...

    Hola, yo también tuve el problema de que salía:

    xxx.tcl does not exist

    Esto es porque estás haciendo referencia a otro programa... primero te piden instalar "apt-get install host" y con eso instalas un "ns" distinto, que es en realidad un "Name Service".

    La solución es primero borrar eso, con:
    "apt-get purge host"

    Luego no es necesario que rehagas toda la instalación, basta solamente con hacer ./install dentro del directorio de NS.

    Finalmente, indicar cuál es la ruta de acceso al programa NS.
    Para esto primero ir a la carpeta de los ejecutables de NS (cambia la palabra "carlos" según tu PC, y mi versión es 2.34 en Ubuntu 9.04):

    cd /home/carlos/ns-allinone-2.34/bin

    Y luego:

    export PATH=$PATH:/home/carlos/ns-allinone-2.34/bin

    Con eso debería funcionar bien. Espero ayudar mucho.

    Unknown dijo...

    necesito tu ayuda, realize todos los pasos y resulta que no me funciona el nam, que puede estar pasando, de igual manera cuando le doy ejecutar el archivo .tcl me saca un error en tcl-object. Que puede estar pasando.

    Unknown dijo...

    No me funciona el nam y ademas cuando ejecuto el archivo .tcl me sale un error en tcl-object, que puede pasar. espero tu ayuda lo mas pronto posible.

    gracias

    Raquel dijo...

    Estimado,

    En realidad no he tenido inconvenientes con ese tipo de errores, pero me puedes decir en que versión de ubuntu instalaste y cual es la versión de ns2, puede ser que el error esté en la configuración de variables de entorno debido a las diferentes versiones del programa ns2 que existen o que la ruta dada esté incorrecta.

    Podrías mostrar el error exacto que te muestra al ejecutar ns2 (nam y tcl) y las variables de configuración que añadiste al archivo .bashrc??

    Con esa información se te ayudaría a buscar una solución más acertada.

    Saludos..!!

    PD: Hasta que punto te funcionó la instalación como se explica en el post??

    Unknown dijo...

    Hola Raquel:

    Mira el error que me muestra cuando le doy nam es:
    nam:
    [code omitted because of length]
    : no event type or button # or keysym
    while executing
    "bind Listbox {
    %W yview scroll [expr {- (%D / 120) * 4}] units
    }"
    invoked from within
    "if {[tk windowingsystem] eq "classic" || [tk windowingsystem] eq "aqua"} {
    bind Listbox {
    %W yview scroll [expr {- (%D)}] units
    }
    bind Li..."

    De la misma manera cuando ejecuto el archivo .tcl me muestra lo siguiente:

    warning: no class variable Tracefile::debug_

    see tcl-object.tcl in tclcl for info about this warning.

    diana@diana-laptop:~/Escritorio/ns-example$ nam:
    [code omitted because of length]
    : no event type or button # or keysym
    while executing
    "bind Listbox {
    %W yview scroll [expr {- (%D / 120) * 4}] units
    }"
    invoked from within
    "if {[tk windowingsystem] eq "classic" || [tk windowingsystem] eq "aqua"} {
    bind Listbox {
    %W yview scroll [expr {- (%D)}] units
    }
    bind Li..."

    ya lo he desintalado y vuelto a instalar siguiendo cada uno de los pasos y nunca me saca un error, lo estoy nstalando en ubuntu 9.04 y la version del ns2 es la misma yo sigo cada uno de los pasos que tu indicas pero nada.

    Espero nuevamente tu ayuda, gracias

    AH! tu me pediste tambien que te mostrara lo del gedit de bashrc, es este:
    # LD_LIBRARY_PATH
    OTCL_LIB=/home/diana/ns-allinone-2.31/otcl-1.13
    NS2_LIB=/home/diana/ns-allinone-2.31/lib
    X11_LIB=/usr/X11R6/lib
    USR_LOCAL_LIB=/usr/local/lib
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$X11_LIB:$USR_LOCAL_LIB

    # TCL_LIBRARY
    TCL_LIB=/home/diana/ns-allinone-2.31/tcl8.4.14/library
    USR_LIB=/usr/lib
    export TCL_LIBRARY=$TCL_LIB:$USR_LIB

    # PATH
    XGRAPH=/home/diana/ns-allinone-2.31/bin
    XGRAPH=$XGRAPH:/home/diana/ns-allinone-2.31/tcl8.4.14/unix
    XGRAPH=$XGRAPH:/home/diana/ns-allinone-2.31/tk8.4.14/unix
    NS=/home/diana/ns-allinone-2.31/ns-2.31/
    NAM=/home/diana/ns-allinone-2.31/nam-1.13/
    PATH=$PATH:$XGRAPH:$NS:$NAM

    Raquel dijo...

    Por lo visto la configuración de variables está correcta de acuerdo con la versión 2.31 de ns, asi que se descarta la posibilidad de error, pero sería recomendable que instalarás la versión más reciente de ns en Ubuntu 9.04.

    En conclusión, de acuerdo a lo investigado el problema está en la versión 9.04 de Ubuntu ya que ésta provee gcc-4.4 mientras que otcl requiere gcc-4.3

    Para esto tienes que instalar el gcc 3.4 y luego modificar el makefile.in

    En la dirección de abajo describen la instalación de ns 2.33 en Ubuntu 9.04 y como modificar el makefile.in (esto te puede servir ya que tienen los mismos errores)
    http://www.techquark.com/2009/09/install-ns-2-on-ubuntu-904.html

    Espero que te sirva de ayuda y comentas como te fue.
    Saludos..!!

    Unknown dijo...

    Hola Raquel muy bueno tu tutorial, me preguntaba si talvés me podrías ayudar con un ejemplo en ns-2 de un enlace 802.11a, espero puedas ayudarme Gracias.