Capítulo 19
Configuración del lector de noticias
Los lectores de noticias están pensados para ofrecer al usuario un acceso fácil a las funciones de un sistema de noticias, tales como publicar artículos, o purgar los contenidos de un grupo de una manera cómoda. El mayor o menor acierto en cumplir este objetivo es objeto de interminables discusiones en los grupos de noticias.
Algunos de los lectores disponibles que han sido portados a Linux. A continuación se describirá la instalación básica para tres de los mas populares: tin, trn, y nn.
Uno de los lectores más efectivos es
$ find /var/spool/news -name '[0-9]*' -exec cat {} \; | more
Así es como los unixeros a ultranza leen sus noticias.
La mayoría de los lectores de noticias, sin embargo, son mucho mas sofisticados. Generalmente ofrecen un interfaz a pantalla completa con niveles separados para mostrar todos los grupos a los que el usuario esta suscrito, para mostrar una lista de todos los artículos de un grupo, y para artículos individuales.
En el nivel del grupo, la mayoría de los lectores muestran una lista de artículos en la que aparece el tema de los mismos y el autor. En los grupos grandes es imposible para el usuario caer en la cuenta de los artículos que se refieren unos a otros, aunque es posible identificar las respuestas a un artículo anterior.
Una respuesta normalmente repite el titulo del artículo original precedido por "Re: ".
Adicionalmente, el identificativo del mensaje al que se responde puede indicarse en el campo References:. Ordenar los artículos por esos dos criterios genera pequeños árboles llamados hebras1. Una de las tareas al escribir un lector de noticias es diseñar un algoritmo eficiente para ordenar los artículos, ya que el tiempo requerido para ello es proporcional al cuadrado del número de artículos.
_____________________________________________
1 N. del T.: Son los llamados popularmente threads
No discutiremos aquí como se construyen los interfaces de usuario. Todos los lectores actualmente disponibles para Linux tienen una buena función de ayuda, así que el usuario puede apañárselas solo.
En lo sucesivo, solo trataremos cuestiones administrativas. La mayoría de ellas relacionadas con la creación de bases de datos y contabilidad.
19.1 Configuración
de tin
19.2 Configuración de trn
19.3 Configuración de nn
El lector mas versátil en lo que al tratamiento de las hebras se refiere es tin. Fue escrito por Iain Lea siguiendo el modelo de un lector anterior llamado tas.2 Ordena las hebras en el momento en el que el usuario accede al grupo, y es muy rápido haciéndolo, salvo que se haga por NNTP.
En un 486DX50 se tarda unos 30 segundos en ordenar mil artículos, leyéndolos directamente desde el disco. Mediante NNTP con un servidor ocupado, rondaría los cinco minutos.3 Se puede mejorar este tiempo actualizando regularmente los ficheros índice con la opción -u, o llamando a tin con la opción -U.
Normalmente tin guarda la información sobre las hebras en el directorio del usuario, bajo .tin/index. Esto puede ser costoso en términos de espacio en disco, así que es posible que quiera Vd. mantener una sola copia para todos los usuarios. Esto se puede lograr haciendo a tin setuid news, por ejemplo, o algún otro usuario sin privilegios.4 tin guardara todos los ficheros índice bajo /var/spool/news/.index. Para los accesos a ficheros o salidas al shell, volverá a ser del usuario real que lo invocó.5
Una solución mejor es instalar el demonio indexador tind, que se ejecuta como tarea de fondo y actualiza regularmente los ficheros índice. Sin embargo, este demonio no se incluye en ninguna distribución para Linux, así que tendrá que compilarlo Vd. mismo. Si esta Vd. trabajando con una red local con un servidor central de noticias, puede ejecutar tind en el servidor, y hacer que los clientes reciban los índices por NNTP. Esto, por supuesto, requiere una extensión del NNTP. Los parches necesarios para que nntpd soporte esta extensión se incluyen en las fuentes de tin.
_____________________________________________
2 Escrito por Rich Skrenta.
3 El tiempo se reduce drásticamente si el servidor NNTP crea las hebras por sí mismo y permite al cliente recibir estos datos. Un servidor que permite hacer esto es INN-1.4, por ejemplo.
4 Sin embargo, no utilice el usuario nobody. Como norma, ningún fichero o programa debería ser asociado con este usuario.
5 Esta es la razón por la que se obtendrán feos mensajes de error al invocar a tin como superusuario. De todas formas, no se debería trabajar como root, es una cuenta para administración.
La versión de tin incluida en algunas distribuciones de Linux no tiene soporte NNTP, pero la mayoría si lo incorporan. Cuando se le invoca como rtin o con la opción -r, tin trata de conectar con el servidor especificado en el fichero /etc/nntpserver o en la variable de entorno NNTPSERVER. El fichero nntpserver simplemente contiene el nombre del servidor en una sola línea.
trn es también el sucesor de un programa anterior, rn (siglas de read news6). La "t" en su nombre significa threaded7. Fue escrito por Wayne Davidson.
Al contrario que tin, trn no tiene opción para generar bases de datos sobre las hebras en el momento de ejecución. En cambio, usa las bases de datos creadas por un programa llamado mthreads, el cual debe ser ejecutado regularmente desde cron para actualizar los ficheros índice.
No ejecutar mthreads, sin embargo, no significa que no se pueda acceder a los artículos nuevos, solo significa que tendrá Vd. todos esos artículos sobre "ˇˇNovell compra Linux!!" esparcidos por el menú de selección de artículos en vez de una sola hebra que pueda evitar fácilmente.
Para activar la ordenación en hebras de un grupo particular, mthreads se invoca con la lista de grupos desde la línea de comandos. La lista se hace exactamente de la misma manera que la del fichero sys:
mthreads comp,rec,!rec.games.go
ordenará en hebras todos los grupos comp y rec, excepto rec.games.go (la gente que juega al Go no necesita bonitas hebras). Después de esto, simplemente se le invoca sin ninguna opción para que ordene todos los artículos que vayan llegando. El ordenamiento de todos los grupos del fichero active puede ser activado llamando al programa mthreads con la lista de grupos all.
Si recibe Vd. las noticias durante la noche, bastaría con ejecutar mthreads una vez por la mañana, pero también puede hacerlo mas frecuentemente si es necesario. En sistemas con un tráfico muy denso, puede ser deseable ejecutar mthreads como tarea de fondo (modo daemon). Si se le llama al arrancar con la opción -d, se pone como tarea de fondo, comprobando cada diez minutos si han llegado nuevos artículos, y ordenándolos si este es el caso. Para ejecutar mthreads como tarea de fondo, ponga la siguiente línea en el script rc.news:
/usr/local/bin/rn/mthreads -deav
La opción -a hace que mthreads ordene automáticamente los nuevos grupos según se vayan creando. La opción -v habilita los mensajes largos en el archivo de registro, llamado mt.log y situado en el directorio donde este instalado trn.
_____________________________________________
6 N. del T.: Leer noticias.
7 N. del T.: Ordenado en hebras.
Los artículos viejos que ya no estén disponibles en el sistema deben ser eliminados de los ficheros índice regularmente. Por defecto, solo los artículos cuyo número este por debajo de la línea de flotación serán eliminados.8 Los artículos que a pesar de estar por encima de este número hayan caducado (porque tengan el campo Expires: en la cabecera) pueden ser purgados usando la opción -e del programa mthreads. Cuando mthreads esta ejecutándose como tarea de fondo, esta opción hace que use un modo mejorado de purga una vez al día, poco después de la media noche.
nn, escrito por Kim F. Storm, proclama ser un lector cuya última finalidad es no leer noticias. Su nombre significa "No News"9, y su lema es "falta de noticias, buenas noticias. nn es mejor".
Para alcanzar su ambiciosa meta, nn viene equipado con gran cantidad de herramientas de mantenimiento que no solo permiten la creación de hebras, sino también comprobaciones extensivas de la consistencia de tales bases de datos, contabilidad, recopilación de estadísticas, y restricciones de acceso. Existe también un programa de administración llamado nnadmin, que permite llevar a cabo estas tareas interactivamente. Es muy intuitivo, por lo que no profundizaremos estos aspectos, sino que nos limitaremos a la creación de los ficheros índice.
El programa encargado de manejar las bases de datos para nn se llama nnmaster. Generalmente trabaja en modo daemon, invocado desde el script rc.news o rc.inet2. Se le invoca de la siguiente manera:
/usr/local/lib/nn/nnmaster -l -r -C
Esto habilita la indexación para todos los grupos presentes en el fichero active.
De manera equivalente, se puede ejecutar nnmaster periódicamente desde cron, pasándole la lista de grupos sobre la que actuar. Esta lista es muy parecida a la lista de subscripciones del fichero sys, salvo que usa espacios en blanco en vez de comas. En vez del nombre all, se debe usar un argumento vacío de "" para referirse a todos los grupos. Un ejemplo es:
# /usr/local/lib/nn/nnmaster !rec.games.go rec comp
Tenga en cuenta que el orden es significativo: la especificación de grupo que concuerde y este mas a la izquierda es la que vale. Por tanto, si ponemos !rec.games.go después de rec, los artículos de este grupo se indexarían de todos modos.
nn ofrece varios métodos para borrar los artículos caducados de sus bases de datos. El primero es actualizar la base comprobando los directorios de los grupos, y desechando las entradas cuyo artículo correspondiente ya no este disponible. Este es el método por defecto obtenido al invocar a nnmaster con la opción -E. Es razonablemente rápido, a menos que se haga por NNTP.
_____________________________________________
8 Tenga en cuenta que Cnews no actualiza su línea de flotación automáticamente; hay que ejecutar updatemin para ello. Véase el capítulo 17.
9 N. del T.: Sin noticias.
El segundo método actúa exactamente como la opción por defecto de mthreads: solo elimina las entradas referidas a artículos cuyo número esta por debajo de la línea de flotación en el fichero active. Puede ser habilitado con la opción -e.
Finalmente, el tercer método consiste en desechar toda la base de datos y catalogar todos los artículos. Esto puede hacerse pasándole la opción -E3 a nnmaster.
La lista de grupos sobre los que actuar se especifica mediante la opción -F, del mismo modo que se describió anteriormente. Sin embargo, si nnmaster esta ejecutándose como tarea de fondo, hay que matarlo (con la opción -k) antes de proceder a purgar, y reiniciarlo después con las opciones originales. Por lo tanto, los comandos apropiados para purgar los índices de todos los grupos usando el primer método es:
# nnmaster -kF ""
# nnmaster -lrC
Hay muchas mas opciones que pueden ser utilizadas para ajustar el comportamiento de nn. Si le interesa saber como eliminar artículos erróneos o agrupar los artículos resumen, lea la página de manual de nnmaster.
nnmaster se guía usando un fichero llamado GROUPS, situado en /usr/local/lib/nn. Si no existe inicialmente, se crea. Para cada grupo, contiene una línea que comienza con el nombre del mismo, opcionalmente seguido de una anotación de tiempo y diversos indicadores. Es posible editar dichos indicadores para habilitar un determinado comportamiento para el grupo en cuestión, pero no se debe cambiar el orden en que aparecen los grupos.10 Los indicadores permitidos y sus efectos también vienen detallados en la página de manual de nnmaster.
_____________________________________________
10 Esto se debe a que el orden debe coincidir con el del fichero binario MASTER.