TERM - 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:
- Construir el
TERMhasta la versión 1.15 - Construir el
TERM, versiones 1.16 hasta 1.19 - 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:
- Como un usuario normal, construir el
termen modo privado - Como un usuario normal, construir el
termen modo shared - Como
root, construir eltermen modo privado - Como
root, construir eltermen modo shared
Abajo se explicará cómo habilitar/deshabilitar la opción shared durante la compilación del term
- Eres un usuario normal (sin acceso de
root) y NO quieres COMPARTIR (SHARE) la conexióntermcon otros usuarios. Como usuario que no quiere compartir la conexióntermcon otros usuarios deberías hacer lo siguiente para construir elterm:
Después de esto, elmake DO=install OS-type make installman
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á eltermpara buscar su ficherotermrc. La única cosa que puedes querer hacer es cambiar algunos de los paths en elMakefileo cambiar algún parámetro del compilador. - Eres un usuario normal (sin acceso de
root) y SI quieres COMPARTIR (SHARE) la conexióntermcon otros usuarios. Como usuario que quiere compartir la conexióntermcon otros usuarios deberías hacer lo siguiente para construir elterm:
Después de esto, elmake DO=installshare USERSHARE=$HOME/term OS-type make installman
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 permisosdrwxrwxr-x. En este directorio encontrarás al menos el socket usado por eltermpara sus conexiones (tmp/private/socket=). - Eres
rooty NO quieres COMPARTIR (SHARE) la conexióntermcon otros usuarios. Comorootque no quiere compartir la conexióntermcon otros usuarios deberías hacer lo siguiente para construir elterm:
Después de esto, elmake DO=install OS-type make installman
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 permisosdrwxr-xr-x. En este directorio encontrarás al menos el socket usado por eltermpara sus conexiones (tmp/private/socket=). - Eres
rooty quieres COMPARTIR (SHARE) la conexiónterm. Primero, asegúrate de haber leído la sección sobre ``sharing'' anterior. Comorootque quiere compartir la conexióntermdeberías hacer lo siguiente:
Después de esto, elmake DO=installshare OS-type make installman
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 permisosdrwxrwxr-x. En este directorio encontrarás al menos el socket usado por eltermpara 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:
- Generar el
termen modo privado sin full term networking - Generar el
termen modo privado con full term networking - Generar el
termen modo shared sin full term networking - Generar el
termen 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).
- Generar el
termen modo privado sin full term networking Para generar eltermde este modo necesitas ejecutar los siguientes comandos (tanto pararootcomo para cualquiera):
Esto genera los binarios, instalándolos junto con las páginas de manual.make install installman
- Generar el
termen modo privado con full term networking Para generar eltermde este modo necesitas ejecutar los siguientes comandos (tanto para elrootcomo para cualquiera):
Esto genera los binarios, instalándolos junto con las páginas de manual.make installnet installman
- Generar el
termen modo shared sin full term networking Para generar eltermde este modo necesitas ejecutar los siguientes comandos (tanto para elrootcomo para cualquiera):
Esto genera los binarios e instala estos binarios y las páginas de manual.make share installman
- Generar el
termen modo shared con full term networking Para generar eltermde este modo necesitas ejecutar los siguientes comandos (tanto para elrootcomo para cualquiera):
Esto genera los binarios e instala estos binarios y las páginas de manual.make share installnet installman
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:
TERMDIRTERMSHARETERMMODE
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.
- Ejecutar
termen modo privado puede hacerse definiendo las variablesTERMDIRyTERMMODEde la siguiente forma: Paracshotcsh:
Parasetenv TERMDIR $HOME setenv TERMMODE 0
bash:export TERMDIR=$HOME export TERMMODE=0
- Si quieres usar el
termen modo compartido hay dos formas de definir las variables:- Si
termse instala como un programaSUIDsólo se debe definirTERMMODE. (READMEen el paquete delterm).
Ensetenv TERMMODE 'numero' # csh o tcsh export TERMMODE='numero' # bash'numero'debe ponerse 1 si se está usando una versión deltermentre la 1.16 y la 1.19 (README.shareen el paquete delterm) y 2 si se está usando la versión determ2.0.0o superior (README.securityen el paquete delterm). - Si
termse instala como un programaSGIDlas variables se deben definir del siguiente modo: Paracshotcsh:
Parasetenv TERMMODE 1 setenv TERMDIR /usr/local/lib/term setenv TERMSHARE $TERMDIRbash:
Poniendo las variables de esta forma hará posible que se ejecuten clientes viejos (linkados con una versión antigua delexport TERMMODE=1 export TERMDIR=/usr/local/lib/term export TERMSHARE=$TERMDIR
client.a) en modo compartido (shared).
- Si
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:
- En el sistema remoto, ejecuta
linecheck linecheck.log - Vuelve a tu sistema local y suspende tu programa de comunicaciones (
^Zenkermit) (si no te robará caracteres dellinecheck). - 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:
- Matar (
kill) los programasterma ambos lados de la conexión. Esta es la forma menos recomendada de terminar tu conexión. - Una forma mejor es ejecutar el siguiente comando localmente:
Esto terminará la conexiónecho '00000' > /dev/modem
termcorrectamente. Funcionará en todas las versiones delterm. Hay que asegurarse de que la secuencia contiene al menos cinco ceros. - En el
termrcde versiones 2.0.0 y superiores se puede incluir una sentenciaterminate <cualquier cadena>. Esto establece una cadena que hará que salga delterm(``00000'' por defecto). Debe ser de una longitud de 5 caracteres por lo menos, para evitar terminaciones accidentales. - 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). Ejecutandotshutdown, la conexióntermfinalizará 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:
Estos directorios pueden eliminarse con su contenido, usando$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>
/bin/rm -rf
- El grupo term. En algún momento de la instalación tuviste que crear un grupo llamado term. Busca en
/etc/groupuna 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/bino$HOME/bin. Con otros ejecutables que hiciste compatibles contermno 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:
Esto encontrará y borrará todos los ficheros de librería relacionados por todo tu disco duro.cd / find . -name libtermnet* -exec /bin/rm {} \; - Ficheros
include. De nuevo, lo mejor es que teclees esto:cd / find . -name termnet.h -exec /bin/rm {} \; - Manuales en línea. Cuando instalaste
termlos manuales se colocaron en uno de los directorios siguientes:
Debes buscar por lo menos las siguientes páginas de manual:/usr/local/man/man1 /usr/local/man/cat1 $HOME/man/man1 $HOME/man/cat1
term, term_clients, term_setup, tdownload, linecheck, trdate, trdated, termrc, termtest, tmon, tredir, trsh, tshutdown, tudpredir, tupload, txconnandy por último,tiptest. - Directorio temporal del usuario. Borra el directorio
/usr/tmp/privatey 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 tutermrc) 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
termborra todos los sockets (llamadossocket=) creados por elterm. El no hacer esto puede causar extraños problemas. Para averiguar qué socket está atendiendo elterm, puedes usar el programanetstat. - ¿El
termno compila correctamente en SunOS 4.1.3? Has configurado eltermcon./configure --user. Durante la compilación estás teniendo un error de ensamblador, relacionado con que el parámetro-kno es reconocido. La razón de este error es desconocida. La solución es configurar eltermcon librerías estáticas. Es decir, tendrás que hacer./configure --user --staticy entonces seguir con el proceso de compilación como sueles hacerlo normalmente. Ahora eltermdebería compilar correctamente. - ¿El
termtestte está presentando el error:
(Term: falla la conexión al socket deTerm: failed to connect to term socket '/root/.term/sockettest'
term '/root/.term/sockettest') Cuandotermtestcorre espera que el ejecutabletermesté en el mismo sitio que éste. Cuando haces unmake installantes de ejecutartermtest, el binario deTERMes 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
termse 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 allinecheck. Puede usarse una orden del tipobash -a, o el comandowhereispara saber qué programa se está ejecutando. Las versiones determposteriores 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
termrccorrecto en el lugar adecuado? Dependiendo de la versión determque estés corriendo y el modo en que instalaste elterm(siendorooto usuario) este fichero debe estar en uno de los siguientes directorios:
Algunos sistemas tienen/usr/local/lib/term/termrc /usr/local/lib/term/termrc.<servidor> /etc/termrc /etc/termrc.<servidor>
termrc's preinstalados; asegúrate de que no estén antes de instalar. Si estás ejecutando cosas comoroot, busca en/.term. Eltermcrea ficheros (sockets en realidad) mientras se ejecuta; de modo que tiene su propio directorio,~/.term, donde está el ficherotermrc(nótese, ¡no hay un punto precediendo atermrc!). - ¿Encuentra el
termsu ficherotermrc? Cuando iniciasterma ambos lados, deberías ver mensajes como este de abajo:
Cuando falta la segunda línea elTerm version: 2.2.9 Reading file: /usr/local/lib/term/termrc Using shared mode.
termno puede encontrar su ficherotermrcy sabes que algo ha ido mal durante la instalación (a no ser que no estés usando el ficherotermrcy estés introduciendo todas las opciones en línea de comandos:-). Comprueba la localización y los permisos del ficherotermrcen el lugar dondetermno puede encontrar su ficherotermrc. - ¿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 ficherotermrc:
Aunque siescape 1,4,30,255 ignore 1,4,30,255
termno 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 ficherotermrc, cada línea comenzando por la palabraescapeoignore. 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
termo.termcon NFS? Si tu directoriotermo.termestá montado con NFS necesitas poner el parámetro-DTERM_NFS_DIRen la líneaCFLAGSdelMakefile. Aunque, al autor el usar este parámetro le produce un error de compilación al compilarterm1.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
termdebes prevenirte de ello. También cuando se cambia el modo en que esta trabajandoterm(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:- ¿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 elhostnamedarkstar, 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):
Cuando tu única conexión con el exterior se hace mediante# 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
term, la línea anterior es la única que debe aparecer en/etc/hosts. No pongas otros nodos de Internet en ese fichero, puestermno trabajará con ellos. - ¿Puede leer todo el mundo tus ficheros
/etc/rc*y/etc/resolv.conf?chmod ugo+r
- 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:
Durante el arranque también puedes ver qué protocolos se utilizan. En mi máquina aparece lo siguiente: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
Para más información sobre cómo instalar el loopback-interface, léete el NET-HOWTO.IP Protocols: ICMP, UDP, TCP
- ¿Está configurado correctamente el fichero
- ¿Estás obteniendo todo tipo de mensajes
timed outen tus ficheros log determ? Esto significa que tu conexión determno 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
ftpcon puertos redirigidos? Es un problema habitual conftp, que necesita trabajar con los puertos 20 y 21. La única solución es usar una versiónTERMificada deftponcftp. Sin embargo, algunas de estas aplicaciones adaptadas tampoco funcionarán.
|
Opiniona sobre 'TERM - Poniendo a punto las cosas' (0)
Opina sobre este tutorial |
