Logo de AulaDigital

Term Como 4

TERM Como: Poniendo a punto las cosas. Anterior Siguiente Indice

4. Poniendo a punto las cosas.

4.1 Qué necesitas tener de antemano.

Antes de comenzar a construir y usar el TERM debes asegurarte de que tienes incluido el soporte TCP/IP en el kernel. Además, asegúrate de que esté activo el interface loopback de TCP/IP. Si éste es tu caso, puedes seguir con el resto de esta sección.

4.2 Explicación de conceptos.

En las versiones nuevas del term han aparecido dos conceptos nuevos. Estos dos conceptos se explican en los siguientes apartados.

``Sharing'' (compartición).

A partir de la versión 1.16 aparece el concepto de compartir la conexión TERM con otros usuarios. Esto significa que cuando habilitas la característica ``shared'' (compartida), más gente podrá usar la misma conexión TERM que tú estás usando, es decir, cuando estás trabajando en tu máquina remota a través de tu conexión TERM (has usado trsh en tu máquina local para acceder, por ejemplo) otra persona en tu máquina local podrá usar la misma conexión TERM al mismo tiempo para transmitir un fichero con ftp a su cuenta en tu máquina local desde un ftp site de cualquier lugar del mundo.

Cuando deshabilitas la característica ``shared'' (compartida) (o sea, ejecutas TERM en modo privado) tú y solo tú (sin contar a root :-) puede usar la conexión TERM.

Por supuesto, sólo necesitas instalar el ``shared'' TERM en el extremo en el que quieres permitir a la gente usar la misma conexión TERM que tú estés usando. Así que, si otra gente tiene cuenta en tu máquina local y quieren usarlo desde algún lugar de tu red remota habilitas la característica shared en el extremo remoto de tu conexión TERM. De esta forma toda esta gente puede acceder a tu máquina a la vez compartiendo la misma conexión TERM entre sí y contigo mismo. (NOTA: el primer ejemplo necesitaba habilitar la característica shared en el extremo local de la conexión TERM).

NOTA para la instalación como root:

Cuando instalas TERM como root, primero debes crear un grupo TERM (antes de compilar) sin miembros, añadiendo la siguiente línea en /etc/group:

term::16:root

o cualquier otro GID no usado en lugar del 16 si éste ya está en uso.

Después de compilar e instalar coloca al TERM y sus clientes el SGID term:

chgrp term <cliente_term>
chmod g+s <cliente_term>

También cualquier programa que hagas utilizable con TERM debe tener SGID TERM.

``Full TERM networking'' (conexión de red completamente TERM)

A partir de la versión 2.0.0 de TERM se usa el concepto full TERM networking (conexión de red totalmente TERM). Cuando tu única conexión con el mundo exterior es una conexión TERM, tienes una red full TERM (completamente TERM) y deberías compilar el TERM con full TERM networking. En este caso se ha puesto un fichero llamado termnet en el directorio compartido. Esto dice a TERM que tu única conexión con el exterior es a través del TERM.

Cuando también tienes algún otro tipo de conexión de red además de los programas (pasados a TERM) de la conexión TERM, primero intenta que realicen su trabajo usando esta otra conexión. Si ésta falla entonces se invoca el TERM y se intenta realizar el trabajo a través de la conexión TERM. Para aclarar esto, ahora se da un ejemplo en el que el se usa telnet hecho utilizable en TERM. Este telnet debería funcionar con y sin TERM.

telnet localhost

no usa el TERM para conectar, pero

telnet zeus.cs.kun.nl

usará el TERM sólo si no tienes otro tipo de conexión de red.

El full TERM networking también implica el mentir sobre el nombre del host local, diciendo que es el host remoto en su lugar. Además, provoca que bind (0) actúe siempre en el host remoto. En esencia hace que muchos programas puedan usarse sin ir a través del TERM mientras el TERM está corriendo. Desafortunadamente, la mayoría de programas y demonios UDP no funcionarán con TERM sin estos incómodos trucos.

4.3 Compilación del TERM

Si tienes suerte esto sólo debe implicar un make. Sin embargo, lo más probable es que necesites hacer más. Debido a nuevas opciones en las versiones nuevas del TERM (sharing, configure) ahora es un poco más complicado crear el ejecutable del TERM. Hoy en día pueden seguirse un par de caminos para obtener el ejecutable.

Para cubrir todos los caminos a seguir con los que puede construirse el TERM vamos a dividir esta sección en tres partes:

  1. Construir el TERM hasta la versión 1.15
  2. Construir el TERM, versiones 1.16 hasta 1.19
  3. Construir el TERM, versiones 2.0.0 y superiores

Construir el term hasta la versión 1.15

Para estas versiones del term, la compilación no debería implicar ejecutar más que estos comandos

make DO=install OS-type
make installman

Encontrarás el term, sus clientes y las páginas de manual (man) cómodamente construidas e instaladas y listas para usar después de esto.

Además, necesitarás crear un directorio $HOME/term. Este directorio lo usará el term para buscar su fichero termrc.

La única cosa que puedes querer hacer es cambiar algunos de los paths en el Makefile, o cambiar alguna opción del compilador.

Construir el term, versiones 1.16 hasta 1.19

Para construir el term ahora puedes elegir una de las siguientes formas:

  1. Como un usuario normal, construir el term en modo privado
  2. Como un usuario normal, construir el term en modo shared
  3. Como root, construir el term en modo privado
  4. Como root, construir el term en modo shared

Abajo se explicará cómo habilitar/deshabilitar la opción shared durante la compilación del term

  1. Eres un usuario normal (sin acceso de root) y NO quieres COMPARTIR (SHARE) la conexión term con otros usuarios. Como usuario que no quiere compartir la conexión term con otros usuarios deberías hacer lo siguiente para construir el term:
       make DO=install OS-type
       make installman
    
    Después de esto, el term, sus clientes y las páginas de manual están generados e instalados. Además, necesitarás crear un directorio $HOME/term. Este directorio lo usará el term para buscar su fichero termrc. La única cosa que puedes querer hacer es cambiar algunos de los paths en el Makefile o cambiar algún parámetro del compilador.
  2. Eres un usuario normal (sin acceso de root) y SI quieres COMPARTIR (SHARE) la conexión term con otros usuarios. Como usuario que quiere compartir la conexión term con otros usuarios deberías hacer lo siguiente para construir el term:
       make DO=installshare USERSHARE=$HOME/term OS-type
       make installman
    
    Después de esto, el term, sus clientes y las páginas de manual estarán compiladas e instaladas. Además, tendrás un directorio $HOME/term (por defecto) con permisos drwxrwxr-x. En este directorio encontrarás al menos el socket usado por el term para sus conexiones (tmp/private/socket=).
  3. Eres root y NO quieres COMPARTIR (SHARE) la conexión term con otros usuarios. Como root que no quiere compartir la conexión term con otros usuarios deberías hacer lo siguiente para construir el term:
       make DO=install OS-type
       make installman
    
    Después de esto, el term, sus clientes y las páginas de manual estarán compiladas e instaladas. Además, tendrás un directorio llamado /usr/local/lib/term (por defecto) con permisos drwxr-xr-x. En este directorio encontrarás al menos el socket usado por el term para sus conexiones (tmp/private/socket=).
  4. Eres root y quieres COMPARTIR (SHARE) la conexión term. Primero, asegúrate de haber leído la sección sobre ``sharing'' anterior. Como root que quiere compartir la conexión term deberías hacer lo siguiente:
       make DO=installshare OS-type
       make installman
    
    Después de esto, el term, sus clientes y las páginas de manual estarán compiladas e instaladas. Además, tendrás un directorio llamado /usr/local/lib/term (por defecto) con permisos drwxrwxr-x. En este directorio encontrarás al menos el socket usado por el term para sus conexiones (tmp/private/socket=).

Construir el TERM, versiones 2.0.0 y superiores

Primero asegúrate de haber leído la sección sobre ``full term networking'' de arriba.

Para las versiones de term 2.0.0 y superiores hay muchas formas de generar el binario del term y los clientes. Todo esto puede hacerse tanto por root como por un usuario cualquiera:

  1. Generar el term en modo privado sin full term networking
  2. Generar el term en modo privado con full term networking
  3. Generar el term en modo shared sin full term networking
  4. Generar el term en modo shared con full term networking

En estas versiones de term ha aparecido una nueva forma de compilar, usando el script configure. Cuando se ejecuta configure éste chequea en que sistema operativo estás tratando de instalar el term, si el directorio origen está disponible o no, y si hay puesta alguna opción runtime. De acuerdo con las cosas encontradas configure crea entonces un Makefile usando Makefile.in que se entrega con el paquete del term.

Dos de las opciones más importantes para configure son --root y --user que establecen si el term será instalado por root o por un usuario cualquiera. Se pueden usar otras opciones para instalar el term de la forma que quieras (con paths no estándar, por ejemplo).

  1. Generar el term en modo privado sin full term networking Para generar el term de este modo necesitas ejecutar los siguientes comandos (tanto para root como para cualquiera):
       make install installman
    
    Esto genera los binarios, instalándolos junto con las páginas de manual.
  2. Generar el term en modo privado con full term networking Para generar el term de este modo necesitas ejecutar los siguientes comandos (tanto para el root como para cualquiera):
       make installnet installman
    
    Esto genera los binarios, instalándolos junto con las páginas de manual.
  3. Generar el term en modo shared sin full term networking Para generar el term de este modo necesitas ejecutar los siguientes comandos (tanto para el root como para cualquiera):
       make share installman
    
    Esto genera los binarios e instala estos binarios y las páginas de manual.
  4. Generar el term en modo shared con full term networking Para generar el term de este modo necesitas ejecutar los siguientes comandos (tanto para el root como para cualquiera):
       make share installnet installman  
    
    Esto genera los binarios e instala estos binarios y las páginas de manual.

4.4 client.a, libtermnet.a, libtermnet.sa, libtermnet.so

Con el term se suministra una librería con funciones para clientes term.

Hasta la versión 1.16 esta libreria se llamaba client.a. Durante la compilación de term se generaba esta librería, que después se usaba en la compilación de los clientes term. No se instalaba en otro directorio.

A partir de la versión 1.16 se cambió el nombre de la librería por libtermnet.a. Hasta la versión 1.19 esta librería se crea en el directorio term y después se usa durante la compilación de los clientes term. No se instala en otro directorio.

A partir de la versión 2.0.0, además de libtermnet.a también se crean libtermnet.so y libtermnet.sa (libreria shared y librería exported initialized) durante la instalación del paquete term. Durante la instalación de todas las partes del paquete, estos tres ficheros de librerías se instalan en el directorio /usr/local/lib (por defecto). Y después se hace un enlace desde libtermnet.so.2 a libtermnet.so.2.x.x.

Finalmente se ejecuta ldconfig para crear los enlaces necesarios y el caché (para uso del enlazador dinámico, ld.so) para las librerías compartidas más recientes que se encuentran en los directorios especificados en la línea de comandos, en el fichero /etc/ld.so.conf, y en los directorios permitidos (/usr/lib y /lib).

Si la instalación se hace correctamente, los tres ficheros de librería podrán ser usados por los clientes de term que son generados con librerías dinámicas en lugar de estáticas. Estas librerías también se pueden usar ahora para portar tu software propio a fin de poderlo usar con el term (ver más adelante).

4.5 Estableciendo variables de entorno.

term reconoce un par de variables de entorno que pueden definir los usuarios. Las tres primeras de éstas que se explicarán son:

  • TERMDIR
  • TERMSHARE
  • TERMMODE

Definiendo estas variables puedes controlar el modo en que se ejecuta el term.

Para versiones del term hasta la 1.15 sólo es importante la variable TERMDIR (estas versiones no reconocen el modo shared). Para estas versiones TERMDIR se debería definir como sigue:

setenv TERMDIR $HOME     # csh o tcsh
export TERMDIR=$HOME     # bash

A partir de la versión 1.16 term también reconoce las variables TERMSHARE y TERMMODE. Con estas variables se le puede indicar al term que funcione en modo privado o en modo compartido. Explicaremos como definir las variables para ambos modos.

  1. Ejecutar term en modo privado puede hacerse definiendo las variables TERMDIR y TERMMODE de la siguiente forma: Para csh o tcsh:
       setenv TERMDIR $HOME
       setenv TERMMODE 0
    
    Para bash:
     
    export TERMDIR=$HOME export TERMMODE=0 
    
  2. Si quieres usar el term en modo compartido hay dos formas de definir las variables:
    1. Si term se instala como un programa SUID sólo se debe definir TERMMODE. (README en el paquete del term).
            setenv TERMMODE 'numero'    # csh o tcsh
            export TERMMODE='numero'    # bash
      
      En 'numero' debe ponerse 1 si se está usando una versión del term entre la 1.16 y la 1.19 (README.share en el paquete del term) y 2 si se está usando la versión de term 2.0.0 o superior (README.security en el paquete del term).
    2. Si term se instala como un programa SGID las variables se deben definir del siguiente modo: Para csh o tcsh:
            setenv TERMMODE 1
            setenv TERMDIR /usr/local/lib/term
            setenv TERMSHARE $TERMDIR
      
      Para bash:
         export TERMMODE=1
         export TERMDIR=/usr/local/lib/term
         export TERMSHARE=$TERMDIR
      
      Poniendo las variables de esta forma hará posible que se ejecuten clientes viejos (linkados con una versión antigua del client.a) en modo compartido (shared).

A partir de la versión 2.0.0, term también reconoce la variable TERMSERVER. Se necesita definir esta variable cuando se tienen varios módems y mas de una conexión a la vez. Para especificar que conexión usar, se debe ejecutar el term con un nombre de servidor:

 
nohup term -v /dev/modem1 Connection1 & nohup term -v /dev/modem2 Connection2 &

Los usuarios deberían definir la variable TERMSERVER con el nombre de conexión que quieran usar:

 
setenv TERMSERVER Connection1           # csh o tcsh  
export TERMSERVER=Connection2           # bash  

4.6 Probar el TERM

Haz un make test (o make termtest para versiones nuevas del term) para generar el demonio de prueba del term. (term)test funciona ejecutando dos copias del term en tu sistema, una ``local'' y una ``remota''. Ambas leerán tu termrc; de modo que puedas ajustar su comportamiento. Ahora ejecuta (term)test. Deberías poder hacer un trsh y un tupload. Prueba con:

 tupload ./term /usr/tmp

deberías de conseguir tener una copia del binario term en /usr/tmp ). La salida del term local debería aparecer en local.log y la remota en remote.log. Puedes ejecutar term con el parámetro -d255 para poder registrar lo que ocurra en estos ficheros, o habilitar el debugging en tu termrc.

NOTA: Ejecuta el test como ./test para evitar el test del sistema.

4.7 TERM y los programas de comunicaciones.

Antes de poder usar term, tienes que establecer una conexión vía módem usando un programa de comunicaciones como kermit o seyon. En la documentación del programa encontrarás qué tienes que hacer para conectarte con la máquina remota.

Cuando hayas establecido la conexión y quieras ejecutar term, necesitas suspender o salir del programa de comunicaciones sin cerrar la conexión.

A continuación explicaré cómo hacer esto con algunos programas de comunicaciones.

kermit

Iniciar term cuando se usa kermit es fácil. En el prompt local de kermit se teclea ``suspend'', de modo que volverás al prompt de Linux. Desde este prompt puedes ya establecer la conexión term.

seyon

Una forma de iniciar chequeo de línea o TERM cuando usas seyon es poner linecheck y TERM en el menú Transfer (controlado por el fichero $HOME/.seyon/protocols).

Añade al fichero $HOME/.seyon/protocols lo siguiente:

"Line check" "$cd /tmp; linecheck"
"Term" "$term -c off -w 10 -t 150 -s 38400 -l $HOME/tlog"

Ahora, cuando inicies linecheck o term en la máquina local, selecciona en el menú Transfer el ítem ``Line Check'' o ``Term''.

Por supuesto, también podrías usar el botón de comando de shell y teclear en el cuadro de diálogo que se te abrirá los comandos linecheck o term. Esto mismo hace redirección automática al comando.

4.8 Hacer un enlace transparente.

Presumiblemente, puedes establecer una conexión módem entre tus hosts local y remoto. Típicamente lo que haces es, llamar a algún tipo de servidor de terminales y conectas con tu host remoto a través de él.

También sueles usar para ello software de terminal, como kermit o seyon para comunicar con tu módem (los ejemplos de este documento usan el kermit, ya que es el que usa el autor). Si estás teniendo problemas con el módem, o con el software de terminal, echa una ojeada al Serial HOWTO; esto debería ayudarte.

Una vez establecido el enlace, querrás hacerlo lo más transparente posible. Comprueba los comandos en el servidor de terminal (help o ? suele ser un buen comienzo). Busca la opción 8 bits siempre que sea posible. Esto puede implicar cambiar la forma en que accedes a tu sistema, por ejemplo, si el servidor usa rlogin, tendrás que usarlo poniendo el parámetro -8 para hacerlo transparente.

Especialmente vigila el control de flujo por xon/xoff. No lo necesitas. Intenta habilitar el control de flujo por hardware, rts/cts. Puede que tengas que mirar la documentación de tu módem para saber cómo configurarlo para hacer comunicaciones rts/cts de 8 bits.

4.9 Ejecutar linecheck

ATENCIÓN: En algunos documentos las opciones de línea de comandos para linecheck se citan en orden incorrecto. He comprobado esto y he hallado que el orden de las opciones que menciono aquí abajo es el correcto.

NOTA: a partir de la versión de term 2.3.0 linecheck ya no necesitará tener el nombre del fichero de log en la línea de comandos. Escribirá su salida al fichero linecheck.log en el directorio desde el que se ejecute linecheck.

linecheck es un programa que se entrega con el term. Comprueba la transparencia de un enlace, produciendo información de configuración que necesita el term para funcionar correctamente. linecheck manda todos los 256 caracteres de 8 bits posibles sobre el enlace y verifica que cada uno se transmite correctamente.

Hay que configurar term para manejar caracteres que no pueden ser transmitidos por el enlace, y linecheck determina cuáles son estos caracteres. Debes usar linecheck después de haber establecido un enlace módem lo más transparente posible. Para correr linecheck haz lo siguiente:

  1. En el sistema remoto, ejecuta linecheck linecheck.log
  2. Vuelve a tu sistema local y suspende tu programa de comunicaciones (^Z en kermit) (si no te robará caracteres del linecheck).
  3. En el sistema local ejecuta
    linecheck linecheck.log > /dev/modem < /dev/modem
    

Cuando termine linecheck encontrarás un conjunto de números al final de los ficheros linecheck.log. Estos son los que deberías poner como 'escape' en el termrc al otro lado del enlace. Por ejemplo, mi linecheck.log local decía que 'escape' era el 29 y 157. Así que, mi termrc local escapa (evita) estos caracteres y mi termrc remoto ninguno. Si se escapa (evita) un carácter en un extremo, también debo ignorarlo (ignore) en el otro; así que, en este ejemplo, debería ignorar 29 y 157 en mi sistema remoto.

Si linecheck se cuelga, prueba a usar

linecheck linecheck.log 17 19

en el sistema remoto, y

linecheck linecheck.log 17 19 > /dev/modem < /dev/modem

en el sistema local. Esto evitará tus caracteres de xon/xoff (control de flujo), que colgarán tu línea si tienes control de flujo por software. Si soluciona los problemas de cuelgues, tendrás que escapar/ignorar 17/19 en ambos termrc. Si tu servidor de terminal tiene otros caracteres que lo cuelguen, prueba a correr lineckeck con esos caracteres escapados como el ejemplo de arriba. Puedes marcar esos caracteres si linecheck se cuelga. Si es este el caso, mátalo, y luego mira en los logs. Los últimos caracteres transmitidos es probable que sean los culpables. Vuelve a intentarlo escapando estos caracteres.

En resumen, mi termrc local tiene las líneas:

escape 29
escape 157

y mi termrc remoto tiene las líneas:

ignore 29
ignore 157

ya que mi linecheck.log remoto decía que 'escape 29 y 157'.

4.10 Prueba a correr el TERM

Accede a tu sistema remoto, haciendo el enlace lo más transparente posible (si no lo has hecho aún). Arranca term en el extremo remoto. Yo lo hago así:

 
exec term -r -l $HOME/tlog -s 38400 -c off -w 10 -t 150

Vamos a desgranar las opciones una por una (ten en cuenta que con igual facilidad podría poner estas opciones en mi termrc. Lo hice así porque evitaba tener que editar un fichero mientras ponía a punto el term).

exec implica destruir la shell actual, corriendo en su lugar el programa indicado. Ejecuto las cosas con exec porque no pretendo usar mi shell de login de nuevo; estaría desperdiciando memoria. Si estás depurando el enlace y eres capaz de abortar el term remoto, puede que no quieras hacer el exec.

La opción -r es necesaria sólo en un extremo. term verá a este extremo como el remoto de la conexión (ten en cuenta que el extremo remoto del term puede ser tu propia máquina local). Si no usas esta opción en un extremo los clientes de term se caerán espontáneamente.

-l $HOME/tlog. Esto registra los errores en el fichero tlog en mi directorio home. Muy útil para depurar. No hay razón para no ponerlo.

-s 38400 : Tengo un módem 14400, con compresión. Para ratios de compresión óptimos, necesito poder mandar bits al pipe lo más rápido posible. Para un módem más lento, debería ser un número menor. Fíjate que si tienes una UART 16450 en tu puerto serie, las velocidades altas pueden provocar pérdida de datos por desbordamiento del chip de tu puerto serie. term se recuperará de esto, pero si ves muchos mensajes en tu log, (o recibes ``overrun warnings'' en versiones del kernel 0.99pl15 en adelante) necesitarás reducir este número.

-c off : Desactiva la compresión de datos. Tengo un módem con compresión, y no necesito comprimir las cosas dos veces.

-w 10 -t 150 : De nuevo estas son opciones para optimizar mi enlace de módem rápido. Pongo mi ventana a 10 y mi timeout a 150. Esto lo hago de acuerdo con la recomendación de la página de manual de term_setup.

Vuelve sobre tu máquina local y suspende tu programa de comunicaciones (^Z en kermit). No querrás que esté corriendo a la vez que term, ya que lucharía con el term por el puerto serie. Si puedes convencer a tu módem de que no cuelgue cuando salgas de tu programa de comunicaciones (cuando cambia el DTR), podrías salir del programa en este punto.

Ahora lanza el term local. Yo uso:

 
term -c off -l $HOME/tlog -s 38400 -w 10 -t 150 < /dev/modem > /dev/modem &

Necesito decirle al term donde está el módem; Así que apunto tanto la entrada como la salida estándar a /dev/modem (eso es lo que hacen < y >). También lo hago correr en background; de modo que puedo usar esta consola para otra cosa si la necesito.

term debería de funcionar ya :-). Prueba con trsh, a ver qué pasa. Si se cuelga, o el enlace parece lento, echa una ojeada a tu tlog en ambos extremos. ¿Tienes timeouts o mensajes de error? Si es así, entonces es que has configurado algo mal. Vuélvelo a intentar (después de que hayas terminado de leer esto :-). Observa que la conexión no parecerá muy rápida, especialmente si usas compresión - será un poco a saltos. La velocidad real aparece durante transmisiones de ficheros y similares.

4.11 Terminar tu conexión term

Muy probablemente, una vez que hayas hecho un montón de trabajo usando el term, querrás terminar el trabajo y deshacer tu conexión term. Para poder hacer esto hay cuatro formas:

  1. Matar (kill) los programas term a ambos lados de la conexión. Esta es la forma menos recomendada de terminar tu conexión.
  2. Una forma mejor es ejecutar el siguiente comando localmente:
       echo '00000' > /dev/modem
    
    Esto terminará la conexión term correctamente. Funcionará en todas las versiones del term. Hay que asegurarse de que la secuencia contiene al menos cinco ceros.
  3. En el termrc de versiones 2.0.0 y superiores se puede incluir una sentencia terminate <cualquier cadena>. Esto establece una cadena que hará que salga del term (``00000'' por defecto). Debe ser de una longitud de 5 caracteres por lo menos, para evitar terminaciones accidentales.
  4. A partir de la versión 1.14 existe el programa tshutdown (realmente para la versión 1.14 está disponible como patch, para versiones más recientes se incluye en el paquete). Ejecutando tshutdown, la conexión term finalizará perfectamente.

4.12 Cómo eliminar TERM de tus particiones.

Ok, me habéis preguntado por esto. Así que voy a presentar los pasos a seguir para desinstalar term:

  • Eliminar directorios con su contenido. Dependiendo de cómo hayas instalado term, tendrás uno o más de los siguientes directorios:
    $HOME/.term/termrc
    $HOME/.term/termrc.<servidor>
    $HOME/term/termrc
    $HOME/term/termrc.<servidor>
    /usr/local/lib/term/termrc
    /usr/local/lib/term/termrc.<servidor>
    /etc/termrc
    /etc/termrc.<servidor>
    
    Estos directorios pueden eliminarse con su contenido, usando
    /bin/rm -rf 
    
  • El grupo term. En algún momento de la instalación tuviste que crear un grupo llamado term. Busca en /etc/group una línea con ese grupo y bórrala.
  • Los ejecutables y paquetes del term. Esta es la parte más difícil. Para los ejecutables, busca en el directorio /usr/local/bin o $HOME/bin. Con otros ejecutables que hiciste compatibles con term no puedo ayudarte. Necesitas saber qué ejecutables modificaste para saber cuáles borrar. No olvides ficheros de configuración y otros que vengan con esos ejecutables.
  • Ficheros de librería. Lo mejor es teclear lo siguiente:
    cd /
    find . -name libtermnet* -exec /bin/rm {} \;
    
    Esto encontrará y borrará todos los ficheros de librería relacionados por todo tu disco duro.
  • Ficheros include. De nuevo, lo mejor es que teclees esto:
    cd /
    find . -name termnet.h -exec /bin/rm {} \;
    
  • Manuales en línea. Cuando instalaste term los manuales se colocaron en uno de los directorios siguientes:
    /usr/local/man/man1
    /usr/local/man/cat1
    $HOME/man/man1
    $HOME/man/cat1
    
    Debes buscar por lo menos las siguientes páginas de manual: term, term_clients, term_setup, tdownload, linecheck, trdate, trdated, termrc, termtest, tmon, tredir, trsh, tshutdown, tudpredir, tupload, txconnand y por último, tiptest.
  • Directorio temporal del usuario. Borra el directorio /usr/tmp/private y sus contenidos.

Después de todo este ejercicio, podrás estar bastante seguro de que has borrado todo lo relacionado con term.

4.13 Optimización de la conexión

Una vez que consigues ejecutar el term, puede que quieras intentar optimizar las cosas. Una buena forma de medir la velocidad de tu enlace es corriendo tmon en una ventana mientras transfieres un fichero en otra. Intenta con ficheros de texto y ficheros comprimidos suficientemente grandes; el texto a secas debería dar un factor del doble de rápido que el comprimido. Los parámetros que querrás ajustar son baudrate [velocidad del puerto] (-s), compression (-c), windows [tamaño de ventana] (-w), timeout [tiempo de espera] (-t) y retrain (-A).

Cuidado con el parámetro retrain. Con la versión 1.19 del term obtengo peor rendimiento, que va de un 80% a un 90% comparado con la ejecución del term sin el parámetro retrain. No está claro si se trata de un bug en la versión 1.19 y si este problema existe sólo en la versión 1.19 del term.

Baudrate: el número máximo de bits por segundo que el term intentará enviar a través del enlace serie. term evitará enviar caracteres a una velocidad superior a ésta. Por defecto se usa la velocidad del puerto serie del ordenador, pero hay que avisar que ésta puede ser demasiado alta si el módem funciona a una velocidad menor sobre la línea telefónica. La opción baudrate está indicada para sistemas que almacenan en buffer la salida al módem. Durante la configuración y el ajuste es mejor usar un baudrate pequeño que uno que sea demasiado grande. Para enlaces de alta velocidad (> 38400), ponerlo sin límite será probablemente ventajoso. Esto se consigue usando el valor off. term confiará entonces solamente en el kernel para controlar el flujo.

Compression: necesitarás poner en on si no tienes un módem con compresión. Si tienes un módem de éstos, pon compression off, de lo contrario estarás comprimiendo las cosas dos veces, lo que habitualmente incrementa la cantidad de datos transmitidos. Los módems con compresión son aquellos que usan los protocolos MNP-5 o V42.bis. Observa la documentación del módem y el mensaje del módem cuando conecta.

Windows: este es el número de unidades de datos, o paquetes, que el term enviará por la línea antes de obtener reconocimiento (ack) desde el term remoto. Para módems rápidos, aumentar esto puede ser una mejora; para enlaces más lentos esto puede saturar el extremo remoto.

Timeout: el tiempo que el term esperará a un ack. Si has aumentado windows y estás teniendo timeouts en el fichero de log, prueba a aumentar este valor.

Para un 14400/V42.bis, yo uso -c off -w 10 -t 150. Consigo unos 1700 cps en ficheros comprimidos y 3500 cps en ficheros ASCII usando tupload.

4.14 Resolución de problemas

En esta sección se dan algunas opiniones sobre qué comprobar cuando se tienen problemas ejecutando el term o alguno de sus clientes.

  • ¿Has borrado la estructura de directorios del term? En las nuevas versiones del term ha cambiado un par de veces la estructura del árbol de directorios bajo /usr/local/lib/term. Si no te has dado cuenta de ello, puedes haber causado todo tipo de mensajes de error. Lo mejor es borrar el árbol de directorios bajo /usr/local/lib/term (salvando tu termrc) y entonces instalar la nueva versión. De esta forma evitas pelearte con un árbol de directorios lioso.
  • ¿Borraste los sockets antiguos? Cuando pongas al día tu versión del term borra todos los sockets (llamados socket=) creados por el term. El no hacer esto puede causar extraños problemas. Para averiguar qué socket está atendiendo el term, puedes usar el programa netstat.
  • ¿El term no compila correctamente en SunOS 4.1.3? Has configurado el term con ./configure --user. Durante la compilación estás teniendo un error de ensamblador, relacionado con que el parámetro -k no es reconocido. La razón de este error es desconocida. La solución es configurar el term con librerías estáticas. Es decir, tendrás que hacer ./configure --user --static y entonces seguir con el proceso de compilación como sueles hacerlo normalmente. Ahora el term debería compilar correctamente.
  • ¿El termtest te está presentando el error:
    Term: failed to connect to term socket '/root/.term/sockettest'
    
    (Term: falla la conexión al socket de term '/root/.term/sockettest') Cuando termtest corre espera que el ejecutable term esté en el mismo sitio que éste. Cuando haces un make install antes de ejecutar termtest, el binario de TERM es movido a /usr/local/bin (u otro similar). Para ello hay que hacer algo parecido a esto:
    ln -s /usr/local/bin/term /usr/src/term-<numero_de_version>/term
    
  • ¿Estás usando el binario adecuado? El term se ha modificado bastante, y muchos sistemas tienen versiones diferentes de los programas rondando por ellos. Asegúrate de que estás usando la versión correcta. Esto también se aplica al linecheck. Puede usarse una orden del tipo bash -a, o el comando whereis para saber qué programa se está ejecutando. Las versiones de term posteriores a 1.11 deberían mostrar su número de versión al comenzar. (Aunque la versión 1.14 dice ser la 1.12. Sigh.)
  • ¿Tienes el termrc correcto en el lugar adecuado? Dependiendo de la versión de term que estés corriendo y el modo en que instalaste el term (siendo root o usuario) este fichero debe estar en uno de los siguientes directorios:
       /usr/local/lib/term/termrc
       /usr/local/lib/term/termrc.<servidor>
       /etc/termrc
       /etc/termrc.<servidor>
    
    Algunos sistemas tienen termrc's preinstalados; asegúrate de que no estén antes de instalar. Si estás ejecutando cosas como root, busca en /.term. El term crea ficheros (sockets en realidad) mientras se ejecuta; de modo que tiene su propio directorio, ~/.term, donde está el fichero termrc (nótese, ¡no hay un punto precediendo a termrc!).
  • ¿Encuentra el term su fichero termrc? Cuando inicias term a ambos lados, deberías ver mensajes como este de abajo:
       Term version: 2.2.9
       Reading file:  /usr/local/lib/term/termrc
       Using shared mode.
    
    Cuando falta la segunda línea el term no puede encontrar su fichero termrc y sabes que algo ha ido mal durante la instalación (a no ser que no estés usando el fichero termrc y estés introduciendo todas las opciones en línea de comandos :-). Comprueba la localización y los permisos del fichero termrc en el lugar donde term no puede encontrar su fichero termrc.
  • ¿Es correcta la sintaxis de las entradas en el termrc? Un problema común es que la gente que necesite usar el escape e ignorar ciertos caracteres, los introduzca así en el fichero termrc:
    escape 1,4,30,255
    ignore 1,4,30,255
    
    Aunque si term no reconoce lo anterior tampoco avisará de ello. Simplemente lo ignorará. Cuando tienes que ignorar o ``escapar'' caracteres, tendrás que ponerlos en diferentes líneas del fichero termrc, cada línea comenzando por la palabra escape o ignore. Sólo cuando haya que hacerlo con varios caracteres deberá hacerse de la siguiente forma:
    escape 16-19      # escapar caracteres 16, 17, 18, 19
    escape 23         # 23
    escape 255        # ...y 255
    ignore 16-19      # ignorar caracteres 16, 17, 18, 19
    ignore 23         # 23
    ignore 255        # ...y 255
    
  • ¿Está montado tu directorio term o .term con NFS? Si tu directorio term o .term está montado con NFS necesitas poner el parámetro -DTERM_NFS_DIR en la línea CFLAGS del Makefile. Aunque, al autor el usar este parámetro le produce un error de compilación al compilar term 1.19 en una máquina con SunOS 4.*.
  • ¿Pertenecen los ficheros y directorios al usuario y grupo correcto y tienen los permisos adecuados? Esto no debería ser problema ya que estos permisos se ponen durante la fase de instalación. Sin embargo, cuando portas tus propios programas a term debes prevenirte de ello. También cuando se cambia el modo en que esta trabajando term (por ejemplo de modo privado a modo shared) deben adaptarse las propiedades y permisos de ficheros y directorios.
  • ¿Estás obteniendo el error gethostbyname: <hostname>: Non-authoritative `host not found', o `server failed'? Para resolver esto tienes que chequear las siguientes cosas:
    1. ¿Está configurado correctamente el fichero /etc/hosts? <hostname> no es el nombre de tu host (las versiones viejas de SLS y algunas viejas y nuevas versiones Slackware se entregan con el hostname darkstar, por ejemplo). Cambia esto en el fichero. Debe contener al menos una línea como la que sigue (el formato se describe encima de ella):
      # Formato del fichero:
      #  IP_NUMBER            HOSTNAME        ALIASES
      #
      # Este es el nombre de tu maquina, en primer lugar, seguido de aliases
      #
      127.0.0.1       localhost       linuxpc.dominio  linuxpc
      
      Cuando tu única conexión con el exterior se hace mediante term, la línea anterior es la única que debe aparecer en /etc/hosts. No pongas otros nodos de Internet en ese fichero, pues term no trabajará con ellos.
    2. ¿Puede leer todo el mundo tus ficheros /etc/rc* y /etc/resolv.conf?
      chmod ugo+r
      
    3. Por último, asegúrate de haber instalado el loopback-interface de TCP/IP en tu máquina. Puedes comprobarlo ejecutando el comando ifconfig. Cuando está instalado dicho interface, se verá lo siguiente en pantalla:
      lo        Link encap:Local Loopback
                inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.255.255.0
                UP BROADCAST LOOPBACK RUNNING  MTU:2000  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0
                TX packets:4984 errors:0 dropped:0 overruns:0
      
      Durante el arranque también puedes ver qué protocolos se utilizan. En mi máquina aparece lo siguiente:
      IP Protocols: ICMP, UDP, TCP
      
      Para más información sobre cómo instalar el loopback-interface, léete el NET-HOWTO.
  • ¿Estás obteniendo todo tipo de mensajes timed out en tus ficheros log de term? Esto significa que tu conexión de term no está optimizada. Un pequeño número de esos mensajes nunca es problema. Estos son debidos muy posiblemente a que los factores temporales influyen en la conexión física entre tus hosts remoto y local. Cuando tienes un montón de estos mensajes todo el tiempo, tu conexión se ralentizará considerablemente. Tienes que ajustar los parámetros mencionados en la anterior sección optimizando. Además, esta parte de la instalación es un proceso de prueba y error. No se pueden dar unas reglas fijas sobre los valores a colocar en los variados parámetros ya que son muchos los factores que influyen en la conexión. Estos factores difieren entre las conexiones e incluso en el tiempo.
  • ¿No te funcionan los ftp con puertos redirigidos? Es un problema habitual con ftp, que necesita trabajar con los puertos 20 y 21. La única solución es usar una versión TERMificada de ftp o ncftp. Sin embargo, algunas de estas aplicaciones adaptadas tampoco funcionarán.


Anterior Siguiente Indice