diff --git a/es_ES.ISO8859-1/books/handbook/linuxemu/chapter.sgml b/es_ES.ISO8859-1/books/handbook/linuxemu/chapter.sgml
index 1a4b4a6ab8..c993b3dd3e 100755
--- a/es_ES.ISO8859-1/books/handbook/linuxemu/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/linuxemu/chapter.sgml
@@ -1,24 +1,24 @@
- Emulacion Linux
+ Emulación Linux
- Emulacion Linux
+ Emulación Linux
diff --git a/es_ES.ISO8859-1/books/handbook/mirrors/chapter.sgml b/es_ES.ISO8859-1/books/handbook/mirrors/chapter.sgml
index f5f0059b37..c4db5d5a2e 100755
--- a/es_ES.ISO8859-1/books/handbook/mirrors/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/mirrors/chapter.sgml
@@ -1,29 +1,29 @@
- Obteniendo FreeBSD
+ Cómo obtener FreeBSD
- Obteniendo FreeBSD
+ Cómo obtener FreeBSDServidores FTP
diff --git a/es_ES.ISO8859-1/books/handbook/multimedia/chapter.sgml b/es_ES.ISO8859-1/books/handbook/multimedia/chapter.sgml
index 02013ee62c..127202e229 100644
--- a/es_ES.ISO8859-1/books/handbook/multimedia/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/multimedia/chapter.sgml
@@ -1,582 +1,582 @@
MosesMooreContributed by SonidoSinópsisFreeBSD soporta una amplia variedad de tarjetas de sonido,
lo que permite disfrutar de sonido de alta fidelidad en su
sistema. Ésto incluye la posibilidad de grabar y reproducir
archivos de audio tanto en los formatos MPEG Audio Layer 3
(MP3), WAV y Ogg Vorbis, así como muchos otros.
La Colección de Ports de FreeBSD contiene también aplicaciones
que le permitirán editar audio previamente grabado, añadir efectos
de sonido y controlar dispositivos MIDI.Tras leer éste capítulo usted debería saber:Cómo identificar su tarjeta de sonidoCómo configurar su sistema de modo que su tarjeta
de sonido sea reconocida.Confirmar el funcionamiento de su tarjeta usando
herramientas de muestreo.Cómo enfrentarse a problemas de configuración de sonido.Cómo reproducir y crear archivos MP3.Cómo convertir pistas de audio CD en archivos de datos.Antes de leer éste capítulo debería:Saber configurar e instalar un nuevo kernel ().Identificar el Dispositivo CorrectoPCIISAtarjetas de sonidoAntes de empezar, debería conocer el modelo de su tarjeta,
el chip que usa y si es PCI o ISA. FreeBSD soporta una amplia
gama de tarjetas PCI e ISA. Si no encuentra su tarjeta en la
siguiente lista consulte la página &man.pcm.4; del manual.
Ésta no es una lista completa pero incluye muchas de las
tarjetas más comunes.Crystal 4237, 4236, 4232, 4231Yamaha OPL-SAxOPTi931Ensoniq AudioPCI 1370/1371ESS Solo-1/1ENeoMagic 256AV/ZXSound Blaster Pro, 16, 32, AWE64, AWE128, LiveCreative ViBRA16Advanced Asound 100, 110, and Logic ALS120ES 1868, 1869, 1879, 1888Gravis UltraSoundAureal Vortex 1 or 2kernelconfiguraciónEl driver a usar en el kernel depende del tipo de tarjeta que
vaya a usar. La sección siguiente contiene información sobre qué
añadir a la configuración del kernel que necesita.Tarjetas Creative, Advance, y ESS SoundSi tiene una de las siguientes tarjetas debe añadir:device pcma su archivo de configuración del kernel. Si tiene una tarjeta
ISA PnP también tendrá que añadir:device sbcPara una tarjeta ISA non-PnP añada:device pcm
device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15al archivo de configuración de su kernel. Los detalles de
configuración de arriba son por defecto.
Debería cambiar la IRQ u otros parámetros
para hacerlos coincidir con su tarjeta. Vea la página &man.sbc.4;
del manual para más información.La Sound Blaster Live no está soportada en FreeBSD 4.0 salvo que
se instale un parche, cosa que está fuera del cometido de ésta
sección. Recomendamos que se actualice a la última versión
-STABLE antes de intentar usar ésta tarjeta.Tarjetas Gravis UltraSoundPara una tarjeta PnP ISA, necesitará añadir:device pcm
device guscal archivo de configuración de su kernel. Si tiene una ISA non-PnP
necesitará añadir:device pcm
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13al archivo de configuración de su kernel. Puede necesitar
cambiar la IRQ u otro tipo de datos para que ajusten con su
tarjeta. Vea la página &man.gusc.4; del manual para más
información.Tarjetas Crystal SoundPara tarjetas Crystal necesitará añadir:device pcm
device csaal archivo de configuración de su kernel.Soporte GenéricoPara tarjetas PnP ISA o tarjetas PCI, necesitará
añadir:device pcmal su archivo de configuración de su kernel. Si tiene una
tarjeta ISA non-PnP que no tenga un bridge driver tendrá
que añadir:device pcm0 at isa? irq 10 drq 1 flags 0x0a su archivo de configuración del kernel. Puede necesitar
cambiar la IRQ u otros parámetros para que ajusten con su
tarjeta.Tarjetas de Sonido integradasAlgunos sistemas con dispositivos de sonido integrados
en la placa base pueden requerir la siguiente opción en el
fichero de configuración del kernel:options PNPBIOSRecompilar el KernelUna vez conseguido el archivo de configuración del kernel
que necesita debe recompilar el kernel. Por favor consulte
el capítulo del manual
para más información.
- Creando y Probando Nodos de Dispositivoss
+ Crear y Probar Nodos de Dispositivosnodos de dispositivosTras reiniciar, acceda al sistema y escriba dmesg | grep pcm tal y como se muestra aquí:&prompt.root; dmesg | grep pcm
pcm0: <SB16 DSP 4.11> on sbc0La salida que muestre su sistema puede ser diferente. Si no hay
dispositivos pcm en la salida del comando
hay algún error en los pasos previos. Si le sucede ésto vuelva a su
archivo de configuración del kernel y asegúrese de que ha elegido
el dispositivo adecuado. Consulte la sección de problemas para
opciones adicionales.Si al ejecutar el comando anterior encontró pcm0 ejecute lo siguiente
como root:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV snd0Si encontró pcm1 haga igual que
que en el paso anterior reemplazando
snd0 con
snd1.Los comandos anteriores no van
a crear dispositivos
/dev/snd!MAKEDEV creará un grupo de device
nodes, incluyendo:DispositivoDescripción/dev/audiodispositivo de audio compatible con SPARC/dev/dspDispositivo para voz digital/dev/dspWComo /dev/dsp pero con muestreo de 16 bits/dev/midiDispositivo midi de acceso Raw/dev/mixerDispositivo Mezclador/dev/musicInterfaz para secuenciador de nivel 2/dev/sequencerDispositivo secuenciador/dev/pssInterfaz para dispositivos programablesSi todo ha ido bien debería tener una tarjeta de sonido funcionando.
Si no es así lea la siguiente sección.Problemas Comunesnodo de dispositivo¡Recibo un error "unsupported subdevice XX" !Uno o más nodos de dispositivos no se crearon correctamente.
Repita los pasos anteriores.Puerto I/O¡Tengo un error "sb_dspwr(XX) timed out" !El puerto I/O que ha puesto no es el correcto.IRQ¡Tengo un error "bad irq XX"!La IRQ que ha puesto no es la correcta. Asegúrese de que
la IRQ que pone la la IRQ de la tarjeta son la misma.Me da un error nombre_del_error>xxx: gus pcm not attached, out of
memory.
¿Por qué me pasa ésto?No hay memoria libre que se pueda asignar a éste dispositivo.ChernLeeContributed by Audio MP3El formato MP3 (MPEG Layer 3 Audio) se aproxima mucho
a la calidad de sonido del CD, así que no hay razón para privar
a su sistema FreeBSD de disfrutar de él.Reproductores de MP3Con mucho el reproductor de MP3 más popular
para XFree86 es XMMS,
(X Multimedia System). Puede usar skins de WinAmp en XMMS puesto que el interfaz gráfico
es casi idéntico al de la aplicación de Nullsoft.
XMMS también tiene soporte nativo
de plugins.XMMS puede instalarse desde el port
audio/xmms o como package.El interfaz de XMMS es intuitivo e
incluye lista de canciones, ecualizador gráfico y muchas más cosas.
Aquellos que conozcan WinAmp encontrarán XMMS
fácil de usar.Existe una alternativa; el port audio/mpg123 es un reproductor
MP3 en línea de comandos.mpg123 puede usarse indicándole un dispositivo
de sonido concreto y el archivo MP3 en la línea de comandos como se muestra aquí:&prompt.root; mpg123 -a /dev/dsp1.0 GrandesÉxitos-DeAlguno.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from BT - GrandesÉxitos-DeAlguno.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
/dev/dsp1.o debe reemplazarse por el
dispositivo dsp que tenga en su sistema.Extracción de Pistas de CD AudioAntes de convertir una pista o todo un CD a MP3 la información
de audio del CD debe pasar al disco duro. Ésto se hace convirtiendo
los datos raw CDDA (CD Digital Audio) en archivos WAV.El programa cdda2wav, que es parte del port
sysutils, se usa para la extracción del audio de
los Discos Compactos y de la información asociada con éste.Con el CD en la unidad, el siguiente comando (utilizado como
root) convertirá un CD entero en archivos WAV
individuales, uno por pista:&prompt.root; cdda2wav -D 0,1,0 -BLa opción
indica el dispositivo SCSI 0,1,0, que
se corresponde con la salida del comando cdrecord -scanbus.Para extraer pistas individuales utilice la opción
como se vé aquí:&prompt.root; cdda2wav -D 0,1,0 -t 7Ésta opción trata la séptima pista del CD de audio. Para tratar un
rango de pistas, por ejemplo las pistas de la uno a la siete, especifique
el rango:&prompt.root; cdda2wav -D 0,1,0 -t 1+7cdda2wav sólo soporta unidades
CDROM SCSI. Para unidades IDE utilice audio/cdd o alguna
otra entre las variadas aplicaciones que hay en la colección de ports
de audio.Creando Archivos MP3Hoy día el codificador MP3 por excelencia es el
lame.
Lame Puede encontrarse en
audio/lame en el árbol de ports.Usando archivos WAV previamente extraídos, el siguiente
comando convierte audio01.wav en audio01.mp3:&prompt.root; lame -h -b 128 \
--tt "Título de Copla o Cantar" \
--ta "Grupo, Solista o Coral Sinfónica" \
--tl "Título del Ãlbum" \
--ty "2001" \
--tc "Autor de la extracción y paso a MP3" \
--tg "Genre" \
audio01.wav audio01.mp3Los 128 kbits pasan por ser el estándar de facto
usado en el ratio de bits de los MP3 al uso. Muchos prefieren
mayores calidades, 160 e incluso 192. A mayor ratio de bits,
mayor espacio requerido en el disco --pero la calidad
también será mayor--.
La opción utiliza el modo más calidad pero
algo más lento. Opciones que empiezan por
indican etiquetas ID3, que suelen incluír información sobre la
canción que se incluye en el archivo MP3. Puede encontrar
más opciones consultando el manual de lame.Decodificando MP3Para grabar un CD de audio desde archivos MP3 debe convertir
éstos a un formato WAV no comprimido. Tanto XMMS
como mpg123 soportan la conversión de MP3
a un formato de fichero no comprimido.Escribiendo a disco desde XMMX:Ejecute XMMS.Botón derecho del ratón en la ventana para
acceder al menú de XMMS.Elija Preferences en
Opctions.Cambie Output Plugin a Disk Writer
Plugin.Pulse Configure.Elija un directorio en el que guardar los
archivos.Cargue el archivo MP3 en XMMS
normalmente, con el volumen al 100% y las opciones de
ecualización desactivadas.Pulse Play — parecerá que XMMS
está reproduciendo música pero no sonará nada.
Lo que está haciendo es volcar el MP3 a un
archivo.No olvide volver a poner el Output Plugin como estaba
antes cuando quiera volver a escuchar MP3.Escribiendo la salida en mpg123:Escriba mpg123 -s audio01.mp3
> audio01.pcmXMMS genera un archivo en formato WAV, mientras que
mpg123 convierte MP3 a datos audio raw PCM.
Ambos formatos pueden usarse con cdrecord
o burncd para crear un CDROM de audio.Consulte "creating-cds" para más información acerca
del uso de grabadoras de CD en FreeBSD.
diff --git a/es_ES.ISO8859-1/books/handbook/ports/chapter.sgml b/es_ES.ISO8859-1/books/handbook/ports/chapter.sgml
index 2769314849..ea62afaefb 100755
--- a/es_ES.ISO8859-1/books/handbook/ports/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/ports/chapter.sgml
@@ -1,1650 +1,1650 @@
- Instalando Aplicaciones: Paquetes y Ports
+ Instalación de Aplicaciones: Paquetes y PortsSinópsisportspaquetesFreeBSD esta colmado de una excelente colección de herramientas
de sistema, como parte del sistema base. A pesar de esto, existe gran
cantidad de cosas que uno requiere hacer para poner las cosas realmente en
marcha, para lo cual se necesita instalar software adicional de terceros.
FreeBSD ofrece dos tecnologías complementarias para instalar
software de terceros en nuestro sistema: la Colección de Ports de
FreeBSD y Paquetes binarios. Cualquiera de los dos sistemas puede ser
usado para instalar las versiones más recientes, de forma local o
directamente desde la red.Después de leer este capítulo, usted sabrá:Como instalar paquetes binarios de software de terceros.Como compilar software de terceros desde la Colección de
Ports.
- Como remover paquetes o ports instalados previamente.
+ Como eliminar paquetes o ports instalados previamente.
- Generales sobre la Instalación de Software
+ Aproximación a la Instalación de SoftwareSi usted ha usado un sistema &unix; con anterioridad, sabrá que el
procedimiento típico para instalar software de terceros es algo
similar a esto:Descargar el software, que puede distribuirse en formato de
código fuente, o binario.Desempacar el software de su formato de distribución
(normalmente en un tarball comprimido ya sea con &man.compress.1;, &man.gzip.1;
o &man.bzip2.1;).Ver la documentación (quizás un fichero INSTALL o
README, o los ficheros del subdirectorio
doc/) para ver como instalar el software.Si el software es distribuido como fuente, compilarlo. Esto puede
requerir que editemos el fichero Makefile o que
ejecutemos el script configure, entre otras.Instalar y probar el software.Y esto solamente si todo marcha bien. Si usted esta instalando un
software que no ha sido creado específicamente para FreeBSD, puede
que sea necesario editar el código para que trabaje correctamente.
Si usted lo desea, puede continuar instalando software de la forma
tradicional bajo FreeBSD. Aunque FreeBSD le provee de
dos tecnologís que le pueden ahorrar gran cantidad de tiempo y
esfuerzo: los paquetes y ports. Al momento de escribir esto, existen
más de &os.numports; aplicaciones de terceros, que estan disponibles
de esta manera.Los paquetes de FreeBSD, para cualquier aplicación, son un
simple fichero que debe descargar. Los paquetes contienen copia de
binarios pre-compilados de la aplicación, así como cualquier
fichero de configuración necesario o documentación. Los
paquetes descargados, pueden ser manipulados con los comandos de manejo de
paquetes de FreeBSD, tales como: &man.pkg.add.1;, &man.pkg.delete.1;,
&man.pkg.info.1;, etc. El instalar una aplicación nueva puede
realizarse con un simple comando.Por otro lado un Port de FreeBSD, es una colección de ficheros
diseñados para automatizar el proceso de compilación del
software, desde el código fuente.Recuerde que existen ciertos pasos que deberá llevar a cabo
para efecto de compilar un programa por usted mismo (desempacar, parchar,
compilar e instalar). Los ficheros que conforman un port, permiten
automatizar esto por usted. Usted ejecuta un conjunto de comandos simples
y el código fuente es descargado, desempacado, parchado, compilado
e instalado.De hecho, el sistema de ports también se puede usar para crear
paquetes que posteriormente manipule con pkg_add y las
otras utilidades del manejo de paquetes que veremos en breve.Tanto el sistema de ports como el de paquetes entienden las
dependencias. Suponga que desea instalar una
aplicación que depende de que una librería
específica este instalada. Tanto la librería como la
aplicación existen en FreeBSD como paquete o port. Si utiliza
el comando pkg_add o el sistema de ports para instalar
la aplicación, ambos notaran que la librería no esta
instalada, y procederán a instalar la librería en primer
término.Dado que ambas tecnologís son similares, quizás se
pregunte por que FreeBSD se toma la molestía de contar con ambas.
Los Paquetes y los Ports cuentan con sus propias fortalezas, y cual
utlizar dependerá de sus preferencias.Beneficios de los PaquetesEl típico fichero tarball de un paquete, es normalmente
más pequeño que el tarball comprimido que cuenta con el
código fuente del software.Los paquetes no requiere de compilación
adicional. Este punto puede ser de gran importancia, principalmente en
equipos lentos, cuando compila grandes aplicaciones tales como
Mozilla, KDE, o
GNOME.Los paquetes no requieren que usted comprenda el proceso que envuelve
el compilar software bajo FreeBSD.Beneficios del Sistema de PortsNormalmente los paquetes son compilados con opciones conservadoras,
en virtud del gran numero de equipos donde serán instalados. Al
instalar desde el port, usted puede editar las preferencias para (por
ejemplo) ejecutarse bajo un procesador Pentium IV o Athlon.Algunas aplicaciones opciones relacionadas con lo que pueden y lo
que no pueden hacer. Por ejemplo Apache puede
ser configurado con una gran variedad de opciones. Al compilarlo desde los
ports usted no tiene por que aceptar todas, puede seleccionar cuales
opciones desea.En algunos casos, existen varios paquetes para la misma
aplicación con diferentes opciones. Por ejemplo,
Ghostscript esta disponible como paquete
ghostscript o bien como paquete
ghostscript-nox11, dependiendo si usted cuenta o
no con el servidor X11. En este caso decidir puede ser sencillo, pero esto
se puede volver un problema si cuenta con más de una o dos opciones
al momento de la compilación.Las condiciones de licenciamiento de algunas aplicaciones, prohiben la
distribución de binarios. Solo permiten la distribución del
código fuente.Existe gente que no confia en los binarios. Al menos con el
código fuente, usted puede (en teoría) revisarlo y
localizar problemas potenciales.Si cuenta con parches locales, necesitará el código
fuente para poder aplicarlos.Existe gente que le gusta contar con el código fuente, para
poder leerlo en ratos de ocio, modificarlo, tomar partes prestadas (si la
licencia lo permite, claro esta), y tal.Para poder estar actualizado en sus ports, suscribase a
&a.ports;.El resto de este capítulo le explicará como usar los
ports y paquetes para instalar software de terceros en FreeBSD.Localizando su AplicaciónAntes de poder instalar cualquier software, usted debe saber que desea
instalar y como se llama dicha aplicación.La lista de software disponible para FreeBSD crece constantemente.
Afortunadamente existen varias formas de localizar lo que busca:El sitio web de FreeBSD mantiene una base actualizada de todas las
aplicaciones disponibles para FreeBSD, en la dirección
http://www.FreeBSD.org/ports/
. Esta base esta segmentadas por categorías, y usted puede
buscar por nombre (si lo sabe) o bien listas las aplicaciones disponibles
en cierta categoría.FreshPortsDan Langille mantiene FreshPorts, en
http://www.FreshPorts.org/.
FreshPorts verifica los cambios en las aplicaciones del árbol de
ports, y le permite observar uno o más ports, y le
enviará un correo cada vez que se actualicen.FreshMeatSi no conoce el nombre de la aplicación que desea, pruebe usar
un sitio como FreshMeat (http://www.freshmeat.net/) para
encontrar una aplicación, posteriormente verifique en el sitio de
FreeBSD, para ver si la aplicación ha sido portada a FreeBSD.ChernLeeContribuido porUsando el Sistema de PaquetesInstalando un Paquetepaquetesinstalandopkg_addPuede usar la utilidad &man.pkg.add.1; para instalar software de un
paquete bajo FreeBSD, desde un fichero local o desde un servidor remoto que
esta en red.
- Descargando un Paquete e Instalandolo Localmente
+ Descarga de un Paquete e Instalación en nuestro sistema&prompt.root; ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp>get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp>exit
&prompt.root; pkg_add lsof-4.56.4.tgzSi usted no cuenta con una fuente local de paquetes (como pudiese ser
un CDROM de FreeBSD), pudiese ser que su mejor alternativa sea usar
&man.pkg.add.1;. Esto provocará que la utilidad determine
automáticamente el formato del objeto correcto, para que
posteriormente lo descargue y lo instale desde un sitio FTP.pkg_add&prompt.root; pkg_add -r lsofEn el ejemplo anterior, el paquete correspondiente será
descargado e instalado sin mayor intervención del usuario.
&man.pkg.add.1; utiliza &man.fetch.1; para descargar los ficheros,
que toma como referencia varias variables de entorno, que incluyen
FTP_PASSIVE_MODE, FTP_PROXY y
FTP_PASSWORD. Quizás deba modificar alguna de
estas, si se encuentra detrás de un firewall, o bien usar un
proxy FTP/HTTP. Vea la página de ayuda &man.fetch.3; para una
lista completa. También puede notar que en el ejemplo anterior
usamos lsof en vez de lsof-4.56.4.
Cuando hacemos uso de fetch de forma remota, la
versión del paquete debe ser removida. El programa
&man.pkg.add.1; obtendrá automáticamente la versión
más reciente.Los paquetes son distribuidos en formato .tgz
y .tbz. Puede encontrarlos en
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, o bien, en el
CDROM de FreeBSD. Cada CD de la distribución de 4 CDs (y del
PowerPak, etc) contiene los paquetes en el directorio
/packages. El orden de dicho directorio, es similar
al árbol de /usr/ports. Cada
categoría cuenta con su subdirectorio, y todos los paquetes estan
disponibles en el directorio All.La estructura del directorio de paquetes es identica a la de ports;
estos trabajan en conjunto para formar el sistema de paquetes/ports.
Eliminando un Paquetepkg_deletepaqueteseliminandoPara eliminar un paquete previemante instalado, utilice la utilidad
&man.pkg.delete.1;.&prompt.root; pkg_delete xchat-1.7.1Manejo de Paquetespaquetesmanejo&man.pkg.info.1; es una utilidad que muestra y describe
todos los paquetes que tenemos instalados.pkg_info&prompt.root; pkg_info
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...&man.pkg.version.1; es una utilidad que resume las versiones de los
paquetes instalados. Estas son comparadas con las versiones actuales del
árbol de ports.pkg_version&prompt.root; pkg_version
cvsup =
docbook =
...Los símbolos de la segunda columna, nos indican la edad
relativa de la versión instalada, comparada con la versión
disponible en el árbol local de ports.SímboloSignificado=La versión del paquete instalado es igual
a la versión del árbol local de ports.<La versión instalada es más antigua a la
versión del árbol local de ports.>La versión instalada es más
reciente que la que se encuentra en el árbol local de ports
(probablemente el árbol de ports esta desactualizado).?El paquete instalado no se ha localizado en
el índice (index) de los ports.*Existen multiples versiones del paquete.
MiscelaneosToda la información relacionada con los paquetes, se guarda en
el directorio /var/db/pkg. Los paquetes instalados,
así como una descripción de los mismos, puede encontrarse
en este subdirectorio.Usando la Colección de PortsLa siguiente sección le provee de las instrucciones
- básicas para instalar o remover programas de su sistema, usando la
+ básicas para instalar o eliminar programas de su sistema, usando la
Colección de Ports.Obteniendo la Colección de PortsAntes de poder instalar ports, primero debe de hacerse de la
Colección de Ports— que escencialmente esta compuesta de
ficheros Makefiles, parches y ficheros con la
descripción de los ports, ubicados en
/usr/ports.Cuando instaló su sistema FreeBSD, el programa
Sysinstall le pregunto si deseaba instalar
la Colección de Ports. Si contesto que no, puede seguir estas
instrucciones para obtener dicha colección:Metodo por SysinstallEste metodo implica el uso del programa
sysinstall nuevamente, para instalar
Colección de Ports.Siendo usuario root, ejecute el programa
/stand/sysinstall como se muestra:&prompt.root; /stand/sysinstallPosicionese en la opción Configure,
y presione Enter.Seleccione la opción Distributions,
y presione Enter.Seleccione la opción ports, y
presione la Barra Espaciadora.Dirijase a la opción Exit, y
presione Enter.Seleccione el medio de instalación deseado, tal como CDROM,
FTP y tal.Siga los menus para salir de sysinstall.
El metodo alternativo para obtener y mantener actualizada la
Colección de Ports, es usando CVSup.
Lea el fichero de ports para CVSup, en
/usr/share/examples/cvsup/ports-supfile.
Vea el capítulo Usando CVSup
para ver más información en el uso de
CVSup y del fichero mencionado.Metodo por CVSupEste es un metodo rápido de obtener la Colección de Ports
usando CVSup. Si desea mantener su árbol
de ports actualizado, o bien, aprender más acerca de
CVSup, lea los documentos comentados
anteriormente.Instale el port net/cvsup.
Vea Instalación de CVSup para mádetalles.Como usuario root, copie el fichero
/usr/share/examples/cvsup/ports-supfile
a una nueva ubicación, como puede ser el directorio
/root o bien su propio directorio home.Edite el fichero ports-supfile.Cambie CHANGE_THIS.FreeBSD.org a un
servidor CVSup cercano. Vea
Mirrors de CVSup para ver una lista completa de los servidores
CVSup.Ejecute cvsup:&prompt.root; cvsup -g -L 2 /root/ports-supfileAl ejecutar esto posteriormente, se descargaran las actualizaciones
de la Colección de Ports.Instalando PortsportsinstalandoAl hablar de la Colección de Ports, lo primero que debemos
comentar es; a que nos referimos cuando hablamos de un
esqueleto (skeleton). En sí mismo, un esqueleto de
port, es una serie mínima de ficheros, que le indican a FreeBSD
como compilar e instalar un programa. Cada esqueleto incluye:Un fichero Makefile. Este fichero contiene
varias sentencias, que le indican al sistema como compilarlo y donde
deberá instalarlo en su sistema.Un fichero distinfo. Este fichero contiene
información de los ficheros que debe ser descargados para efecto
de compilar el programa, así como el identificador checksum, para
asegurarse se han descargado correctamente, sin corrupciones
usando &man.md5.1;.Un directorio files. Este directorio contiene
los parches necesarios para compilar e instalar en su sistema FreeBSD.
Básicamente, los parches son pequeños ficheros, que
incluyen algunos cambios. Estos son en formato de texto plano, y
básicamente dicen cosas como Remove line 10
(Remover la línea 10) o Change line 26 to this...
(Cambiar la línea 26 por esto...). Los parches también son
conocidos como diffs, ya que son generados por el
programa del mismo nombre; &man.diff.1;.Es posible que este directorio tambié contenga algun otro
fichero necesario para compilar e instalar el port.Un fichero pkg-comment. Este es una descripcion
del programa en una sola línea.Un fichero pkg-descr. Esta es una descripcion
más detallada del programa. En ocasiones multi-línea.
Un fichero pkg-plist. Esta es una lista de
todos los ficheros que serán instalados por el port.
- También le indica al sistema de ports, que ficheros remover, en
+ También le indica al sistema de ports qué ficheros eliminar en
caso de una desinstalación.Algunos ports cuentan con otros ficheros, tal como
pkg-message. El sistema de ports usa estos, para
manejar situaciones especiales. Si desea saber más detalles al
respecto, o bien de ports en general, vea el libro FreeBSD Porter's
Handbook.Ahora que tiene suficientes antecedentes sobre que hacer con la
Colección de Ports, esta listo para instalar su primer port.
Existen dos formas de lllevar esto a cabo, y cada una de ellas se
explican a continuación.Pero, antes de que podamos proceder con la instalación, usted
necesita seleccionar un port para instalar. Existen varias formas de
hacer esto, siendo el metodo más sencillo los ports listados en el sitio web de
FreeBSD. Puede navegar entre los ports listados ahí o
bien, usar la función de buscar en el sitio. Cada port incluye
una descripción, para que pueda leer un poco acerca de cada port
antes de decidirse a instalarlo.Otro metodo es por medio del comando &man.whereis.1;. Simplemente
teclee whereis fichero,
donde fichero es el programa que desea
instalar. Si se encuentra en su sistema, se le indicara donde se
localiza, tal como:&prompt.root; whereis lsof
lsof: /usr/ports/sysutils/lsofEsto nos indica que lsof (una utilidad de sistema)
puede encontrarse en /usr/ports/sysutils/lsof.Incluso otra forma de encontrar un port en particular, es usando el
mecanismo de búsqueda incluido en el sistema de ports. Para
efecto de usar esta habilidad, debe estar situado en el directorio
/usr/ports. Una vez que este ahí, ejecute
make search name=nombre-del-programa donde nombre-del-programa es el
nombre del programa que desea encontrar. Por ejemplo, si busca
lsof:&prompt.root; cd /usr/ports
&prompt.root; make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: De esta información, la parte que debe prestar atención
es la que se refiere a la ruta, esto es; la línea
Path:, en virtud de que esta le indica la ubicación
del programa. El resto de la información no es necesaria para la
instalación, por lo que no se verá aqui.Para una búsqueda más profunda, puede usar el comando
make search key=cadena donde
cadena es algun texto a buscar. Esto busca
nombres de ports, descripciones y dependencia y puede usarse para buscar
ports que se relacionan a un determinado texto, si no sabe el nombre del
port que esta buscando.En ambos casos, la búsqueda es indistinto el uso de
mayúsculas o minusculas. El buscar LSOF y
lsof arrojaran los mismos resultados.Usted debe ser usuario root , para instalar
ports.Ahora que hemos encontrado un port que deseamos instalar, estamos
listos para llevar a cabo la instalación. El port incluye las
instrucciones necesarias para compilar el código fuente, pero
no contiene el código. Puede obtener el código de un CDROM
o desde Internet. El código fuente es distribuido de cualquier
manera que el autor del software lo desee. Frecuentemente esto es en
un fichero tar.gz, pero puede estar comprimido con
algun otro programa o de hecho sin estar comprimido. De cualquier forma
que se presente, el código fuente del programa, le llamamos
distfile. Puede obtener los distfiles
desde Internet o bien desde un CDROM.Instalando Ports desde un CDROMportsinstalando desde CDROMLos CDROMs oficiales del Proyecto de FreeBSD, ya no incluyen
distfiles. Estos ocupan gran espacio, que en su lugar se ha usado para
incluir paquetes precompilados. CDROMs como el PowerPak de FreeBSD, si
inlcuyen distfiles, y puede ordenar estos de distribuidores como
FreeBSD Mall. Esta
sección asume que usted cuenta con un juego de CDROMs de
FreeBSD.Coloque su CDROM en la unidad correspondiente. Montelo en
/cdrom. (Si utiliza un punto de montaje diferente
la instalación no será exitosa). Para comenzar dirijase
al directorio donde se localiza el port que desea instalar:&prompt.root; cd /usr/ports/sysutils/lsofUna vez que este en el directorio lsof,
verá el esqueleto del port. El próximo paso es la
compilación del port. Esto lo hacemos, simplemente tecleando
make en la línea de comandos. Una vez que
ha hecho esto, verá algo similar a lo siguiente:&prompt.root; make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===> Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure output snipped]
...
===> Building for lsof-4.57
...
[compilation output snipped]
...
&prompt.root;Note que una vez que ha terminado la compilación,
regresara a la línea de comandos. El siguiente paso es instalar
el port. Para efecto de instalarlo, simplemente debemos añadir
una palabra al comando make, y esa palabra es
install:&prompt.root; make install
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;Una vez que regrese a la línea de comandos, le será
posible ejecutar la aplicación que recien instalo. Dado que el
programa lsof se ejecuta con privilegios, nos
aparece una advertencia de seguridad. Debe tomar nota de cualquier
otra advertencia que aparezca durante la compilación e
instalación.Puede ahorrarse algo de tiempo al ejecutar make
install en un solo comando, en lugar de ejecutar
make y make install
en dos pasos diferentes.Algunos shells cuentan con un cache de los comandos disponibles bajo
los directorios incluidos en la variable de entorno PATH,
para agilizar las operaciones de búsqueda de los ejecutables de
estos ficheros. Si usted esta haciendo uso de alguno de estos shells,
puede usar el comando rehash una vez que ha terminado
de instalar el port, para poder hacer uso de su nuevo programa. Esto es
válido para ambos shells que forman parte del sistema base (tal
como tcsh) y shells que estan disponibles como
ports (por ejemplo shells/zsh).
Por favor, tenga en cuenta que algunos ports cuentan con una
licencia que no permite su inclusión en el CDROM.
Probablemente esto es a consecuencia de un registro que se debe hacer
previo a la descarga, así mismo algunos no permiten su
re-distribución, y tal. Si desea instalar un port que no se
encuentra en el CDROM, deberá encontrarse conectado a
Internet, para poder hacerlo (vea la siguiente sección).Instalando Ports desde InternetComo en la sección anterior, en este sección se asume
que usted cuenta con una conexión activa a Internet. Si no es
así, deberá de llevar a cabo la instalación por
medio de CDROM, o ponga una copia del
distfile en /usr/ports/distfiles manualmente.El instalar un port desde Internet, se hace exactamente de la
misma forma que se hace desde un CDROM. La única diferencia
entre estos dos metodos, es que el fichero distfile es descargado de
Internet, en lugar de tomarlo del CDROM.Los pasos que implica son identicos:&prompt.root; make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===> Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure output snipped]
...
===> Building for lsof-4.57
...
[compilation output snipped]
...
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;Como puede ver, la única diferencia es la línea que
indica de donde esta descargando el sistema el código.El sistema de ports utiliza &man.fetch.1; para descargar los ficheros,
que hace uso de varias variables de entorno, como son
FTP_PASSIVE_MODE, FTP_PROXY,
y FTP_PASSWORD. Puede ser necesario que modifique una o
más de estas, si se encuentra detrás de un cortafuegos
(firewall), o si requiere usar de un proxy FTP/HTTP. Vea la página
de ayuda &man.fetch.3; para una lista completa de las opciones.La opción make fetch
se provee para usuarios que no pueden estar conectados constantemente.
Solo se tiene que ejecutar el comando en /usr/ports
y los ficheros requeridos serán descargados. Este comando funciona
también en subdirectorios, por ejemplo: /usr/ports/net.
Si el port tiene dependencias en librerias u otros ports, esta orden
no descargará los distfiles de estos ports.
Remplace fetch por fetch-recursive
si se quiere descargar las dependencias de otro port.Es posible compilar los ports por categoria, o todos si se desea,
ejecutando la orden make en /usr/ports
usando el ya descrito método de makefetch. Esto puede resultar peligroso ya que algunos ports no pueden
coexistir. En otros casos, algunos ports pueden instalar dos diferentes
ficheros bajo el mismo nombre.Puede darse el caso que se necesite descargar los tarballs de otro sitio
diferente a MASTER_SITES (de donde se descargan los
ficheros). Es posible renombrar la opción MASTER_SITES
de la siguiente manera:&prompt.root; cd /usr/ports/directory&prompt.root; make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetchEn este ejemplo cambiamos la opción MASTER_SITES
a ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.Algunos ports permiten (o requieren) que se provea opciones de
compilación que pueden habilitar/deshabilitar partes de la
aplicación que no son necesarias, algunas opciones de seguridad
y otros arreglos. Algunos ejemplos de estos son
www/mozilla, security/gpgme y
mail/sylpheed-claws. Se notificará
con un mensaje cuando opciones como estas estan disponibles.Rehubicando el directorio de PortsAlgunas veces es útil (o necesario) usar diferentes distfiles y
directorio de ports. Las variables PORTSDIR y
PREFIX pueden sustituir los recursos por defecto. Por ejemplo:&prompt.root; make PORTSDIR=/usr/home/example/ports installEsto compilará el port en
/usr/home/example/ports y lo
instalará en /usr/local.&prompt.root; make PREFIX=/usr/home/example/local installEsto compilará el port en /usr/ports y lo
instalará en /usr/home/example/local.Y claro,&prompt.root; make PORTSDIR=../ports PREFIX=../local installCombinará los dos (demasiado largo para escribirlo completamente,
pere debe darle una idea general).Es posible también cambiar estas variables como parte su su entorno.
Lea el manual de su consola (shell) para hacerlo.Usando imakeAlgunos ports que usan imake (como parte del Sistema
X Windows) no funcionan correctamente con PREFIX, e
insistirá en instalar en /usr/X11R6. Al igual,
algunos ports de Perl ignoran PREFIX e instalan en el
árbol de Perl. Hacer que estos ports respeten PREFIX
es una tarea difícil y hasta imposible.Eliminando Ports InstaladosportseliminandoAhora que sabe instalar ports, probablemente se este preguntando como
eliminarlos, sólo en caso de que haya instalado alguno y
posteriormente se de cuenta que ha instalado el port incorrecto. Vamos a
eliminar el port instalado (que era lsof, para todos
aquellos que no prestaron atención). Como cuando instalamos
ports, lo primero que debemos hacer es ubicarnos en el directorio del
port que deseamos eliminar, que en este caso es
/usr/ports/sysutils/lsof. Una vez que se ha ubicado
en este directorio, estamos listos para eliminar lsof.
Esto se hace con el comando make deinstall:&prompt.root; cd /usr/ports/sysutils/lsof
&prompt.root; make deinstall
===> Deinstalling for lsof-4.57Esto fué sencillo. Ha eliminado lsof de
su sistema. Si desea reinstalarlo, lo puede hacer al ejecutar
make reinstall estando en el directorio
/usr/ports/sysutils/lsof.Los comandos make deinstall y make
reinstall no funcionan una vez que ha ejecutado el comando
make clean. Si desea desintalar un port, una vez que
ha ejecutado make clean, deberá hacer uso del
comando &man.pkg.delete.1; como se describe en la sección de
Paquetes del Handbook.Actividades Post-InstalaciónUna vez que ha instalado una nueva aplicación, normalmente
deberá leer la documentación incluida, editar los
ficheros de configuración necesarios, asegurarse de que la
aplicación se ejecute al arrancar el sistema (si es un daemonio),
etc.Obviamente los pasos exactos para configurar cada aplicación
varian de una a otra. De cualquier forma, si recien ha instalado una
nueva aplicación y se pregunta
¿Y ahora qué?, estos consejos puede que le
sean de ayuda:Use &man.pkg.info.1; para ver que ficheros se instalaron y donde. Por
ejemplo, si recien instaló el paquete FooPackage 1.0.0,
el siguiente comando:&prompt.root; pkg_info -L foopackage-1.0.0 | lessle mostrará los ficheros instalados por el paquete. Preste
especial atención a los ficheros en el directorio
man/ que son las páginas de ayuda y los del
directorio etc/, que contiene los ficheros de
configuración, y bajo el directorio doc/
podrá encontrar información más detallada.Si no esta seguro de cual es la versión del paquete instalado,
simplemente teclee algo así&prompt.root; pkg_info | grep foopackagey le mostrara todos los paquetes que tienen como nombre
foopackage. Reemplace
foopackage de acuerdo a sus necesidades
en la línea de comandos.Una vez que ha identificado donde se localizan las paginas de ayuda
de la aplicación, reviselas usando &man.man.1;. De forma similar
revise los ficheros de configuración de ejemplo (N. de T.
Generalmente estos ficheros son aquellos que tienen la terminación
.sample), así como cualquier
documentación adicional que se incluya.Si la aplicación cuenta con un sitio web, visitelo en busca
de documentación adicional, ficheros de preguntas frecuentes (FAQ),
etc. Si no esta seguro del sitio web, vea la salida del comando&prompt.root; pkg_info foopackage-1.0.0este incluye en ocasiones una línea WWW:, que
describe el sitio web de la aplicación.Resolución de ProblemasLa siguiente sección cubre algunas de las preguntas más
frecuentes relacionadas a la colección de ports, y algunas
técnicas básicas para la resolución de problemas,
así como que hacer si encontramos un port roto.Algunas Preguntas y Respuestas¿Qué no es una discusión acerca de
módems?Ah, usted debe estar pensando en puertos (ports) seriales, que se
encuentran en la parte trasera de su computadora. Aqui nos referimos al
término port como resultado de aquellas
aplicaciones que han sido portadas de una versión
de Unix a otra.¿Qué es un parche (patch)?Una parche (patch), es un pequeño fichero que
especifíca como ir de una versión a otra. Contiene texto
plano y cuenta con indicaciones similares a
delete line 23 (borrar la línea 23),
add these two lines after line 468 (añadir estas
dos líneas después de la línea 468), o
change line 197 to this (cambiar la línea 197 por
esto). Tambié son conocidos como ficheros diff, ya que son
generados por el programa &man.diff.1;.tarball¿Qué es eso de tarballs?Es un fichero con extensión .tar o
con alguna variación tal como .tar.gz,
.tar.Z, .tar.bz2,
o incluso .tgz.Básicamente, es un árbol de directorio, que ha sido
archivado en un solo fichero (.tar) y en ocasiones
comprimido (.gz). Esta técnica se uso
originalmente para archivar en cintas (que es de donde proviene su
nombre; Tape ARchives), pero
es ampliamente usado para distribuir código fuente por todo
Internet.Usted puede ver que ficheros se encuentran archivados, o incluso
extraerlos usando el programa estandar de Unix &man.tar.1;, que se
incluye con el sistema base de FreeBSD, de la siguiente manera:&prompt.user; tar tvzf foobar.tar.gz
&prompt.user; tar xzvf foobar.tar.gz
&prompt.user; tar tvf foobar.tar
&prompt.user; tar xvf foobar.tarchecksum¿Y un checksum?Es un numero generado por la suma de los datos en el fichero que
desea consultar. Si alguno de los caracteres cambia, el checksum ya no
será igual al total, de tal suerte que esta simple
comparación le permite detectar una diferencia.He hecho lo que se indica para compilar ports desde un CDROM y
funciona de maravilla hasta que he intentado instalar el port de
Kermit.&prompt.root; make install
>> cku190.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.¿Por qué no lo puede encontrar? ¿Acaso tengo
un CDROM defectuoso?Como se explico en la sección Instalando Ports desde un CDROM, algunos ports
no se pueden incluir en CDROM, debido a restricciones de licenciamiento.
Kermit es un ejemplo de esto. Los
términos de la licencia de Kermit, no
permiten su inclusión en el CDROM, así que tendrá
descargarlo a mano, una disculpa!.La razón por la cual obtiene esos mensajes de error, es por
que no cuenta con una conexión a Internet en ese momento. Una
vez que lo haya descargado de alguno de los sitios disponibles
(MASTER_SITES listados en el fichero
Makefile), puede continuar con el proceso de
instalación.Ya hice esto, pero cuando intento guardarlo en el subdirectorio
/usr/ports/distfiles obtengo un error diciendo
algo acerca de que no cuento por los permisos.El sistema de ports, descarga los ficheros tarball, en el
subdirectorio /usr/ports/distfiles, pero muchos
administradores de sistema crean un enlace de este directorio a un
servidor remoto o a una unidad local de CDROM de solo lectura. Si esta
es su situación, entonces deberá especificar un directorio
diferente para guardar sus ficheros distfiles, con el siguiente
comando:&prompt.root; make DISTDIR=/directorio/local/con/permisos/de/escritura install¿El esquema de ports trabaja solamente si se tiene todo
en /usr/ports? Mi administrador de sistema
dice que todo lo debo tener en
/u/people/guests/wurzburger, pero parece que
no funciona de esta manera.Puede usar las variables PORTSDIR y
PREFIX, para indicarle al mecanismo de ports que
directorios utilizar. Por ejemplo;&prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports installcompilará el port en
/u/people/guests/wurzburger/ports e
instalará todo bajo el directorio
/usr/local.&prompt.root; make PREFIX=/u/people/guests/wurzburger/local installcompilará todo en /usr/ports e
instalará todo bajo el directorio
/u/people/guests/wurzburger/local.Y claro esta que,&prompt.root; make PORTSDIR=../ports PREFIX=../local installcombinará ambos (lo cual es muy largo para escribir aqui,
pero debe darnos una buena idea).imakeAlgunos ports que usan &man.imake.1; (una parte del Sistema de
Ventanas X) no trabajan bien con PREFIX, e insistiran
en instalar todo bajo /usr/X11R6. De forma similar,
algunos ports de Perl ignoran la variable PREFIX y
proceden a instalar bajo el árbol de Perl. Hacer que estos ports
respeten la variable PREFIX es una tarea difícil
si no imposible.Si no le agrada estar tecleando todo esto cada vez que desea instalar
un port, es una buena idea incluir estas variables en sus variables de
entorno. Lea la documentación de su shell para ver las
instrucciones para hacer esto.No cuento con un CDROM de FreeBSD, pero me gustaría contar
con todos los ficheros tar a la mano en mi sistema, para no tener
que descargarlos cada vez que deseo instalar un port. ¿Hay alguna
forma de obtener todos de una sola vez?Para obtener todos y cada uno de los ficheros tar de la
Colección de Ports, haga lo siguiente:&prompt.root; cd /usr/ports
&prompt.root; make fetchPara todos los tarball de un directorio concreto
haga:&prompt.root; cd /usr/ports/directorio
&prompt.root; make fetchy para un solo port—bueno, quizás ya lo adivinó.
Tengo conocimiento de que probablemente es más rápido
descargar los ficheros tarball desde un servidor réplica
(mirror) de FreeBSD, más cercano. ¿Existe alguna forma
de indicarle al port que descargue los ficheros de un servidor diferente
a los listados en MASTER_SITES?.Claro. Por ejemplo, si usted sabe que ftp.FreeBSD.org esta más próximo
que los servidores listados en MASTER_SITES,
haga lo siguiente:&prompt.root; cd /usr/ports/directorio
&prompt.root; make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetchQuisiera saber cuales son los ficheros que make
va a necesitar antes de los descargue.make fetch-list desplegara una lista de los
ficheros necesarios para la compilación del port.¿Existe alguna forma de detener la compilación del
port? Deseo editar un poco el código, antes de instalarlo, pero
es un poco cansado tener que verlo y pulsar
CtrlC
a cada momento.Puede usar el comando make extract, con el
cual se detendra el proceso, una vez que se han descargado y
extraido los ficheros necesarios.Estoy tratando de hacer mi propio port, y quiero poder detener el
proceso, hasta que verifique que mis parches funcionan correctamente.
¿Existe algo similar a make extract, pero
para parches?Si, make patch es lo que usted busca.
Quizás la opción PATCH_DEBUG le sea de
gran utilidad. Y por cierto, gracias por su esfuerzo!He escuchado que algunas opciones del compilador pueden causar
errores. ¿Es cierto? ¿Cómo puedo asegurarme
de compilar los ports con las opciones correctas?Si, con la versión 2.6.3 de gcc (que es
la versión distribuida con FreeBSD 2.1.0 y 2.1.5), la
opción puede ocasionar un código
con errores, a menos que utilice también la opción
(la mayoría de los ports
no hacen uso de la opción ). Usted
debe poder indicarle al compilador las opciones,
con algo similar a:&prompt.root; make CFLAGS='-O2 -fno-strength-reduce' installo bien, editando el fichero /etc/make.conf,
pero desafortunadamente no todos los ports respetan esto. La mejor
forma es ejecutar make configure, y después
dirijirse al directorio con el código fuente e inspeccionar y
editar el fichero Makefile, pero esto puede ser
tedioso si se cuenta con muchos subdirectorios, y en cada uno su propio
fichero Makefile.Lac opciones que por default utiliza el compilador de FreeBSD son
muy conservadoras, por lo que si no las ha modificado, no debe
tener problemas.Existen muchos ports y es difícil encontrar el que
quiero. ¿Existe en algún lado una lista de los
ports disponibles?Vea el fichero INDEX, localizado en
/usr/ports. Si desea, también puede
buscar en la Colección de Ports por medio de una palabra clave.
Por ejemplo, puede encontrar ports relevantes al lenguaje de
programación LISP usando:&prompt.user; cd /usr/ports
&prompt.user; make search key=lispDeseo instalar el port foo pero de repente
el sistema se detuvo y comenzo a compilar el port
bar. ¿Qué esta pasando?El port foo necesita algo del port
bar — por ejemplo, si foo
utiliza gráficos, es posible que bar
cuente con librerías con rutinas para procesar gráficos.
O bien bar puede ser una herramienta necesaria para
compilar el port foo. He instalado el programa
grizzle desde los ports y francamente es un
desperdicio de espacio en disco. Quiero eliminarlo, pero no se donde
se instalaron sus ficheros. ¿Alguna pista?No hay problema, simplemente teclee:&prompt.root; pkg_delete grizzle-6.5Otra alternativa es teclear:&prompt.root; cd /usr/ports/cualquierlugar/grizzle
&prompt.root; make deinstallAguarda un momento, ¿Se supone que uno debe saber el
numero de versión para usar este comando? Hablando en serio,
no esperas que recuerde todo esto, ¿o si?No del todo, lo puede saber haciendo:&prompt.root; pkg_info -I 'grizzle*'
Information for grizzle-6.5:
grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up
arcade game.El numero de versión se puede saber usando el comando
pkg_info o bien al teclear:
ls /var/db/pkgHablando de espacio en disco, el directorio de ports parece que
ocupa mucho espacio. ¿Es seguro eliminar algo de este
directorio?Asi es, si ha instalado un programa y esta seguro de que ya no
necesita el código fuente, no hay una razón para contar
con él. La forma más segura de hacer esto es:&prompt.root; cd /usr/ports
&prompt.root; make cleaneste comando revisará todos los subdirectorios, y
procederá a eliminar todo lo que encuentre, salvo los
esqueletos del port.Es posible que obtengamos el mismo efecto, pero sin que
necesariamente se llame de forma recursiva a cada
Makefile. Por ejemplo, puede eliminar
directamente todos los subdirectorios work/
con el comando:
&prompt.root; find /usr/ports -depth -name work -exec rm -rf {} \;He intentado eso y aun cuento con los tarballs o como se
llamen, en el directorio distfiles.
¿Puedo eliminarlos también?Si, si esta totalmente seguro de que ha terminado con ellos,
también los puede eliminar. Estos se pueden eliminar
manualmente, o bien usando el comando
make distclean.Me gusta contar con muchos, muchos programas para jugar con
ellos. ¿Existe una forma de instalar todos los ports
en un solo paso?Simplemente haga:&prompt.root; cd /usr/ports
&prompt.root; make installTenga cuidado, ya que algunos ports pueden instalar ficheros
con el mismo nombre. En el caso de que instale dos programas de
gráficos y que ambos instalen
/usr/local/bin/plot obviamente le va ocasionar
problemas.OK, he intentado esto, pero como supuse que tomaria mucho tiempo,
lo deje corriendo y me fui a dormir. En la mañana al ver mi
computadora, solo había terminado tres ports y medio.
¿He hecho algo incorrectamente?.No, el problema es que algunos ports requieren preguntarle
cosas que no podemos contestar por usted (por ejemplo;
¿En qué tipo de papel desea imprimir, en A4
o en Carta?), y requieren de alguien que les dé
respuesta.Realmente no me interesa pasar todo el dí frente al
monitor. ¿Alguna mejor idea?OK, haga lo siguiente antes de irse a la cama/trabajo/el
parque local:&prompt.root; cd /usr/ports
&prompt.root; make -DBATCH installCon esta opción se instalarán todos los ports
que no requieren intervención del
usuario. Una vez que regrese, haga:&prompt.root; cd /usr/ports
&prompt.root; make -DINTERACTIVE installpara terminar el trabajo.En mi trabajo usamos frobble, que se
encuentra la Colección de Ports, pero lo hemos editado
un poco, para que se ajuste a nuestras necesidades. ¿Existe
alguna forma de hacer nuestro paquete, para poder distribuirlo
más facilmente en nuestros sitios?.No hay problema, asumiendo que usted sabe como crear los parches
de sus cambios, puede hacer lo siguiente:&prompt.root; cd /usr/ports/algunlugar/frobble
&prompt.root; make extract
&prompt.root; cd work/frobble-2.8
[Aplicar sus parches]
&prompt.root; cd ../..
&prompt.root; make packageEsto de los ports es muy inteligente. Estoy deseperado por saber
¿Cúal es el secreto?No hay secreto, simplemente vea los ficheros
bsd.port.mk y
bsd.port.subdir.mk que se localizan en
/usr/ports/Mk/.(Los lectores que tiene aversión a los scripts de shell,
se les aconseja abstenerse de ver los ficheros de este directorio.)Ayuda! Este Port Esta Roto! (Broken)Si se encuentra con port que no trabaj como lo esperaba, existen
varias alternativas, que incluyen:Arreglelo!! El libro Porter's
Handbook incluye información detallada de la
infraestructura de los "Ports", de tal forma que pueda arreglar
los ports que ocasionalmente estan defectuosos o inclusive para
crear y enviar su propio port!Notifiquelo—por correo solamente!
Envie un correo a la persona que da mantenimiento al port. Teclee
make maintainer o lea el
Makefile para ver el correo de esta persona.
Recuerde incluir el nombre y la versión del port (puede
enviar la línea $FreeBSD: del
Makefile) así como la salida del error
que da el port. Si no obtiene respuesta de la persona que da
mantenimiento al port, puede usar &man.send-pr.1; para enviar un
reporte de error.Descargue el paquete de un servidor FTP cercano. La colección
maestra de paquetes se localiza en ftp.FreeBSD.org en el directorio de
paquetes, pero asegurese primero de verificar
en un servidor réplica (mirror)!. Es mas seguro que estos
trabajen, a que tener que compilar las fuentes, también es más
rápido. Use el programa &man.pkg.add.1; para instalar paquetes en
su sistema.
diff --git a/es_ES.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml b/es_ES.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml
index 5ef8c9c723..8ac529d448 100755
--- a/es_ES.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml
@@ -1,3199 +1,3199 @@
JimMockReestructurado, reorganizado, y actualizado por PPP y SLIPSinópsisPPPSLIPFreeBSD cuenta con un gran numero de formas para conectar una
computadora a otra. Para establecer una red o una conección a
Internet por medio de un módem, o bien, permitir a otras
computadoras conectarse por medio de este, se requiere del uso de
PPP o SLIP. Este capítulo describe en detalle como configurar
los servicios de comunicación para llevar esto a cabo.Una vez que haya leido este capítulo, usted sabrá:Como configurar User PPP.Como configurar Kernel PPP.Como configurar PPPoE (PPP over Ethernet*).
Como configurar PPPoA (PPP over ATM*).Como instalar y configurar un cliente y servidor SLIP.N. de T.: En estricto sentido esto se refiere a
contar con la conexión por medio de un dispositivo Ethernet,
o bien ATM, pero debido a que usted encontrará estos
metodos en su sistema, como PPPoE o bien PPPoA, se han
dejado los conceptos literales del documento original.
Espero que no sea un problema.Antes de leer este capítulo, usted debiese:Estar familiarizado con la terminología básica de
redes.Comprender lo básico y el propósito de una
conección por módem SLIP y/o PPP.Puede ser que usted se pregunte cual es la principal diferencia
entre User PPP y kernel PPP. La respuesta es sencilla; el método
User PPP procesa la entrada y salida de datos en userland (ver nota
siguiente) en lugar de hacerlo en el kernel.
Esto es algo desgastante, en términos del manejo de datos
entre userland y el kernel, pero permite, por mucho, un mejor
desempeño e implementación de PPP.
User PPP utiliza el dispositivo tun para
comunicarse con el mundo exterior, mientras que kernel—ppp,
utiliza el dispositivo ppp.
En el desarrollo de este capítulo, se hará referencia
a User PPP, simplemente como ppp, a menos de que
sea necesaria hacer una distinción entre este y otro software
de PPP, como es el caso de pppd. Así mismo,
si en el desarrollo del capítulo no se señala lo
contrario, todos los comandos explicados, deberán ser ejecutados
como root.N. de T. : Cuando se habla de "userland"
se hace referencia a todo aquello que *no* forma parte del kernel y que
en el caso de código de programa, se ejecuta en modo usuario, ya
que el código del kernel se ejecuta en modo kernel, supervisor,
o bien en modo privilegiado de ejecución. En lo sucesivo este
término será utilizado tal cual.BrianSomersOriginalmente contribuido por NikClaytonCon apoyo de DirkFrömbergPeterChildsTomRhodesActualizado y reestructurado por
- Utilizando User PPP
+ Uso de User PPPUser PPPAclaracionesEste documento asume que usted cuenta con lo siguiente:ISPPPPUna cuenta activa con un Proveedor del Servicio de Internet
(ISP—por sus siglas en inglées), que usted
utliza para conectarse.Adicionalmente, un módem o algún otro
dispositivo, conectado a su sistema, y configurado
correctamente, que le permite realizar la conexión
con su ISP.El número telefónico de su proveedor.PAPCHAPUnixlogin namepasswordSu nombre de usuario y contraseña. (Ya sea un nombre
de usuario y/o contraseña estilo UNIX, o bien para uso
por medio de PAP o CHAP)Servidor DNSLa dirección IP de uno o más servidores
de nombres (DNS). Normalmente, estos serán provistos
por su proveedor de Internet. Si su proveedor no le ha
dado esta información, puede utilizar la opción
enable dns en su fichero
ppp.conf, para indicarle a
ppp que configure el DNS por
usted. Esta característica depende del sistema de
negociación de DNS que mantenga su proveedor de
Internet.La siguiente información puede ser que haya sido
provista por su proveedor de servicios de internet, pero
no es completamente necesaria:La dirección IP del gateway (pasarela de salida)
de su PSI. El gateway es la máquina a la cual usted
se conectará y será la
ruta por default. Si usted no cuenta
con esta información, puede inventar uno y al intentar
conectarse, el servidor de su PSI, este nos indicará
cual es el valor correcto.Esta dirección IP, es referida por
ppp como
HISADDR.La mascara de red (netmask) que debe utilizar. Si su PSI no
le ha provisto de una, puede utilizar sin problema 255.255.255.255.Dirección IP estáticaSi su PSI, le ha provisto de una dirección de IP
estática y un nombre de host, puede capturarla. De otra
forma podemos dejar que el servidor asigne cualquier IP que
corresponda.Si usted no cuenta con alguna de la información que hemos
comentado, le recomendamos contactar con su PSI para requerirla.En el transcurso de la presente sección, algunos
ejemplos muestran el contenido de archivos de configuración
los cuales presentan una numeración. Estos números
sirven como ayuda y referencia a cada línea, pero estos no
deben de estar presentes en el archivo original. Una sangría
adecuada, así como espacios adecuados, también son
de suma importancia.Preparando el KernelComo se comento anteriormente, la aplicación
ppp utiliza el dispositivo
tun. Si este dispositivo no ha sido
compilado dentro del kernel, ppp
lo cargará como módulo cuando sea requerido. El
dispositivo tun es dinámico, de tal forma que se
generara de acuerdo a la demanda que tenga (usted no esta
limitado por el kernel).Vale la pena hacer notar que el controlador tun, crea los
dispositivos de acuerdo a sus necesidades, por lo que el comando
ifconfig -a, no necesariamente mostrará
los dispositivos tun.Verificando el dispositivo tunBajo circunstancias normales, la mayoría de los usuarios
sólo utilizaran un dispositivo tun
(/dev/tun0). En lo sucesivo podemos hacer
referencia a tun0 con la expresión
tunN donde N
es el número que corresponde en su sistema.Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS
la existencia de tun0 debe ser verificada
(esto no es necesario si se cuenta habilitada la opción DEVFS
ya que los nodos de dispositivos seán creados en función
a las necesidades).La forma más sencilla de verificar si el dispositivo
tun0 se encuentra configurado
correctamente, es la de rehacer el dispositivo. Para hacer esto
simplemente siga los siguientes pasos:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV tun0Si usted necesita 16 dispositivos tun en su kernel, deberá
crearlos. Esto puede hacerse de la siguiente manera:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV tun15Configuración de la Resolución de NombresresolverhostnamehostsLa resolución es la parte del sistema que busca una
dirección IP en los nombres de servidores (host) y
viceversa. Puede ser configurado para que busque en "mapas" que
describen la IP del servidor en uno de dos lugares, el primero
es un archivo llamado /etc/hosts.
Lea &man.hosts.5; para más información al
respecto. El segundo es el Servicio de Nombres de Dominio de
Internet (DNS-Internet Domain Name Service), el cual es una
base de datos de distribución. Para mayor información
con respecto a los DNS, referirse a dns.La resolución de nombres es un sistema que por medio de
llamadas, realiza el mapeo de nombres, pero es necesario inidicarle donde
debe buscar la información. Para versiones de FreeBSD anteriores
a la 5.0, esto es hecho al editar el archivo /etc/host.conf.
La versión 5.0 de FreeBSD utiliza el archivo /etc/nsswitch.conf.
Edición del archivo /etc/host.confPara versiones de FreeBSD anteriores a la 5.0, este archivo
debe contener las siguientes dos líneas (en este orden):hosts
bindEsto le indica a la resolución que busque en primer
término en el archivo /etc/hosts, y
posteriormente en el DNS, si el nombre no fué localizadoEditando el archivo /etc/nsswitch.confPara versiones de FreeBSD 5.0 y posteriores, este archivo debe
contener, al menos, la siguiente línea:hosts: files, dnsEsto le indica a la resolución de nombres, que
busque en primer lugar en el archivo /etc/hosts,
y en caso de que el nombre no haya sido localizado, busque en
el DNS.Editando el archivo /etc/hostsEste archivo puede contener direcciones IP, así como
el nombre de las máquinas de su red local. Como mínimo
debe contar con la información de la máquina que
correrá ppp. Asumiendo que su ordenador se llama
foo.bar.com con la dirección
IP 10.0.0.1, el archivo
/etc/hosts debiese contener:127.0.0.1 localhost.bar.com localhost
::1 localhost.bar.com localhost
10.0.0.1 foo.bar.com fooLas primeras dos líneas definen el alias del
localhost, como sinónimo de la maquina
actual. Independientemente de su propia dirección IP, la
dirección IP en estas líneas siempre debe ser 127.0.0.1 y ::1.
La última línea especifica el nombre
foo.bar.com (asi como foo para acortarlo), para
la dirección 10.0.0.1.La dirección 127.0.0.1 y el nombre
localhost son conocidos como direcciones "loopback"
las cuales hacen un "loopback" (salto de regreso) a la maquina local.Si su proveedor de Internet, le asigna una dirección IP
fija, asín como un nombre, y usted no lo utiliza como nombre
del host, añada esto también al archivo
/etc/hosts.Editando el archivo /etc/resolv.confEl archivo /etc/resolv.conf, le indica a la
resolución de nombres, como comportarse. Normalmente deberá
de incluir la(s) siguiente(s) línea(s):domain ejemplo.com
nameserver x.x.x.x
nameserver y.y.y.yDonde x.x.x.x y
y.y.y.y deben reemplazarse con las direcciones
IP de los servidores DNS, de su
ISP. Puede ser que esta información se la
hayan entregado al suscribirse o no, pero una rápida llamada a su
ISP debe resolver esto.Tambié puede configurar su sistema, de tal forma que
&man.syslog.3; provee de un login para su conección por
PPP. Sólo añada:
!ppp
*.* /var/log/ppp.logal fichero /etc/syslog.conf. En la
mayoría de los casos esto funciona bien.Configuración Automática de
PPPPPPconfiguraciónAmbos, ppp así como pppd
(la implementación del kernel para PPP), utilizan la
configuración de los archivos localizados en el directorio
/etc/ppp.
Ejemplos para ppp, pueden encontrarse en:
/usr/share/examples/ppp/.Para efecto de configurar correctamente ppp, es
necesario editar varios ficheros, dependiendo de sus necesidades. La
manera en que edite dichos archivos, depende en la forma que utilice su
PSI (Proveedor de Servicios de Internet) para brindarle conexión,
ya sea por medio de una dirección IP estática o bien una IP
dinámica (ya sea que cada vez que se conecta obtiene una nueva
dirección).PPP y direcciones de IP estáticas (fijas)PPP con dirección IP fijaSerá necesario editar el archivo de configuración;
/etc/ppp/ppp.conf. Y deberá quedar de una
manera similar al ejemplo que se describe a continuación.Las líneas que terminan con :, deben
comenzar en la primer columna del archivo — el resto de las
líneas deberán utilizar sangría como se muestra,
utilizando espacios o bien el tabulador. La mayor parte de la
información que requiere ingresar aqui, se mostro en el
marcado manual anterior.1 default:
2 set log Phase Chat LCP IPCP CCP tun command
3 ident user-ppp VERSION (built COMPILATIONDATE)
4 set device /dev/cuaa0
5 set speed 115200
6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
8 set timeout 180
9 enable dns
10
11 provider:
12 set phone "(123) 456 7890"
13 set authname foo
14 set authkey bar
15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
16 set timeout 300
17 set ifaddr x.x.x.xy.y.y.y 255.255.255.255 0.0.0.0
18 add default HISADDRLínea 1:Identifica la entrada por omisión a utilizar.
Los comandos descritos en esta parte, serán ejecutados de
manera automática cuando se ejecute ppp.Línea 2:Habilita los par´metros de acceso. Cuando la
configuración trabaja sin problemas, esta línea
deberá quedar de la siguiente forma:
set log phase tun
para efecto de evitar avisos masivos del sistema (logs).Línea 3:Esta línea le indica a PPP como identificarse ante el puerto.
PPP se identifica, si tiene algun problema para efecto de establecer
la conexión, en esta identificación, PPP provee de
cierta información que puede resultar util para detectar el
probelma.Línea 4:Le indica a PPP cual es el dispositivo a utilizar para realizar
la conexión, o bien al que esta conectado el módem.
El dispositivo COM1 es
/dev/cuaa0 y
COM2 es
/dev/cuaa1.Línea 5:Establece la velocidad a utilizar en la conexión.
Si la velocidad de 115200 no trabaja correctamente (la cual
deberia con cualquier módem normal), intente con una
velocidad inferior, como puede ser 38400.Líneas 6 y 7:PPPuser PPPLa cadena de inicialización. El modo User PPP, utiliza
y espera enviar-recibir, la información utilizando una
sintaxis similar a la descrita en el programa &man.chat.8;. Favor
de consultar la página de ayuda para conocer las opciones
de este lenguaje.Nota: Este comando continua en la siguiente línea, para
facilitar su lectura. Cualquier comando en el archivo
ppp.conf puede utilizar este formato, siempre
y cuando el último caracter de la línea sea una
diagonal invertida "\".Línea 8:Establece el tiempo de espera que debe tratar de realizar la
conexión. Por omisión se establecen 180 segundos, por
lo que esta línea se deja por pura estética.Línea 9:Esta línea le indica a PPP, que solicite confirmación
al puerto, sobre la configuración de la resolución local.
Si usted esta corriendo un servidor local de nombres, deberá
comentar o eliminar esta línea.Línea 10:Una línea en blanco, para facilitar la lectura. Las
líneas en blanco son ignoradas por PPP.Línea 11:Identifica el incio de datos para un proveedor
determinado, de servicios de internet. Este podrá ser cambiado
por el nombre de su ISP, de tal forma que en lo
sucesivo utilice la opción , para
iniciar una sesión.Línea 12:Indica el numero telefónico del proveedor.
Pueden indicarse varios numeros a utilizar, utilizando el signo
de dos puntos (:) o bien la barra
(|) como separador. La diferencia entre
estos dos separadores, es detallada en el &man.ppp.8;. Pero
en resumen, se puede decir que si se desean utilizar varios
numeros de manera aleatoria se debe utilizar los dos puntos,
pero si se desea siempre utilizar el primer numero y en caso
de falla el siguiente y así sucesivamente, se debe utilizar
la barra. Es importante que todo lo que se refiere a numeros
telefonicos, este entre comillas como se muestra. Es
importante que si piensa usar espacios en los numeros, haga
uso de estas comillas ("). La falta de
estas pueden ocasionar un simple error.Líneas 13 y 14:Identifica el nombre de usuario y su contraseña. Cuando
uno se conecta utilizando un login de tipo Unix, estos valores hacen
referencia al comando set login, utilizando las
variables \U y \P. Cuando la conexión es utilizando algún
metodo como PAP o CHAP, estos valores, son utilizados al momento de la
autentificación.Línea 15:PAPCHAPSi usted esta utilizando el metodo PAP o CHAP, no habrá
un login en este punto, y esta línea deberá ser
comentada (utilizando el símbolo # al
principio de la línea) o bien eliminada por completo.
Vea la parte
Autentificación con PAP y CHAP
para más detalles.La cadena de acceso (login), utiliza la misma sintáxis que
se utiliza en la cadena de marcado. En este ejemplo, la cadena sirve
para un servicio, en el cual el inicio de sesión se ve algo
así como lo siguiente:Proveedor de servicios X
login: foo
password: bar
protocol: pppEs recomendable editar el script, para que se ajuste a sus propias
necesidades. Cuando cree este script por primera vez, asegurese de
haber habilitado la parte que se refiere a al acceso por medio de
chat, para efecto de poder dar seguimiento al curso de
la conexión y la resolución de la misma.Línea 16:timeoutEstablece el tiempo por defecto en el que se perderá la
conexión (en segundos). En este caso la conexión
será cortada de forma automática, después de
300 segundos de inactividad. Si no desea habilitar esta función
establezca este valor en cero o bien utilice el comando en línea
.Línea 17:ISPIndica la dirección de la interfaz. La cadena que aparece
como x.x.x.x., debe se cambiada por la
dirección asignada por su PSI. La línea que aparece como
y.y.y.y., debe se substituida por la
direcció IP especificada por su PSI, como servidor de salida o
pasarela (gateway)(la maquina a la cual se va a conectar). Si su PSI
no le ha indicado una dirección de este tipo, puede utilizar
10.0.0.2/0. Si usted necesita utilizar
una dirección aleatoria, asegurese de crear el
fichero /etc/ppp/ppp.linkup, siguiendo las
instrucciones de PPP y las
direcciones de IP Dinámicas, para su llenado. Si esta
línea es omitida, ppp, no podrá
ejecutarse en el modo .Línea 18:Añade una ruta por omisión al servidor de salida
de su PSI. La palabra especial HISADDR se
reemplaza con la dirección del gateway indicado por su PSI,
que esta en la línea 9, de otra forma HISADDR
no será inicializado.Si no desea ejecutar ppp en modo
, esta línea deberá pasar al
archivo ppp.linkup.No hay necesidad de editar el archivo ppp.linkup
si usted cuenta con una dirección IP estática y se esta
ejecutando ppp en modo , en virtud de que para
efecto de realizar la conexión sus mapas de ruteo debe estar
correctas. De cualquier forma puede ser que usted desee ejecutar
algun programa/comando, posterior a la conexión. Este es
explicado con más detalle posteriormente, cuando se vea el
ejemplo de sendmail.Ejemplo de los archivos de configuración, se pueden
encontrar en el directorio; /usr/share/examples/ppp.
PPP y direcciones de IP Dinámicas (Variables)PPPcon direcciones IP dinámicaIPCPSi su proveedor de servicios, no le asigna una dirección de IP
fija, será necesario configurar a ppp, de tal
forma que al momento de realizar la conexión, negocie tanto la
dirección local, como la remota. Esto se lleva a cabo al
adivinar una dirección IP y permitiendo a
ppp que la establezca correctamente, usando el
Protocolo de Configuración de IP (IPCP), una vez que se ha
conectado. La configuración que debe tener el archivo
ppp.conf, es la misma que la utilizada en
PPP y direcciones de IP fijas,
salvo el siguiente cambio:17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255Una vez más, no debe incluir el numero de línea, este
sólo es una referencia. Así mismo deberá existir
sangrado, de cuando menos 1 espacio.Línea 17:El numero siguiente a la diagonal (/), es el
numero de bits de la dirección en la cual ppp insistirá
en conectarse. Puede ser que usted desee utilizar numeros de IP que
sean más apropiados, para ajustar a sus necesiadades, pero el
ejemplo descrito anteriormente siempre podrá utilizarse.El último argumento (0.0.0.0), le
indica a PPP, que inicie las negociaciones, utilizando como
dirección 0.0.0.0, en lugar de
que utilice 10.0.0.1, lo cual es
necesario con algunos proveedores. No utilice la dirección
0.0.0.0 como el primer argumento, para el comando
set ifaddr, ya que impide que PPP configure de
forma correcta el sistema, cuando se utiliza en modo
.Si usted no esta ejecutando PPP en modo ,
deberá editar su archivo /etc/ppp/ppp.linkup.
El archivo ppp.linkup, es utilizado una vez que se
ha realizado la conexión. En este punto, ppp
habrá negociado una dirección de interfaz, y será
posible ahora, añadir las entradas para la las tablas de ruteo:
1 provider:
2 add default HISADDRLínea 1:Al establecer (ppp) una conexión,
buscará en ppp.linkup una entrada, de
acuerdo a las siguientes reglas. Primero, tratar de encontrar una
entrada que sea igual a la utilizada en el archivo
ppp.conf. Si esto falla, buscar una IP con la
dirección de nuestro gateway. Esta entrada es una etiqueta
de tipo IP, de cuatro-octetos. Si aun después de esto no se
ha detectado la entrada correcta, buscar la entrada
MYADDR.Línea 2:Esta línea le indica a ppp que
añada una ruta por omisión, que este dirigida hacia
HISADDR.
HISADDR será reemplazada, con la IP del
gateway, como se negocio por IPCP.Para ver un detalle más preciso de esto, puede consultar
la entrada de pmdemand en los archivos de ejemplo
/usr/share/examples/ppp/ppp.conf.sample así
como /usr/share/examples/ppp/ppp.linkup.sample.
Recibiendo Llamadas ExternasPPPrecibiendo
llamdas externasCuando se configure ppp, para recibir
llamadas externas, en una maquina conectada a un LAN (Red de Area Local),
debe decidir si se va a permitir el envío de paquetes a la LAN. Si
es así, debe asignar un numero de IP de su red local y utilizar el
comando enable proxy en el archivo de configuracion
/etc/ppp/ppp.conf. También deberá
asegurarse que en su archivo /etc/rc.conf cuente
con la línea:
gateway_enable="YES"¿Qué getty utilizar?El enlace
Configurando FreeBSD para Servicios de Marcado provee de una buena
descripció, sobre la configuración de estos servicios,
basado en &man.getty.8;.Una alternativa para el comando getty
es mgetty
, el cual es una versión más inteligente de getty
diseñada para servicios de marcado telefonico.Una de las principales ventajas de mgetty es
que, de hecho platica con los modems, esto es,
significativo, ya que si el puerto esta desactivado en su
/etc/ttys el modem no responderá el
llamado.Las últimas versiones de mgetty
(de la 0.99beta y sucesivas), también cuentan con soporte
para la detección automática de llamados de PPP,
permitiendo el acceso a servidores de una manera más sencilla
(sin uso de tanto scripts).Puede referirse a Mgetty y
AutoPPP para más información con respecto
al comando mgetty.Permisos de PPPEl comando ppp normalmente debe ser ejecutado
por root (superusuario). Si de cualquier forma, usted desea permitir
que ppp pueda ser ejecutado en modo servidor, por
un usuario regular, como se describe a continuación,
deberá otorgar los permisos necesarios a ese usuario al
añadirlo al grupo network, en el fichero
/etc/groups.También será necesario darle acceso a una o
más partes del archivo de configuración, haciendo
uso del comando allow, como se ve
a continuación:allow users fred marySi el comando es utilizado en la sección
default, esto le dará a el(los)
usuario(s) especificado(s), acceso a todo.Shells de PPP para Usuarios de IP DinámicaPPP shellsCree un fichero llamado:
/etc/ppp/ppp-shell y que contenga
lo siguiente:#!/bin/sh
IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
CALLEDAS="$IDENT"
TTY=`tty`
if [ x$IDENT = xdialup ]; then
IDENT=`basename $TTY`
fi
echo "PPP for $CALLEDAS on $TTY"
echo "Starting PPP for $IDENT"
exec /usr/sbin/ppp -direct $IDENTEste script deberá ser ejecutable. Ahora cree un
enláce simbólico llamado ppp-dialup
a este script, utilizando los siguientes comandos:&prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialupDeberá utilizar este script como
shell para todos los usuarios que realicen
conexión.
Este es un ejemplo del fichero /etc/password
para un usuario con acceso a PPP, con nombre de usuario
pchilds (recuerde no editar directamente el
fichero password, utilice vipw).pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialupCree un directorio llamado /home/ppp que
contenga los siguentes archivos de 0 bytes:-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin
-r--r--r-- 1 root wheel 0 May 27 02:22 .rhostslos cuales impiden que /etc/motd sea
desplegado.Shells de PPP para Usuarios de IP EstáticaPPP shellsCree el fichero ppp-shell al igual
que el mencionado con anterioridad, y por cada cuenta donde
se tenga asignada una IP estática, cree un enlace
simbólico al fichero ppp-shell.Por ejemplo, si usted cuenta con tres usuarios que utilicen
este servicio; fred, sam
y mary, los cuales redirecciona a una red de
clase C, habria que hacer lo siguiente:&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-maryCada uno de los usuarios señalados, deberán
de contar con el enlace a su shell-script como se indicó
(por ejemplo, el usuario mary, debe contar
con su enlace al fichero /etc/ppp/ppp-mary).Configurando ppp.conf para Usuarios
de IP-DinámicaEl archivo /etc/ppp/ppp.conf deberá
contener algo similar a lo siguiente:default:
set debug phase lcp chat
set timeout 0
ttyd0:
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
ttyd1:
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxyTomar en cuenta el sangrado, ya que es importante.La sección default: es cargada
para cada sesión. Para cada línea que exista y
habilite el marcado, en el fichero /etc/ttys,
se deberá crear una entrada similar a la línea
ttyd0: mencionada arriba. Cada línea
debera contar con su propia dirección IP, de sus direcciones
IP disponibles para asignar dinámicamente.Configurando ppp.conf para Usuarios
de IP EstáticaJunto con el contenido del fichero de ejemplo
/usr/share/examples/ppp/ppp.conf mencionado
anteriormente, deberá agregar una sección para cada
usuario asignado estáticamente.
Continuaremos con nuestro ejemplo con los usuarios
fred, sam y
mary.fred:
set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255
sam:
set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255
mary:
set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255El archivo /etc/ppp/ppp.linkup
deberá de contener también información
del ruteo, para cada IP estática, si es necesario. Las
líneas a continuación añadirán una
ruta a la dirección 203.14.101.0
de clase C, por medio del ppp link del cliente.fred:
add 203.14.101.0 netmask 255.255.255.0 HISADDR
sam:
add 203.14.102.0 netmask 255.255.255.0 HISADDR
mary:
add 203.14.103.0 netmask 255.255.255.0 HISADDRAlgo más de mgetty, AutoPPP, y
Extensiones MSmgetty y AutoPPPmgettyAutoPPPLCPConfigurando y compilando mgetty con
la opción AUTO_PPP habilitada, permite
a mgetty detectar la fase LCP de conexiones PPP
y automáticamente enviarlo a un shel de ppp. Aun con esto,
y debido a que no se ingresa el nombre de usuario y contraseña,
es necesario autntificarse por medio de PAP o CHAP.Esta sección asume que el usuaio ha configurado,
compilado e instalado correctamente una versión de
mgetty, con la opción
Auto_PPP (v0.99beta o posterior).Asegurese de que su fichero
/usr/local/etc/mgetty+sendfax/login.conf
contiene la siguiente línea en él:/AutoPPP/ - - /etc/ppp/ppp-pap-dialupEsto le indicará a mgetty que ejecute
el script ppp-pap-dialup, para efecto de detectar
conexiones de tipo PPP.Cree un fichero llamado
/etc/ppp/ppp-pap-dialup que contenga
las siguientes líneas (el fichero deberá
ser ejecutable):#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENTPara cada línea de marcado habilitada en
/etc/ttys, cree la entrada
correspondiente en /etc/ppp/ppp.conf.
Esto co-existirá pacíficamente con las
definiciaones que se hayan hecho, de acuerdo a lo mostrado
en la parte de arriba.pap:
enable pap
set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
enable proxyCada usuario que ingrese al sistema utilizando este
metodo, deberá de contar con su clave de usuario,
así como su contraseña, en el archivo
/etc/ppp/ppp.secret, o bien agrege
la siguiente opción, para efecto de que se pueda realizar
la autentificación por medio de PAP, directamente
del fichero /etc/password.enable passwdauthSi desea asignar una dirección IP fija a
algunos usuarios, puede especificar el número como
un tercer argumento en el fichero
/etc/ppp/ppp.secrets. Vea el archivo
/usr/share/examples/ppp/ppp.secret.sample
para obtener ejemplos más detallados de esto.Extensiones de MSDNSNetBIOSPPPExtensiones MicrosoftEs posible configurar PPP, para efecto de que
brinde a DNS y a NetBIOS, direcciones de servidores
de nombres de forma automática.Para efecto de habilitar estas extensiones con PPP
versión 1.x, las siguientes líneas
deberán añadirse a la sección relevante
de /etc/ppp/ppp.conf.enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5Y para versiones de PPP 2 y posteriores:accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5Esto le indicará a los clientes, las direcciones
del servidor primario y secundario y el servidor-host para
NetBIOS.Si la línea set dns, es omitida
en versiones 2 y posteriores, PPP utilizará los valores
que encuentre en /etc/resolv.conf.Autentificación por medio de PAP y CHAPPAPCHAPAlgunos proveedores de internet tienen su sistema
configurado para que cada usuario al conecatrse sean
autentificados por medio de PAP o CHAP. Si este es el caso,
al momento de realizar la conexion, no aparecerá
un login:, sino que comenzará a
comunicarse PPP inmediatamente.El metodo PAP es menos seguro que CHAP, pero la seguridad
normalmente no se toma mucho en cuenta en este tipo de
conexiones, en funcion de que al enviarse la información
de contraseña en texto plano, por medio de una
línea serial, no deja mucho espacio para que los
crackers husmeen.Haciendo referencia a lo que vimos de
PPP y Direcciones de IP
Fijas o bien PPP y Direcciones
de IP Dinámicas, habría que aplicar los
siguientes cambios:7 set login
…
12 set authname MiNombreDeUsuario
13 set authkey MiContraseñaLínea 7:Su PSI normalmente requerirá que usted ingrese
al sistema, cuando se utiliza PAP o CHAP. Por esta
razón debemos deshabilitar la línea que
corresponde a set login.Línea 12:Esta línea especifíca a PAP/CHAP su nombre
de usuario. Usted deberá cambiar el valor a quedar el
nombre correcto en el campo;
MiNombreDeUsuario.Línea 13:MiContraseñaEsta línea especifíca su contraseña
de PAP/CHAP. Es necesario que usted cambie el valor a quedar
el dato correcto, en el campo;
MiContraseña. Quizás
sea recomendable que añada una línea a quedar:15 accept PAPo15 accept CHAPla intención de esto es para hacerlo obvio,
aunque en realidad PAP y CHAP son aceptadas por
omisión.Cambiando la configuración de ppp
sobre la marcha (al vuelo)Es posible hablar con el programa ppp
mientras se esta ejecutando en segundo plano, pero sólo
si se ha habilitado un puerto de diagnóstico. Para
hacer esto, añada lo siguiente a su
configuración:set server /var/run/ppp-tun%d DiagnosticPassword 0177Esto le indicará a PPP que preste
atención al socket del dominio-Unix, solicitando a
los usuarios su contraseña, antes de permitir el acceso.
La variable %d deberá ser reemplazada
por el numero de dispositivo tun que
este utilizando (ej. tun0).Una vez que se a configurado el socket, se puede utilizar
&man.pppctl.8; en scripts que deseen manipular el programa.
Configuración Final del SistemaPPPconfiguraciónAhora usted cuenta con un ppp configurado,
pero es necesario hacer algunas cosas, antes de que este disponible
para trabajar. Todas ellas giran entorno a la edición del
fichero /etc/rc.conf.En primer lugar es importante que se asegure que ha asignado
un nombre a su maquina. Esto se hace asignandolo en la línea
de hostname=, por ejemplo:hostname="foo.ejemplo.com"Si su Proveedor de Servicios de Internet (PSI), le ha
provisto de una dirección fija y un nombre de host, es
recomendable que utilice este como su
hostname.Localice la línea que se refiera a sus dispositivos
de red, la cual es network_interfaces.
Si desea configurar su sistema para marcar a su PSI a petición,
asegurese de que el dispositivo tun0 este
en la lista, de otra forma eliminelo.network_interfaces="lo0 tun0" ifconfig_tun0=La variable ifconfig_tun0 debe permanecer
en blanco (vacia), y deberá crearse un fichero llamado
/etc/start_if.tun0 que contenga la siguiente
línea:ppp -auto MiSistemaEste script se ejecuta cuando se esta configurando la red,
inicializando el demonio de ppp de modo automático. Si
usted cuenta con una LAN (red de área local), de la cual
esta maquina sea la pasarela (gateway), es tambien recomendable
que utilice la opción . Referirse
a la página de ayuda (man) para mayores detalles.Especifique el programa router a NO, con
la siguiente línea en su fichero
/etc/rc.conf:router_enable="NO"routedEs importante que el demonio routed
no se inicialice por default, en virtud de que
routed tiende a eliminar las variables
creadas por ppp.Probablemente valga la pena asegurarse de que la
línea sendmail_flags, no incluya
la opción , ya que de ser así
sendmail intentará localizar los
parámetros de la red de vex en cuando, ocasionando que realice
llamados al exterior. Puede intentar esto:sendmail_flags="-bd"sendmailLa parte negativa de esta conifguración es que tiene
que forzar a sendmail a re-examinar los llamados
del servidor de correo, cada vez que ppp realiza
una conexión, con el siguiente comando:&prompt.root; /usr/sbin/sendmail -qPuede utilizar el comando !bg en el fichero
ppp.linkup para hacer esto de manera
automática:1 provider:
2 delete ALL
3 add 0 0 HISADDR
4 !bg sendmail -bd -q30mSMTPSi usted no desea hacer esto, es posible establecer un
dfilter (filtro), para bloquear el tráfico al
servidor de salida de correo (SMTP). Favor de referirse a los archivos
de ejemplos para mayor detalle al respecto.Ahora lo único que queda pendiente de hacerse es
reiniciar el equipo. Una vez reiniciado el equipo, puede teclear:&prompt.root; pppy posteriormente dial proveedor para iniciar
la sesión, o bien si desea que ppp inicie la
sesión automáticamente, cuando haya una petición de salida
(y no haya creado el fichero start_if.tun0), puede
teclear:&prompt.root; ppp -auto proveedorSummarioA manera de recapitulación, podemos decir que para
configurar ppp por primera ocasión, debemos:Por parte del Cliente:Asegurese de que existe el dispositivo tun
dentro de su kernel.Asegurses de que el dispositivo
tunX, se encuentra
disponible, bajo el directorio /dev.Cree una entrada en su fichero
/etc/ppp/ppp.conf. Con el fichero de ejemplo
pmdemand debe ser suficiente para la mayoria de
proveedores.Si cuenta con una dirección de IP dinámica, cree
una entrada en el fichero /etc/ppp/ppp.linkup
.Actualice su fichero /etc/rc.conf.Cree un archivo script llamado start_if.tun0
si requiere servicio de conexión a solicitud.Por parte del Servidor:Asegurese de que dentro de su kernel exista el dispositivo
tun.Asegurses de que el dispositivo
tunX, se encuentra
disponible, bajo el directorio /dev.Cree una entrada en el fichero /etc/passwd
(usando el programa &man.vipw.8;).Cree un perfil en el directorio home de este usuario, que ejecute
ppp -direct direct-server o algo
similar.Cree una entrada en el fichero
/etc/ppp/ppp.conf. El fichero de ejemplo
direct-server debe ser suficiente para
darse una idea.Cree una entrada en el fichero
/etc/ppp/ppp.linkup.Actualice su fichero /etc/rc.conf.Gennady B.SorokopudPartes originalmente desarrolladas por RobertHuff
- Usando Kernel PPP
+ Uso de Kernel PPPConfigurando Kernel PPPPPPkernel PPPAntes de comenzar a configurar PPP en su maquina,
asegurese de pppd se localiza en
/usr/sbin y de que existe el directorio
/etc/ppp.pppd puede trabajar de dos manerasComo un cliente — cuando desea conectar
su maquina al mundo exterior utilizando PPP, por medio de una
conexión serial o bien una línea de modem.PPPservidorcomo un servidor — cuando su maquina esta
conectada a una red y es utilizada para que otras maquinas se
conecten utilizando ppp.En ambos casos, será necesario configurar un
fichero de opciones (/etc/ppp/options o bien
~/.ppprc si se cuenta con más de un
usuario que utilizará ppp en la misma maquina.También deberá de contar con un software para
hacer la conexión por medio de módem (de
preferencia kermit), de manera que pueda hacer la conexión
con un host remoto.TrevRoydhouseBasedo en información provista por
- Usando pppd como Cliente
+ Uso de pppd como ClientePPPclienteCiscoEl siguiente archivo de configuración
/etc/ppp/options puede utilizarse para
realizar la conexión a una terminal CISCO, por medio
de PPP.crtscts # habilita el flujo de controls de hardware
modem # línea de control del modem
noipdefault # el servidor PPP remoto asignará la dirección IP
# si el servidor no envia una dirección IP durante IPCP
# remueva esta opción.
passive # espere por los paquetes LCP
domain ppp.foo.com # escriba su nombre de dominio aqui
:<remote_ip> # escriba la IP del host remoto aqui
# este será utilizado para el ruteo de paquetes por medio
# de PPP, si no especifica esta opción, cambie la
# línea a quedar <local_ip>:<remote_ip>
defaultroute # establezca esta opción si el servidor su ruteador
# por defaultPara conectarse:kermitmodemRealice el llamado al host remoto, utilizando kermit
(o cualquier otra aplicación de este tipo), ingrese su
nombre de usuario y contraseña (o cualquier info que
sea necesaria para habilitar PPP en el host remoto).Salga de kermit (sin colgar la línea).Ingrese lo siguiente:&prompt.root; /usr/src/usr.sbin/pppd.new/pppd /dev/tty0119200Asegurese de utilizar el dispositivo y la velocidad adecuados.Ahora su computadora esta conectada por medio de PPP. Si la
conexión falla, puede añadir la opción
en el fichero /etc/ppp/options
de tal forma que pueda verificar la que esta ocurriendo y pueda
resolver el problema.El siguiente script; /etc/ppp/pppup
realizará los 3 pasos de forma automática:#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200kermitEl fichero /etc/ppp/kermit.dial es un
script de kermit, uqe realiza el marcado y negocia la
autorización necesaria con el host remoto (un ejemplo de
este script se encuentra al final de este documento).Utilice el siguiente script, llamado
/etc/ppp/pppdown para desconectar la
línea PPP:#!/bin/sh
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptestVerifique que su PPP aun se esta ejecutando, por medio de
/usr/etc/ppp/ppptest, que deberá verse
algo similar a esto:#!/bin/sh
pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0Para colgar el módem, ejecute
/etc/ppp/kermit.hup, que deberá
contener:set line /dev/tty01 ; aqui va el dispositivo del modem
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exitHe aqui un metodo alterno, donde se utiliza chat
en lugar de utilizar kermit.Los siguientes dos ficheros deben ser suficiente, para realizar
una conexión por medio de pppd./dev/cuaa1 115200
crtscts # habilita el control de flujo por medio de hardware
modem # línea de control del módem
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # el servidor remoto debe asignar la dirección IP.
# si el servidor no asigna una IP durante la negociación
# IPCP , remueva esta línea y espere por los
passive # paquetes LCP
domain <your.domain> # aqui va su dominio
: # escriba la IP del host remoto aqui
# si no ha especificado la opción noipdefault
# cambie esta línea a quedar <local_ip>:<remote_ip>
defaultroute # escriba esto, si desea que el servidor PPP sea su
# router por default/etc/ppp/login.chat.script:Lo siguiente debe ir en una sola línea.ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<numero.de.telefono>
CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <nombre.usuario>
TIMEOUT 5 sword: <contraseña>Una vez que estos ficheros han sido modificados correctamente e
instalados, todo lo que necesita es ejecutar el comando
pppd, algo como:&prompt.root; pppd
- Usando pppd como Servidor
+ Uso de pppd como ServidorEl fichero /etc/ppp/options debe
contener algo similar a lo siguiente:crtscts # control de flujo por Hardware
netmask 255.255.255.0 # mascara de red (no es requisito)
192.114.208.20:192.114.208.165 # direcciones ip del host local y remoto
# la dirección ip local debe ser
# diferente a la que le haya asignado a su
# dispositivo de red ethernet (u otro)
# la dirección ip remota que será
# asignada a la maquina remota
domain ppp.foo.com # su dominio
passive # espera por LCP
modem # línea de modemEl siguiengte script, llamado /etc/ppp/pppserv
habilitará pppd, para que actue como
servidor:#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200Utilice el script /etc/ppp/pppservdown
para detener el servidor:#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noansEl siguiente script de kermit
(/etc/ppp/kermit.ans) habilita/deshabilita
el modo de autorespuesta en su módem. Y debe verse algo similar
a lo siguiente:set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13 ; cambiar esto a quedar out ATS0=0\13 si desea deshabilitar el modo
; de autorespuesta
inp 5 OK
echo \13
exitUn script llamado /etc/ppp/kermit.dial es
utilizado para llamar y autentificarse en un host remoto. Es
necesario que edite este fichero, de acuerdo a sus necesidades.
Escriba su nombre de usuario (login) y contraseña (password)
en este fichero, también será necesario cambiar su
metodo de conexión, de acuerdo a lo que se ajuste a sus
necesidades.;
; ingrese el dispositivo que esta apuntando a su módem:
;
set line /dev/tty01
;
; escriba la velocidad del módem:
;
set speed 19200
set file type binary ; full 8 bit file xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto ; Posteriormente SET CARRIER si es necesario
set dial display on ; despues SET DIAL si es necesario
set input echo on
set input timeout proceed
set input case ignore
def \%x 0
goto slhup
:slcmd ; cambio a modo de comando
echo Put the modem in command mode.
clear ; Limpieza del buffer de entrada
pause 1
output +++
input 1 OK\13\10 ; esperar para OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; si el modem no responde Ok, intentar de nuevo
:slhup ; colgar el teléfono
clear ; Limpieza del buffer de entrada
pause 1
echo Hanging up the phone.
output ath0\13
input 2 OK\13\10
if fail goto slcmd ; si no hay un OK como respuesta, poner el modem en modo de comando
:sldial ; marcar el numero telefonico
pause 1
echo Dialing.
output atdt9,550311\13\10 ; escriba el numero de telefono
assign \%x 0 ; asignar cero al contador
:look
clear ; Limpieza del buffer de entrada
increment \%x ; Conteo de segundos
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin ; login
assign \%x 0 ; asignar cero al contador
pause 1
echo Looking for login prompt.
:slloop
increment \%x ; Conteo de segundos
clear ; Limpieza del buffer de entrada
output \13
;
; escriba su login prompt aqui:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop ; intentar 10 veces para obtener un login
else goto slhup ; colgar y empezar de nuevo si a la decima falla
:sluid
;
; escriba su nombre de usuario:
;
output ppp-login\13
input 1 {Password: }
;
; escriba su contraseña:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:JimMockContribuido (tomado de http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) por
- Usando PPP sobre Ethernet (PPPoE)
+ Uso de PPP sobre Ethernet (PPPoE)PPPsobre EthernetPPPoEPPP, sobre EthernetEn esta sección veremos como configurar PPP
sobre una red Ethernet (PPPoE).Configurando el kernelYa no es necesario realizar una configuración especial
para que nuestro kernel cuente con soporte para PPPoE. Siempre y
cuando el soporte de redes necesario se encuentre en él,
ppp se encargará de cargarlo
de una manera dinámica.Editando el fichero ppp.confHe aqui un ejemplo de un fichero de configuración
ppp.conf completamente funcional:default:
set log Phase tun command # puede añadir más dispositivos si lo desea
set ifaddr 10.0.0.1/0 10.0.0.2/0
nombre_del_proveedor_del_servicio_de_internet:
set device PPPoE:xl1 # sustituya xl1 con su dispositivo ethernet
set authname SuNombreDeUsuario
set authkey SuContraseña
set dial
set login
add default HISADDREjecutando PPPEstando en modo superusuario (root)
puede ejecutar:&prompt.root; ppp -ddial nombre_del_proveedor_de_inetEjecutando PPP al inicio de sesiónAñada las siguientes líneas a su archivo
/etc/rc.conf:ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # siempre y cuando desee habilitar nat para su red local
ppp_profile="nombre_del_proveedor_de_inet"Diferenciando el uso del Servicio de PPPoEEn ocasiones es necesario utilizar una pequeña marca para
diferenciar el servicio que vamos a utilizar para establecer la
conexión. Las marcas (tags)de servicio son
utilizadas para distinguir entre diferentes servidores de una red,
a los que nos podemos conectar utilizando PPPoE.Su proveedor de internet debe haberle provisto de la
información necesaria para crear esta marca. Si esto
no fué así, puede solicitar a su proveedor que
le brinde esta información.Como último recurso, puede intentar el método
sugerido por el programa
Roarging Penguin
PPPoE, que puede encontrarse en la
colección de ports. Al
utilizar este programa debe tener en mente, que este puede
desconfigurar su módem por completo, por esta razón
piense biena antes de utilizarlo. Simplemente instale el programa
controlador del módem, provisto por su porveedor.
Posteriormente, debe acceder al menú de Sistema
del programa. El nombre de su perfil debe aparecer listado. Que
normalmente es ISP.El nombre del perfil (marca del servicio) será utilizada por
la configuración de PPPoE en el fichero de configuración
ppp.conf como el proveedor para la opción
del comando set device (puede ver la página de
ayuda &man.ppp.8; para más detalles). Esto debe verse algo
similar a lo siguiente:set device PPPoE:xl1:ISPNo olvide cambiar x11 por el
dispositivo Ethernet que este utilizando.No olvide cambiar ISP por el nombre
del perfil que le fué descrito anteriormente (por lo general
el nombre de su Proveedor de Servicio de Internet).Para información adicional consulte:Cheaper
Broadband with FreeBSD on DSL por Renauld Waldura.
- Usando PPPoE en Casa con un Modem Dual ADSL 3Com
+ Uso de PPPoE en Casa con un Modem Dual ADSL 3ComEste módem no sigue el estandar establecido en el RFC 2516
(Un metodo que describe el uso de PPP por medio de un
dispositivo Ethernet (PPoE), escrito por L. Mamakos, K. Lidl,
J. Evarts, D. Carrel, D. Simone y R. Wheeler). En su lugar, el
código de diferentes tipos de paquetes ha sido utilizado
para el manejo del entorno Ethernet. Si cree que esto es incorrecto
y que se debiera ajustar a las especificaciones de PPPoE, por favor
comentelo en 3Com.Para poder hacer que FreeBSD sea capaz de comunicarse con
este dispositivo, se debe establecer un control de sistema (sysctl).
Esto puede hacerse de forma automática al momento del
arranque, editando el fichero /etc/sysctl.conf:
net.graph.nonstandard_pppoe=1o bien pude hacerse desde la línea de comandos, para un
efecto inmediato, por medio del comando
sysctl -w net.graph.nonstandard_pppoe=1.Desafortunadamente y dado que esto implica una
configuración general del sistema, por lo que no es
posible comunicarnos con un dispositivo cliente — servidor
que utilice PPPoE y con un módem casero 3Com
ADSL, al mismo tiempo.
- Usando PPP sobre ATM (PPPoA)
+ Uso de PPP sobre ATM (PPPoA)PPPsobre ATMPPPoAPPP, sobre ATMLo siguiente describe como configurar PPP utilizando ATM, alias
PPPoA. PPPoA es una alternativa muy común entre proveedores de
DSL en Europa.
- Usando PPPoA con un Alcatel Speedtouch USB
+ Uso de PPPoA con un Alcatel Speedtouch USBEl soporte bajo FreeBSD para este dispositivo se puede encontrar
como un port, por que el firmware es distribuido bajo
la licencia de Alcatel.Para instalar este software, simplemente utilice la
colección de ports. Instale el
port net/pppoa y siga las
instrucciones provistas por el port.
- Usando mpd
+ Uso de mpdPuede usar mpd para conectarse a una gran
variedad de servicios, en particular servicios pptp. Puede encontrar
mpd en la colección de ports, bajo
net/mpd.Primero debe instalar el port, y posteriormente configurar
mpd para que se ajuste a sus necesidades y
a la configuración del proveedor. El port instala un conjunto
de ficheros de configuración de ejemplo, que estan bien
documentados en
PREFIX/etc/mpd/. Note
que PREFIX se refiere al directorio donde sus
ports son instalados, que normalmente es en
/usr/local. Una guía completa en formato
HTML, esta disponible una vez que se ha instalado el port. Esta se
localiza en
PREFIX/share/mpd/.
Aqui tenemos un ejemplo simple de configuración para conectarse
a un servicio ADSL con mpd. La
configuración se divide en dos ficheros, primero tenemos el
fichero mpd.conf.default:
load adsl
adsl:
new -i ng0 adsl adsl
set bundle authname usuario
set bundle password contraseña
set bundle disable multilink
set link no pap actcomp protocomp
set link disable chap
set link accept chap
set link keep-alive 30 10
set ipcp no vjcomp
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set iface route default
set iface disable on-demand
set iface enable proxy-arp
set iface idle 0
openEl nombre de usuario para autentificar con su proveedor.La contraseña para autentificar con su proveedor.El fichero mpd.links contiene información
a cerca de la, o las conecciones, que desee establecer. Un ejemplo de
mpd.links y que sea acompañante del ejemplo
anterior, se muestra a continuación.adsl:
set link type pptp
set pptp mode active
set pptp enable originate incoming outcall
set pptp self 10.0.0.140
set pptp peer 10.0.0.138La conexión es fácil de inicializarla, al ingresar los
siguientes comandos como root.&prompt.root; mpd -badslEl estatus de la conexión la puede ver con el comando.&prompt.user; ifconfig ng0
: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffffUsar mpd es la forma recomendada para
conectarse con servicios ADSL con &os;.
- Usando pptpclient
+ Uso de pptpclientTambién es posible usar FreeBSD para conectarse a otros
servicios PPPoA por medio de net/pptpclient.Para conectarse por medio de net/pptpclient a un servicio DSL, instale el
port o paquete y edite el fichero
/etc/ppp/ppp.conf. Debe ser
root para hacer estas operaciones. Un ejemplo de
la sección de ppp.conf, se muestra a
continuación. Para mayor información sobre las
opciones de ppp.conf, consulte la página de
ayuda de ppp; &man.ppp.8;.adsl:
set log phase chat lcp ipcp ccp tun command
set timeout 0
enable dns
set authname usuario
set authkey contraseña
set ifaddr 0 0
add default HISADDRNombre de usuario de la cuenta DSL.La contraseña de su cuenta.Debido a que debe poner su contraseña en el fichero
ppp.conf en texto plano, debe asegurarse que nadie
tenga acceso de lectura a este fichero. Los siguientes comandos se
aseguran de que el fichero solo pueda se leido por
root. Ve las páginas de ayuda &man.chmod.1;
y &man.chown.8; para mayor información.&prompt.root; chown root:wheel /etc/ppp/ppp.conf
&prompt.root; chmod 600 /etc/ppp/ppp.confEsto abrirá una sesion por medio de PPP con su ruteador DSL.
Los módems Ethernet DSL cuentan con una dirección IP de
LAN preconfigurada a la cual se puede conectar. En el caso del Alcatel
Speedtouch, esta dirección es 10.0.0.138. La documentación de su equipo
debe indicarle que dirección utiliza. Para abrir el
tunel e iniciar la sesión
ppp, ejecute el siguiente comando.&prompt.root; pptp direcciónproveedorPuede añadir un símbolo de ampersand
(&) al final de este comando, ya que
pptp no retorna al shell por default.Un dispositivo virtual tun será
creado, para interactuar con los procesos de
pptp y ppp.
Una vez que regrese al shell puede examinar la conexión por
medio del siguiente comando.&prompt.user; ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
Opened by PID 918Si no le es posible conectarse, verifique la configuración de
su ruteador, que normalmente es accesible por medio de
telnet o de su navegador web. Si aun no puede
conectarse examine la salida que da el comando
pptp y el contenido del fichero de registro
(log) de ppp;
/var/log/ppp.log.SatoshiAsamiContribución Original por GuyHelmerCon comentarios por PieroSerini
- Usando SLIP
+ Uso de SLIPSLIPConfigurando un cliente SLIPSLIPclienteLo siguiente es una forma de configurar FreeBSD para que utilice
SLIP, en un red con dirección estática. Para
direcciones dinámicas (esto es, donde su dirección
cambia cada vez que se conecta), probablemente sea necesario
realizar algunos ajustes que complican la configuración.En primer término, es necesario determinar a que puerto
serial esta conectado nuestro módem. Mucha gente opta por}
contar con un enláce simbólico, tal como
/dev//modem, que apunta al nombre
real del dispositivo,
/dev/cuaaN. Esto permite abstenerse de
usar el nombre real del dispositivo, en caso de que sea necesario
cambiar de puerto nuestro módem. Lo cual puede ser de mucha
ayuda, ya que puede ser un fastidio tener que editar un monton de
ficheros en /etc y ficheros de tipo
.kermrc en todo el sistema!./dev/cuaa0 es
COM1, cuaa1 es
COM2, etc.Asegurese de contar con la siguiente opción en la
configuración de su kernel:pseudo-device sl 1Esta opción esta incluida en el archivo del kernel
GENERIC, así que no debe haber
problema, claro esta, a menos que lo haya borrado
intencionalmente.Cosas Que Tiene Que Hacer Solo Una VezAñada el nombre de su maquina, gateway, servidores
de nombre a su fichero /etc/hosts. Este es
un ejemplo de mi fichero:127.0.0.1 localhost loghost
136.152.64.181 water.CS.Example.EDU water.CS water
136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9 ns1.Example.EDU ns1
128.32.136.12 ns2.Example.EDU ns2Asegurese de que cuenta con la opción
antes de la opción , en su fichero
/etc/host.conf. De lo contrario pueden ocurrir
cosas graciosas en su sistema.Edite el fichero /etc/rc.conf.Especifique su nombre host al editar la línea que dice:
hostname=minombre.mi.dominioEl nombre completo de su sistema para internet, debe ser
escrito en este punto.Añada el dispositivo sl0 a la
lista de dispositivos de red, al cambiar la línea que dice:network_interfaces="lo0"a quedar:network_interfaces=lo0 sl0Añada los parámetros de inicialización
del dispositivo sl0, al añadir la línea:ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"default routeEspecificque cual será su ruteador por omisión
al editar la línea:defaultrouter=NOa quedar:defaultrouter=slip-gatewayEdite su fichero /etc/resolv.conf (si no existe
debe crearlo), a que contenga lo siguiente:domain CS.Ejemplo.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12nameserverdomain (nombre de dominio)Como puede ver, lo anterior define el nombre de host, de su
servidor de nombres. Claro esta, el nombre de dominio y las
direcciones IP, dependen de su sistema específico.Establezca la contraseña del superusuario
root y de su símil
toor (y de cualquier otro usuario
que aun no cuente con la misma).Reinicie su sistema y asegurese que cuenta con el
nombre de host (hostname) correcto.Haciendo una Conexión con SLIPSLIPconectando conMarque el número, teclee en el signo de comando
slip, ingrese el nombre y la contraseña.
Lo que se requiere ingresar, depende de su sistema. Si utiliza
kermit, puede utilizar un script similar
al siguiente:# kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# El siguiente macro se encarga de llamar e ingresar al sistema
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0aClaro esta, que debe cambiar el nombre y contraseñ
a quedar de acuerdo a sus necesidades. Después de hacer
esto, puede simplemente teclear slip en el
símbolo de sistema (prompt) de kermit, para realizar
la conexión.El dejar su contraseña en texto plano, en
cualquier parte del sistema, generalmente es una
mala idea. Hágalo bajo su
propio riesgo.Dejé a kermit en ese punto trabajando (puede
suspenderlo tecleando
Ctrlz) y como root, teclee:&prompt.root; slattach -h -c -s 115200 /dev/modemSi puede hacer ping a cualquier host
que se encuentre del otro lado del ruteador, usted esta
conectado!. Si esto no funciona, puede intentar como
argumento del comando slattach, la
opción en lugar de utilizar la
optción .Como Terminar la ConexiónPara terminar la conexión haga lo siguiente:&prompt.root; kill -INT `cat /var/run/slattach.modem.pid`esto terminaraá slattach. Recuerde que
para hacer esto, usted debe estar firmado como superusuario (root).
Posteriormente dirijase a kermit (puede hacer esto con
fg si lo envio a segundo plano) y salga (tecleando
q).La página de ayuda de slattach indica que
debe utilizar el comando ifconfig sl0 down, para
marcar como terminado el uso del dispositivo, pero tal parece que
esto no hace una gran diferencia para mi.
(ifconfig sl0 da el mismo resultado.)En algunas ocasiones, puede que su módem se niegue a
cortar la comunicación (el mio lo hace a veces). Si ese es
el caso, simplemente inicie de nuevo kermit y vuelva a salir.
Normalmente en el segundo intento hay exito.Problemas ComunesSi esto no funciona, sientase libre de preguntarme. Lo siguiente es
una recapitulación de los problemas que más comunmente
se presentan:El no utilizar la opción o
con el comando
slattach (Esto debiera se fatal, pero algunos
usuarios han reportado que esto ha solucionado sus problemas.Usar la opción en vez de usar la
opción (puede ser difícil ver la
diferencia con algunos tipos de letras).Intente ifconfig sl0 para visualizar
el estatus de sus dispositivos de red. Por ejemplo, puede ser que
obtenga algo similiar a lo siguiente:&prompt.root; ifconfig sl0
sl0: flags=10<POINTOPOINT>
inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00También el comando netstat -r le
mostrará la tabla de ruteo, en caso de que obtenga el
mensaje no route to te host, al hacer
ping. Un ejemplo de esto se muestra
a continuación:&prompt.root; netstat -r
Routing tables
Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks:
(root node)
(root node)
Route Tree for Protocol Family inet:
(root node) =>
default inr-3.Example.EDU UG 8 224515 sl0 - -
localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438
inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - -
water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438
(root node)Esto es después de que el sistema ha estado conectado
por un tiempo. Los numeros pueden variar en su sistema.Estableciendo un Servidor SLIPSLIPservidorEste documento provee sugerencias, para establecer un servidor
de SLIP, bajo FreeBSD, lo que generalmente significa configurar su
sistema, para que de manera automática inicie los servicios, al
firmarse usuarios—clientes remotos en su sistema.Prerequisitosredes TCP/IPEsta sección es de naturaleza muy técnica, así
que contar con antecedentes sobre esto es requerido. Este documento
supone que usted cuenta con conocimientos sobre el protocolo de
redes TCP/IP, y particularmente, redes y direcciones de nodos, mascaras
de red, subneteo, ruteo y protocolos de ruteo, tal como RIP. El
configurar servicios SLIP, en un servidor, requiere un conocimiento de
estos conceptos, y si usted no esta familiarizado con estos, puede
leer una copia, ya sea del libro de Craig Hunt; TCP/IP
Networking Administration, publicado por O'Reilly &
Associates, Inc. (Numero ISBN 0-937175-82-X), o alguno de los libros
de Douglas Comer, sobre protocolos TCP/IP.módemSe da por un hecho, que usted ha instalado y configurado
correctamente su(s) módem(s), así como la
configuración de su sistema, para efecto de utilizar el
mismo para realizar la conexión. Si usted no lo ha hecho,
por favor lea el tutorial sobre configuración de estos
servicios; si cuenta con un navegador para la World-Wide Web,
puede ver los tutoriales disponibles en http://www.FreeBSD.org/.Puede ser que también desee revisar las páginas de
ayuda (man), &man.sio.4; para información
referente a los controladores de dispositivos de puertos en serie, y
&man.ttys.5;, &man.gettytab.5;, &man.getty.8;, & &man.init.8;, para
ver información relevante, sobre la configuración de su
sistema, para efecto de que acepte accesos (logins) por medio de un
módem, y quizás &man.stty.1; para información
sobre los parámetros de configuración de puertos en
serie (tal como clocal, que se utiliza para
la conexión directa por medio de puertos seriales).Echemos un VistazoEn su configuración típica, el desarrollo de
FreeBSD como un servidor SLIP, funciona de la siguiente manera:
un Usuario SLIP, se conecta del Servidor SLIP FreeBSD e ingresa al
sistema con una identificación especial, que utiliza
/usr/sbin/sliplogin como shell del usuario. El
programa sliplogin busca en el fichero
/etc/sliphome/slip.hosts la línea que
haya sido creada especialmente para el usuario, conecta la
línea serial a una interfaz SLIP disponible y posteriormente
ejecuta el script /etc/sliphome/slip.login, para
configurar la interfaz SLIP.Un Ejemplo de Acceso al Servidor SLIPPor ejemplo si la clave de acceso de un usuario SLIP
fuese Shelmerg, la entrada del usuario
Shelmerg, en el fichero
/etc/master.passwd se vera algo similar
a lo siguiente:Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliploginCuando Shelmerg accese al sistema, el
comando sliplogin, buscará en el
fichero /etc/sliphome/slip.hosts, una
línea, en la cual el ID (identificación) del
usuario coincida, por ejemplo, puede ser que en el fichero
/etc/sliphome/slip.hosts exista una
línea simliar a la siguiente:Shelmerg dc-slip sl-helmer 0xfffffc00 autocompEl comando sliplogin encontrará
la línea que coincida, enganchará la línea
serial a cualquier interfaz SLIP disponible y posteriormente
ejecutará /etc/sliphome/slip.login
de manera similar a:/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocompSi todo marcha bien, /etc/sliphome/slip.login
creará una configuración, por medio de
ifconfig, para la interfaz SLIP, a la cual
sliplogin se ha adjuntado (la interfaz slip 0,
que era el primer parámetro dado en la lista de
slip.login), para establecer la
dirección local IP (dc-slip), la
interfaz de la direción IP Remota (sl-helmer),
la submascara de red para la interfaz SLIP (0xfffffc00) y cualquier otra opción
adicional (autocomp). Si algo no va del todo
bien, normalmente sliplogin guarda bastante
información para depurar, por medio del
demonio (daemon) syslog, que
usualmente guarda dicha infomración en
/var/log/messages (vea la página de
ayuda &man.syslogd.8; así como &man.syslog.conf.5; y quizas
el fichero /etc/syslog.conf, para ver que
es lo que syslogd esta almacenando y donde es
que lo almacena.OK, basta de ejemplos — entremos de lleno en la
configuración del sistema.Configuración del KernelkernelconfiguraciónEl kernel de FreeBSD, por omisión, cuenta con 2
dispositivos SLIP definidos (sl0 y
sl1); usted puede utilizar
netstat -i, para verificar si estos
dispositivos se encuentran en el kernel de su sistema.Un ejemplo del resultado de netstat -i:Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
ed0 1500 <Link>0.0.c0.2c.5f.4a 291311 0 174209 0 133
ed0 1500 138.247.224 ivory 291311 0 174209 0 133
lo0 65535 <Link> 79 0 79 0 0
lo0 65535 loop localhost 79 0 79 0 0
sl0* 296 <Link> 0 0 0 0 0
sl1* 296 <Link> 0 0 0 0 0En este ejemplo vemos que existen dos
dispositivos SLIP en el kernel, que son;
sl0 y
sl1 (el asterisco que aparece después
de sl0 y sl1 indica
que los dispositivos no estan trabajando.)Aun cuando el kernel cuente con los dispositivos, por
omisión el kernel de FreeBSD, no viene configurado para
enviar paquetes (de hecho su sistema FreeBSD no trabajara como
ruteador, por default) esto en base a los requerimientos para
Internet, establecidos por los RFCs ( vea 1009 [Requerimentos para
Pasarelas (Gateway) en Internet], 1122 [Requerimientos para hosts
de Internet — Capas de comunicación] y quizás
1127 [RFC sobre Una Perspectiva de los Requerimientos de Hosts]).
Si usted desea que su servidor SLIP sobre FreeBSD, opere como un
ruteador, será necesario que edite el fichero
/etc/rc.conf y cambie la opción
gateway_enable, a quedar ,
esto habilitará esta función.Será necesario que reinicie su sistema, para efecto de que
estos cambios surtan efecto.Al verificar su fichero de configuración del kernel
(/sys/i386/conf/GENERIC), podrá
notar que cerca del final, hay una línea como la siguiente:pseudo-device sl 2SLIPEsta línea es la que define el numero de
dispositivos SLIP disponibles en el kernel; el numero al final
de la línea es el numero máximo de conecciones SLIP
que puede manejar el servidor simultaneamente.Para ayuda con relación a la configuración y
compilación del kernel en su sistema FreeBSD, por favor
refierase al apartado
correspondiente.Configuración de SliploginComo se menciono anteriormente, existen tres ficheros en el
directorio /etc/sliphome, que son parte de
la configuración de /usr/sbin/sliplogin
(vea la pagina de ayuda &man.sliplogin.8; de para ver la ayuda
del comando sliplogin):
slip.hosts, que es el fichero que define a
los usuarios SLIP, así como sus direcciones IP
correspondientes; slip.login, que
normalmente es utilizado para configurar la interfaz de SLIP; y
(opcionalmente) slip.logout, que hace lo opuesto a
slip.login, cuando la conexión serial
ha terminado.Configuració de slip.hostsEl fichero /etc/sliphome/slip.hosts
contiene líneas, que al menos cuentan con cuatro partes,
separadas por espacios en blanco:Identificador (nombre) del usuario SLIPDirección Local (local para el servidor SLIP) de la
liga a SLIPDirección Remota de la liga a SLIPMascara de redLas direcciones local y remota, pueden ser nombres del host
(la resolución de los mismos, es llevada a cabo, por medio de
/etc/hosts o por el servidor de nombres de
dominio (DNS), dependiendo de lo que haya especificado en el
fichero /etc/host.conf), y la mascara de red
puede ser un nombre, que puede ser resuelto revisando
/etc/networks. En un sistema de ejemplo, el
fichero /etc/sliphome/slip.hosts, puede verse
así:#
# login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocompAl final de la línea puede ver que existen
una o más opciones. — sin compresión
de los encabezados. — compresión de
los encabezados. — compresión
automática, si el host remoto lo permite. — deshabilitar los
paquetes ICMP (de tal forma que cualquier paquete enviado
por ping seráa rechazado, en lugar de
ocupar de su ancho de banda).SLIPRedes por TCP/IPLa elección sobre la dirección local y remota
depende si usted va a utilizar una conexión TCP/IP dedicada
o bien si va a utilizar una conexión por medio de
proxy ARP en su servidor SLIP (no es correcto
proxy ARP, pero es la terminología utilizada
en esta sección para describirlo). Si usted no esta seguro
que metodo manejar o como asignar la dirección IP, por favor
refierase a alguno de los libros sobre TCP/IP, que se
mencionan en los Prerequisitos de SLIP ()
y/o consulte al administrador de IP de su red.gatedSi usted piensa subnetear para los diferentes clientes
SLIP, será necesario que la dirección de la
subred (subnet), salga de la dirección IP que tenga
asignada su red, y el numero de cada cliente, del numero que
asigne a su subred. Posteriormente puede que sea necesario, o
bien configurar una ruta estática a la subred SLIP, por
medio de su servidor SLIP en su ruteador más
cercano por IP.EthernetDe otra forma, si usted piensa utilizar un metodo
proxy ARP, será necesario que a sus
clientes SLIP, se les asigne una dirección IP, que se
encuentre dentro del rango que este utilizando para su
subred Ethernet, y tambié será necesario que
haga algunos ajustes en los ficheros script
/etc/sliphome/slip.login y en
/etc/sliphome/slip.logout, para que
usen &man.arp.8;, para que maneje la tabla ARP del servidor
SLIP y llamados del proxy-ARP.slip.login ConfiguraciónEl típico fichero /etc/sliphome/slip.login
se ve de la siguiente manera:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6This slip.login file merely runs
ifconfig for the appropriate SLIP interface
with the local and remote addresses and network mask of the
SLIP interface.If you have decided to use the proxy ARP
method (instead of using a separate subnet for your SLIP
clients), your /etc/sliphome/slip.login
file will need to look something like this:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pubLa línea adicional, arp -s $5 00:11:22:33:44:55
pub del script slip.login, crea una
entrada ARP en la tabla del servidor SLIP. Esta entrada le indica al
servidor SLIP que debe responder con la dirección MAC de su
dispositivo Ethernet, cuando cualquier otro nodo IP en la red,
solicite información a la IP del cliente SLIP.Ethernetdirección MACAl tomar en cuenta el ejemplo anterior, es importante que
sustituya la dirección Ethernet MAC (00:11:22:33:44:55), con la dirección
que corresponde a su tarjeta de red, o definitivamente su
proxy ARP no va a funcionar!. Para efecto de
conocer cual es la dirección MAC del dispositivo
Ethernet (tarjeta de red), de su servidor SLIP, puede ejecutar
el comando netstat -i, el cual tendrá
como resultado algo similar a lo siguiente:ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116Esto indica que la dirección MAC de su
dispositivo Ethernet, en este sistema es
00:02:c1:28:5f:4a
— los puntos que aparecen en la salida del comando
netstat -i deben cambiarse por dos puntos,
así mismo deberá de anteponerse un cero, a cada
dígito hexadecimal que aparezca sólo (no en pares),
de tal forma que convirtamos la dirección en lo que
&man.arp.8; requiere para trabajar; vea la página de ayuda
&man.arp.8;, para ver información completa sobre su
uso.Recuerde que cuando cree los ficheros
/etc/sliphome/slip.login y
/etc/sliphome/slip.logout, deben
contar con permisos de ejecución
(chmod 755 /etc/sliphome/slip.login
/etc/sliphome/slip.logout), de otra forma
estos scripts no podrán llevar a cabo su función.Configuración de slip.logoutEl fichero /etc/sliphome/slip.logout
no es indispensable (a menos que vaya a utilizar
proxy ARP), pero si aun así decide crearlo,
el siguiente es un ejemplo básico del script
slip.logout :#!/bin/sh -
#
# slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 downSi usted esta utilizando proxy ARP, es
recomendable que le indique a
/etc/sliphome/slip.logout, que desea
eliminar la entrada ARP, para el cliente SLIP:#!/bin/sh -
#
# @(#)slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Dejar de solicitar respuesta ARP al cliente SLIP
/usr/sbin/arp -d $5El comando arp -d $5, elimina la
entrada ARP, que slip.login de
proxy ARP añadió al cliente SLIP
al ingresar al sistema.Para esta más seguros: asegurese de que el fichero
/etc/sliphome/slip.logout cuenta con los
permisos adecuados para su ejecución, una vez que lo ha
creado (ej. chmod 755 /etc/sliphome/slip.logout)
.Consideraciones sobre el EnrutamientoSLIPenrutamientoSi usted no esta utilizando el metodo proxy ARP,
para efecto de rutear los paquetes entre sus clientes SLIP y el
resto de la red (y quizás Internet), deberá de
hacer una de las siguientes dos acciones, o bien añadir
direcciones estáticas, a su(s) ruteador(es) más
cercanos, para que se reenvien los paquetes de la subred de sus
clientes SLIP, por medio de su servidor SLIP, o bien tendrá
que instalar y configurar gated en su servidor
SLIP (que corre FreeBSD!), de tal forma que le indique a su(s)
ruteador(es), por medio del protocolo correcto, a cerca de su
subred SLIP.Direcciones de Enrutamiento Estáticasdirecciones estáticasAñadir direcciones estáticas de enrutamiento puede
ser un problema (o imposible si usted no cuenta con la autoridad
para hacerlo...). Si usted cuenta con una red de ruteo-múltiple
en su organización, algunos ruteadores, tales como los
fabricados por Cisco y Proteon, puede ser que no sea suficiente
con el hecho de configurar las rutas estáticas de su subred
SLIP, sino que sea necesario indicar que rutas utilizar para
informar a cerca de otras rutas, así que algo de experiencia
así como determinación para la resolución de
problemas serán necesarias para poner la ruta basada-en-
ruteo-estático a trabajar.Ejecutando gatedgatedUna alternativa para los dolores de cabeza que pueden dar
las redes con ruteo estático, es intalar
gated en su servidor SLIP bajo FreeBSD
y configurarlo, para que utilice los protocolos de ruteo apropiados
(RIP/OSPF/BGP/EGP) para informar a otros ruteadores, a cerca de su
subred SLIP. Una vez que lo ha compilado e instalado, deberá
crear el fichero /etc/gated.conf, que
configurará a gated; aqui hay un ejemplo,
similar al que el autor utilizó en un servidor SLIP FreeBSD:
gated es un software propietario y su
código fuente no estará disponible al público
más (más información en el sitio gated). Esta sección
solo existe para asegurarse de la compatibilidad con aquellos que
usan la versió antigua.#
# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
#
#
# tracing options
#
traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
rip yes {
interface sl noripout noripin ;
interface ed ripin ripout version 1 ;
traceoptions route ;
} ;
#
# Turn on a bunch of tracing info for the interface to the kernel:
kernel {
traceoptions remnants request routes info interface ;
} ;
#
# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
#
export proto rip interface ed {
proto direct {
xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
} ;
} ;
#
# Accept routes from RIP via ed Ethernet interfaces
import proto rip interface ed {
all ;
} ;RIPEn el ejemplo anterior, el fichero de configuración
gated.conf transmite información sobre
la subred SLIP xxx.xxx.yy, por medio
de RIP al dispositivo Ethernet; si usted esta utilizando un
dispositivo de red, diferente de ed, será
necesario que modifique el parámetro ed
por el correspondiente. En este ejemplo, el fichero también
realiza una busqueda por el fichero
/var/tmp/gated.output, que es un fichero que nos
sirve para depurar cualquier error que se presente en
la actividad de gated; usted puede desactivar la
opción de depuración (debug), si es que
gated esta funcionando correctamente. Será
necesario que modifique xxx.xxx.yy., a quedar
con la dirección correcta de su subred SLIP (asegurese de
modificar también la máscara de red, en la cláusula
proto direct también).Una vez que ha instalado y configurado gated en
su sistema, necesitará indicarle a FreeBSD que al iniciar el
sistema, ejecute el script para gated, en lugar de
ejecutar routed. La forma más fácil de
hacer esto, es editar las variables de route y
router_flags, en el fichero
/etc/rc.conf. Por favor vea la página de
ayuda de gated, para ver información sobre
los parámetros de la línea—de—comandos.
diff --git a/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml b/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml
index 0f3f09084b..0e6f2ea0ed 100755
--- a/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml
@@ -1,5135 +1,5135 @@
SeanKellyAportado por JimMockReestructurado y actualizado por
- Imprimiendo
+ ImprimirSinópsisSistema de cola LPD
- imprimiendo
+ imprimirFreeBSD puede ser utilizado para imprimir en una gran variedad
de impresoras, desde las antiguas impresoras de matriz de punto, hasta
las más modernas impresoras laser, y todo lo que existe en
medio de estas, permitiendole crear impresiones de alta calidad, desde
cualquier aplicación que este utilizando.FreeBSD también puede ser configurado para actuar como
servidor de impresión en una red; en esta modalidad, FreeBSD puede
recibir peticiones de impresión de una gran cantidad de
computadoras, incluyendo computadoras corriendo FreeBSD, Windows y MacOS.
FreeBSD verifica que un trabajo sea impreso a la vez, y puede mantener
estadísticas sobre que usuario y maquina son los que más
imprimen, insertar una página de aviso (titulares
o páginas de encabezado),
antes de cada trabajo para verificar de quien es cada impresión,
y más.Al concluir el presente capítulo, usted sabrá:Como configurar la cola de impresión en FreeBSD.Como instalar filtros de impresión, para manejar diferentes
trabajos especiales, incluyendo la conversión de documentos a
formatos aptos para la impresora.Como habilitar encabezados, o titularess en sus impresiones.Como imprimir en impresoras conectadas a otras computadorasComo imprimir en impresoras conectadas directamente a la red.Como controlar restricciones de impresión, incluyendo
limitantes en el tamaño de los trabajos de impresión, y
restringiendo la impresión a ciertos usuarios.Como mantener estadísticas de impresión, y cuentas
para el uso de la impresora.Como solucionar problemas de impresión comunes.Antes de leer este capítulo, usted debería:Saber como compilar e instalar un nuevo kernel
().IntroducciónPara efecto de poder utilizar impresoras con FreeBSD, es necesario
que configure estas, para trabajar con el sistema de cola de
impresión de Berkeley, también conocido como
Sistema de Cola LPD. Este es el sistema
de control de impresión estándar en FreeBSD. Este
capítulo introduce en el sistema LPD,
llamado comunmente sólo LPD, e
introduce en la configuración del mismo.Si usted esta familiarizado con el sistema de cola de
impresión LPD, o bien, con
algun otro sistema de impresión, puede saltar a la
sección Configurando el sistema de
Cola de Impresión.La aplicación LPD es
responsable de controlar todo lo que se refiere a impresión.
Es responsable de un gran numero de cosas, tales como:Controla el acceso a las impresoras conectadas directamente
al ordenador y las impresoras conectadas a otras
máquinas de la red.trabajos de impresiónHabilita a usuarios, para efecto de que puedan enviar ficheros
a imprimir; estos envios se conocen como trabajos
(jobs).Previene el hecho de que varios usuarios accesen a la impresora
al mismo tiempo, al mantener un orden en la cola de impresión
(queue) para cada impresora.Puede imprimir encabezados (header)
(también conocidos como titularess o
páginas de aviso), de tal forma que los
usuarios identifiquen fácilmente sus impresiones, de una pila
de impresiones.Se ocupa de los parámetros para impresoras
conectadas a puertos seriales.Puede enviar trabajos de impresión por medio de
una red, a una cola LPD de una
maquina remota.Puede ejecutar filtros especiales para dar formato a
trabajos que requieren de un manejo de lenguaje de impresión
diferente o impresoras de diferentes capacidades.Puede mantener un registro por uso de la impresora.Por medio de un fichero de configuración
(/etc/printcap), y por medio de programas
especiales de filtraje, usted puede habilitar al sistema
LPD para hacer todo o una parte de
lo mencionado anteriormente, para una gran variedad de
impresoras.¿Por qué utilizar una Cola de Impresión?Si usted es la única persona que hace uso de su sistema,
probablemente se pregunte por que preocuparse por utilizar un sistema
de cola de impresión, cuando no requiere acceso a controles,
encabezados o cuentas para imprimir. Mientras que es posible habilitar
un acceso a su impresora de forma directa, usted debe utilizar el
sistema de cola de impresión, por las siguientes razones:El sistema LPD opera los trabajos de
impresión es segundo plano; esto es, que usted no tiene que
esperar a que los datos sean pasados a la impresora para continuar
trabajando.TeXConvenientemente LPD puede ejecutar
un trabajo para que sea filtrado, para añadir caracteres de
día/hora o bien convertir un fichero con formato especial
(tal como ficheros TeX DVI) a un formato que la impresora entiende.
De tal manera que usted no tenga que hacer estos pasos manualmente.
Muchos programas, libres y comerciales, proveen de un sistema
de impresión que esta basado en el sistema de cola de
impresión. Al configurar su sistema de cola de
impresión, usted podrá soportar otro software que
instale en el futuro o el que tiene actualmente.Configuración BásicaPara efecto de utilizar impresoras con el sistema de
cola LPD, es necesario que se instale
físicamente la impresora y el software de
LPD. Este documento describe estos dos
niveles de configuración:Vea la sección
Configuración Simple de una Impresora, para aprender
a conectar una impresora, indicarle a LPD
como comunicarse con ella, e imprimir ficheros de texto plano en
dicha impresora.Vea la sección
Configuración Avanzada de una Impresora, para ver
como imprimir gran variedad de formatos especiales, imprimir
encabezados, para imprimir por medio de una red, controlar acceso
a las impresoras y crear cuentas de impresión.Configuración Simple de una ImpresoraLa presente sección le mostrará como instalar
físicamente la impresora, así como el software de
LPD para usar dicha impresora.
Le mostrará lo básico de:La sección
Instalación Física, le da algunos consejos
sobre como instalar su impresora a los puertos de su
computadora.La sección
Instalación de Software, le muestra como instalar
y configurar el fichero de configuración de
LPD (/etc/printcap).
Si usted esta instalando una impresora que utiliza protocolos de
red para imprimir en lugar de una conexión directa a su
puerto serial o paralelo, vea la sección Impresoras con Interfaces
de Red para Secuencia de Datos.Aun cuando esta sección se llama Configuración
Simple de una Impresora, puede resultar un tanto
complicada. Conseguir que su impresora trabaje con su ordenador y con
la cola de impresión LPD es la parte
más compleja. Las opciones avanzadas, tal como imprimir
encabezados y crear cuentas, son sencillas una vez que su impresora
está trabajando.Instalación FísicaEsta sección le informa sobre varias fomras en que
puede usted conectar la impresora a su PC. Se describen los tipos
de puertos y cables, así como la configuración que
debe tener en su kernel, para permitir que FreeBSD se pueda
comunicar con su impresora.Si ya ha conectado su impresora y ha impreso exitosamente
trabajando en otro sistema operativo, probablemente desee brincar
a la sección Configuración
del Software.Puertos y CablesPracticamente cualquier impresora que adquiera hoy en día
para PC, cuenta con soporte para una o ambas interfaces que se
presentan a continuación:impresoraserialLa interfaz serial, utiliza el puerto
serial de su computadora para enviar datos a la impresora. La
interfaz serial es común en la industria de la
computación y los cables existen disponibles facilmente
e incluso sencillos de hacer. En ocasiones las interfaces seriales
requieren de cables especiales y posiblemente cierta
configuración compleja de opciones de comunicación.
impresoraen paraleloLa interfaz en paralelo utiliza el puerto
paralelo de su computadora para enviar datos a la impresora. Las
interfaces en paralelo son comunes en el mercado de las PCs. Los
cables son fáciles de conseguir, pero un poco más
complicados de hacer a mano. Normalmente no existen opciones de
comunicación, haciendo su configuración mucho
más sencilla.centronicsimpresoras en paraleloEn ocasiones las interfaces en paralelo son conocidas como
interfaces Centronics, en virtud del tipo de
conector en la impresora.En términos generales los interfaces seriales son más
lentos que las interfaces en paralelo. Por otro lado los interfaces en
paralelo sólo ofrecen comunicación de una vía (de
la computadora a la impresora), mientras que los seriales ofrecen de
dos vías. Gran cantidad de recientes impresoras y puertos
paralelos, pueden comunicarse en ambas direcciones bajo FreeBSD,
cuando se utiliza un cable compatible con IEEE1284.PostScriptNormalmente, el único escenario donde requiere de una
comunicación de ambas vías con la impresora, es
cuando la impresora maneja PostScript. Las impresoras que manejan
PostScript detallan gran cantidad de información. De hecho,
los trabajos PostScript, son programas enviados a la impresora; los
cuales no requieren de papel y pueden enviar la salida directamente
a la computadora. PostScript utiliza una comunicación de dos
vías, para informar al ordenador de los problemas que se
puedan presentar, tal como errores en los programas PostScript o
papeles atascados. Sus usuarios pueden apreciar este tipo de
información. Más allá de esto, la mejor forma
de contabilizar con impresoras PostScript, es utilizando dos vías
de comunicación: usted solicita a la impresora el conteo de
impresiones (esto es, todas las impresiones hechas en su vida),
posteriormente envia el trabajo del usuario y repite la solicitud
de conteo. Resta los dos valores obtenidos y sabra cuanto debe
cobrar al usuario por uso de papel.Puertos ParalelosPara conectar una impresora usando el puerto en paralelo,
conecte el cable Centronics entre la impresora y la
computadora. Las instrucciones que vienen con su impresora,
con su computadora o ambas, deben ser una buena guía
para llevar esto a cabo.Recuerde cual es el puerto en paralelo que utilizó en
su computadora. Para FreeBSD, el primer puerto paralelo es
/dev/lpt0, el segundo puerto es
/dev/lpt1 y así sucesivamente.Puertos SerialesPara conectar una impresora, usando el puerto serial, conecte
el cable apropiado entre la impresora y el ordenador. Las
instrucciones que vienen con su impresora, computadora o
ambas, deben ser suficientes para llevar esto a cabo.Si usted no esta seguro de cual es el cable serial
apropiado, puede intentar alguna de las siguientes
alternativas:Un cable de módem conecta cada pin del
conector de un extremo, con el conector del otro extremo, de manera
directa. Este tipo de cable también se le conoce como cable
DTE-a-DCE.cable de módem-nuloUn cablde de módem-nulo conecta de
fomra directa algunos pins, algunos otros son compartidos (envia
datos para recibir datos, por ejemplo), y algunos otros internamente
son deshabilitados en los conectores. Este tipo de cable
también se le conoce como cable DTE-a-DTE.Un cable de impresora serial, sólo
es requerido por algunas impresoras poco comunes, es similar al
cable de módem-nulo, pero este envia señales a su
contraparte, en lugar de que internamente se deshabilite.velocidad de baudioparidadprotocolo de control de flujoTambién es necesario que configure los parámetros de
comunicación para la impresora, nomralmente esto lo realiza
desde los controles de la misma o interruptores DIP en la impresora.
Selecciones el bps (bits por segundo y en ocasiones
llamado velocidad de baudio) más alto, que
tanto su ordenador como impresora soporten. Seleccione 7 u 8 bits de
datos; la paridad establezcala en: ninguna, igual o aleatoria y 1 o 2
en bits de paro. También seleccione un protocolo para el
control de flujo, que puede ser: ninguno o XON/XOFF (también
conocido como in-band o software).
Recuerde las opciones que haya seleccionado en esta parte,
para la configuración del software, que veremos en la
siguiente sección.Configuración del SoftwareLa presente sección describe la configuración necesaria
para poder imprimir usando el sistema de cola
LPD, bajo FreeBSD.Aqui presentamos un resumen de los pasos necesarios:Configure su kernel, si es necesario, para habilitar el uso del
puerto al que esta conectado su impresora. En la sección
Configuración del Kernel
encontrará toda la información necesaria, para llevar
esto a cabo.Establecer en modo de comunicación el puerto en paralelo,
si es que esta usando dicho puerto. La sección Estableciendo el Modo de
Comunicación en el Puerto en Paralelo le da detalles
al respecto.Compruebe si el sistema operativo puede enviar datos a la
impresora. La sección Verificando la Comunicación con la
Impresora le puede dar detalles sobre como hacer esto.Configurar LPD para su uso con la
impresora, modificando el fichero /etc/printcap.
Posteriormente en este capítulo, veremos como se lleva a
cabo esto.Configuración del KernelEl kernel del sistema operativo es compilado para trabajar con
ciertos dispositivos. El puerto serial o paralelo de su computadora
es parte de los dispositivos que debe incluirse en la compilación
del kernel. Por lo tanto, puede que sea necesario recompilar el kernel
incluyendo el soporte para el o los puertos serial y/o paralelo, si
es que el kernel no cuente ya con dicho soporte.Para averiguar si el kernel que tiene instalado actualmente, cuenta
con soporte para el puerto serial, teclee lo siguiente:&prompt.root; dmesg | grep sioNDonde N es el numero de puerto serial,
comenzando desde cero. Si observa una salida similar a la
siguiente:sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550Aentonces su kernel ya cuenta con soporte para el puerto.Para averiguar si su kernel cuenta con soporte para el puerto en
paralelo, teclee:&prompt.root; dmesg | grep lptNDonde N es el numero de puerto serial,
comenzando desde cero. Si observa una salida similar a la
siguiente:lpt0 at 0x378-0x37f on isaentonces su kernel cuenta con soporte para el puerto.Puede que sea necesario recompilar su kernel, para efecto de que
su kernel cuente con el soporte para el puerto serial o paralelo que
este utilizando su impresora.Para añadir soporte para el puerto serial, vea la
sección en Configuración del Kernel. Para añadir
soporte para el puerto paralelo, vea esa sección
y la siguiente sección.Añadiendo Dispositivos de Puertos en
/devAun cuando el kernel cuente con el soporte de comunicaciones para
puertos seriales o en paralelo, aun deberá de contar con las
interfaces necesarias en su sistema, por medio de las cuales el sistema
puede enviar y recibir los datos. En el directorio
/dev es donde encontrará dichas interfaces
en su sistema.Para añadir una entrada, para sus puertos, en el
directorio /dev deberá:Cambiar de usuario a root con el comando
&man.su.1;. Ingresar la contraseña de root
cuando le sea solicitada.Cambiar su posición al directorio /dev
de la siguiente forma:&prompt.root; cd /devTeclear:&prompt.root; ./MAKEDEV PUERTODonde PUERTO es la entrada del
dispositivo que desea crear. Puede utilizar
lpt0 para el primer puerto en paralelo,
lpt1 para el segundo puerto, y así
sucesivamente, para el primer puerto serial puede utilizar
ttyd0, y para el segundo
ttyd1 y así sucesivamente.Teclee:&prompt.root; ls -l PUERTOpara asegurarase de que la entrada del dispositivo correspondiente
se ha creado.Configurando el modo de Comunicación para el
Puerto ParaleloCuando utiliza el puerto paralelo, puede seleccionar si FreeBSD va
a utilizar un modo de comunicación por medio de interruptores
o a petición, con la impresora.El método por medio de interruptores
es el método que utiliza el kernel GENERICO de FreeBSD. Con
este método el sistema operativo utiliza un IRQ para
determinar si la impresora esta lista para recibir datos.El método a petición le
indica al sistema operativo que constantemente le pregunte a
la impresora si esta lista para recibir datos. Una vez que
ha obtenido respuesta, el kernel comienza a transferir los
datos.Normalmente el método por medio de interruptores es más
rápido, pero nos ocupa un preciado IRQ. Se sabe que algunas
impresoras nuevas de HP no funcionan muy bien con este método
aparentemente debido (sin que aun se entienda el por que) a un
problema de tiempos. Estas impresoras necesitan el método a
petición. Es conveniente que utilice el método que
se ajuste a sus necesidades. Algunas impresoras funcionan en ambos
métodos, pero son dolorosamente lentas usando el método
por medio de interruptores.Para establecer el método de comunicación, puede
hacerlo de dos formas: configurando su kernel o bien, utilizando
el programa &man.lptcontrol.8;.Para establecerlo configurando su kernel,
deberá:Editar su fichero de configuración del kernel. Busque
una línea que contenga lpt0, si esta
no existe añadala. Si esta configurando su segundo puerto
en paralelo, use lpt1. Para un tercer puerto
paralelo utilice lpt2 y así
sucesivamente.Si desea utilizar el modo por medio de interruptor, añada
el especificador de irq:device lpt0 at isa? port? tty irq N vector lptintrDonde N es el numero de IRQ del puerto
paralelo de su computadora.Si desea utilizar el modo a petición, no necesita agregar
el especificador de irq:device lpt0 at isa? port? tty vector lptintrGuarde el fichero. Posteriormente termine el proceso de
configuración, recompilación e instalación del
kernel, después reinicie el sistema. Vea Configuración del Kernel para
más información al respecto.Para establecer el modo de comunicación
usando &man.lptcontrol.8;:Teclee:&prompt.root; lptcontrol -i -d /dev/lptNpara indicar el modo por medio de interruptor para
lptN.Teclee:&prompt.root; lptcontrol -p -d /dev/lptNpara establecer el modo a petición para
lptN.Estos comandos los podría incluir en su fichero
/etc/rc.local para que el sistema reconozca
estos modos cada vez que inicia el sistema. Vea &man.lptcontrol.8; para
más información al respecto.Verificando la Comunicación de la ImpresoraAntes de proceder a configurar el sistema de cola de
impresión, es conveniente verificar que nuestro sistema
operativo pueda enviar datos exitosamente a nuestra impresora. Es
mucho más sencillo detectar errores cuando se configura por
separado el método de comunicación y el sistema de
cola de impresión.Para probar nuestra impresora, enviaremos un poco de texto. Para
impresoras que inmediatamente pueden imprimir caracteres, el programa
&man.lptest.1; es perfecto: este genera todos los 96 caracteres ASCII
imprimibles en 96 líneas.PostScriptPara impresoras PostScript (o de otro lenguaje de impresión),
vamos a necesitar una prueba más sofisticada. Un pequeño
programa PostScript, como el siguiente, será suficiente:%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpageEl código PostScript descrito puede guardarse en un fichero y
usarse en el ejemplo que aparece en la siguiente sección.PCLCuando este documento se refiere a lenguaje de impresión,
se asume lenguaje como PostScript y no el PCL de Hewlett Packard. Aun
cuando PCL tiene gran funcionalidad, pueden acabar mezclandose
caracteres de escape con el texto plano, y ese es el tipo de lenguaje
de impresión, para el cual necesitaremos realizar ajustes
especiales.Verificando Impresoras en ParaleloimpresoraparaleloEsta sección le indica como comprobar la comunicación
de una impresora en paralelo, bajo FreeBSD.Para probar una impresora en paralelo:Cambiar a root con el comando &man.su.1;Enviar datos a la impresora.Si la impresora puede imprimir texto plano, usar el comando
&man.lptest.1;. Teclee:&prompt.root; lptest > /dev/lptNDonde N es el numero del puerto en
paralelo, comenzando desde cero.Si la impresora utiliza PostScript u otro lenguaje de
impresión, entonces envie un pequeño programa a
la impresora. Teclee:&prompt.root; cat > /dev/lptNPosteriormente, línea por línea teclee el
programa, cuidadosamente en virtud de que no
puede editar una línea ya que presionado la tecla
RETURN o ENTER. Una vez que
ha terminado de introducir el programa, presiona las teclas
CONTROL+D, o cualquier tecla que funcione para
efecto de especificar un fin de fichero.Otra manera de hacer esto, es guardar el programa en un
fichero y teclear:&prompt.root; cat fcihero > /dev/lptNDonde fichero es el nombre del
fichero que le dio al programa, que desea enviar a imprimir.En este punto debe ver alguna impresión. No se preocupe si
el texto no aparece bien; es algo que arreglaremos más
adelante.Verificando una Impresora SerialimpresoraserialEsta sección explica como verificar la comunicación,
bajo FreeBSD, de una impresora conectada al puerto serial.Para probar una impresora conectada el puerto
serial:Cambiar a root usando &man.su.1;.Edite el fichero /etc/remote.
Añadiendo la siguiente entrada:printer:dv=/dev/puerto:br#bps:pa=paridadbits-por-segundopuerto serialparidadDonde puerto es el dispositivo usado
por el puerto serial (ttyd0,
ttyd1, etc.), bps se
refiere a la velocidad, en bits-por-segundo, a la que se comunica la
impresora, y paridad es la paridad
requerida por la impresora (ya sea even,
odd, none o
zero).N de T: Las opciones de paridad se han dejado en inglés,
en virtud de que así deberán especificarse en la
configuración.He aqui un ejemplo para una impresora conectada por medio de un
puerto serial, el tercer puerto a 19200 bps, sin paridad:printer:dv=/dev/ttyd2:br#19200:pa=noneConectarse a la impresora por medio de &man.tip.1;.
Teclee:&prompt.root; tip printerSi este paso no funciona, edite nuevamente el fichero
/etc/remote e intente utilizando
/dev/cuaaN
en lugar de utilizar
/dev/ttydN.Envio de datos a la impresora.Si la impresora puede imprimir texto plano, entonces utilice
&man.lptest.1;. Teclee:&prompt.user; $lptestSi es una impresora PostScript o que utilice otro lenguaje,
entonces envie un pequeño programa a la impresora. Teclee
el programa, línea por línea,
muy cuidadosamente ya que algunas teclas, como
la de retroceso son significativas para la impresora. Puede ser
que también necesite un caracter especial para marcar el
fin-de-fichero y que la impresora sepa que ha recibido el
programa completo. Para impresoras PostScript, utilice las teclas
CONTROL+D.Otra variante es, guardar el programa en un fichero y teclear:
&prompt.user; >ficheroDonde fichero es el nombre del
fichero que contiene el programa. Una vez que &man.tip.1; envia
el programa, presione la tecla correspondiente a fin de
archivo.Usted debe ver algo de impresión. No se preocupe si el
texto no se ve del todo bien; posteriormente arreglaremos esto.Habilitando la Cola de Impresión: El fichero
/etc/printcapEn este punto, su impresora debe estar conectada, su kernel
configurado con el soporte de comunicación, y debe haber podido
enviar datos a su impresora. Ahora estamos listos para configurar
LPD para controlar el accesos a nuestra
impresora.Para efecto de configurar LPD, es
necesario editar el fichero /etc/printcap. El
sistema de cola de LPD lee este fichero
cada vez que se utiliza, de tal forma que los cambios que se realicen
en este fichero, surten efecto inmediatamente.impresoracaracterísticasEl formato que mantiene el fichero &man.printcap.5; es muy
concreto. Utilice su editor de texto favorito para hacer cambios
en /etc/printcap. El formato es idéntico
al que guardan los ficheros que describen capacidades, tal como
/usr/share/misc/termcap y
/etc/remote. Para ver mayor información
con respecto al formato, vea la página de ayuda &man.cgetent.3;.
De un modo simple, la configuración de una cola consiste en
los siguientes pasos:Seleccione un nombre (y algunos alias convenientes) para la
impresora, y especifíquelos en el fichero
/etc/printcap ; vea la sección
Nombrando la Impresora
para más información al respecto.páginas encabezadoDesactive el encabezado de páginas (el cual esta
activado por default), al insertar la característica
sh; vea la sección Eliminando las Páginas
de Encabezados para más información al
respecto.Cree un directorio para la cola, y especifique su
ubicación con la característica
sd; vea la sección Creando el Directorio de
la Cola para mayor información.Ubique el dispositivo /dev a
usar por la impresora e indiquelo en el fichero
/etc/printcap con la característica
lp; vea la sección Identificando el Dispositivo de
Impresión para mayor información. Así
mismo, si la impresora esta conectada a un dispositivo serial,
utilice las características fs,
fc, xs y xc
para establecer los parámetros de comunicación; esto
se detalla en la sección Configurando los Parámetros de
Comunicación de la Cola de Impresión.Instalar un filtro de entrada de texto plano; vea la
sección Instalando un
Filtro de Texto para más detalles.Probar la configuración, al imprimir algo con el comando
&man.lpr.1;. Para más detalles vea las secciones Probando la Configuración y
Resolución de
Problemas.
Las impresoras basadas en un lenjuaje, tal como PostScript, no
pueden imprimir texto plano directamente. Los pasos de
configuración mencionados anteriormente, así como las
siguientes secciones, asumen que si usted cuenta con una impresora
de este tipo, sólo va a imprimir ficheros que la impresora
puede manejar.Normalmente los usuarios esperan poder imprimir texto plano a
cualquier impresora conectada al sistema. Los programas que usan como
interfaz de impresión a LPD, asumen
lo mismo. Si usted cuenta con una impresora basada en lenguaje y desea
poder imprimir en el lenguaje de la impresora así como
texto plano, es importante considerar que debe añadir
un paso adicional a los mencionados anteriormente: instalar un programa
de conversión detexto-plano-a-PostScript (u otro lenguaje). La
sección Acomodando
Trabajos de Texto Plano en Impresoras PostScript le indica como
debe hacerse esto.Nombrando la ImpresoraEl primer paso (sencillo) es escojer un nombre para su impresora.
En realidad no importa mucho si este nombre es funcional o un tanto
abstracto, en virtud de que usted podrá asignar alias para la
impresora.Cuando menos una de las impresoras señaladas en el fichero
/etc/printcap debe contar con el alias
lp. Este es el nombre de la impresora por default.
Si los usuarios del sistema no cuentan con la variable de entorno
PRINTER o bien no especifican en la línea de
comando, al ejecutar cualquier comando de LPD,
el nombre de la impresora a utilizar, entonces lp
será la impresora por default a utilizar.También, como práctica común, se suele asignar
el último alias a la descripción completa de la
impresora, incluyendo marca y modelo.Una vez que ha seleccionado un nombre y algunos aliases, ingreselos
en el fichero /etc/printcap. El nombre de la
impresora deberá colocarse en la columna izquierda
máxima. Separe cada alias con una barra vertical e incluya
dos puntos después del último alias.En el siguiente ejemplo, comenzaremos con el esqueleto del
fichero /etc/printcap, que define dos
impresoras (una de matriz Diablo 630 y una impresora laser
PostScript Panasonic KX-P4455):#
# Fichero /etc/printcap para el host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:En este caso, la primer impresora se llama
rattan y tiene como aliases
line, diablo,
lp, y Diablo 630 Line
Printer. Dado que tiene el alias
lp, tambié se considera la impresora por
default. La segunda impresora se llama
bamboo, y cuenta con los aliases
ps, PS,
S, panasonic, y
Panasonic KX-P4455 PostScript v51.4.Eliminando las Páginas de Encabezados
- imprimiendo
+ imprimirpáginas de encabezadoEl sistema de cola de impresión
LPD, por default, imprimirá una
página de encabezado para cada trabajo. Esta
página contiene el nombre del usuario que solicitó la
impresión, el host del cual se envio el trabajo y el nombre
del trabajo, todo en letras grandes. Desafortunadamente, todo esta
impresión extra, interfiere con el trabajo de depuración
de la configuración básica de la impresora, por lo que
vamos a deshabilitar esta opción.Para eliminar las páginas de encabezado, añada
shen la entrada de la impresora del fichero
/etc/printcap. He aqui un ejemplo del fichero
/etc/printcap con sh
incluida en él:#
# FIchero /etc/printcap para el host rose - sin paginas de encabezado
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:Note como hemos utilizado el formato correcto: donde la primer
línea comienza en la primer columna de la izquierda y las
líneas subsecuentes estan cuentan con sangría de un
solo tabulador (TAB). Cada línea termina con
una diagonal invertida, excepto la última.Creando el Directorio de la Colacola de impresióntrabajos de impresiónEl siguiente paso en la configuración de la cola, es crear el
directorio de cola de impresión, un
directorio en el cual residen los trabajos de impresión hasta que
son llevados a cabo, y donde otros ficheros de soporte se
localizan.Dada la naturaleza variante de los directorios de cola, es costumbre
que estos se localicen en /var/spool. No es
necesario respaldar el contenido de estos directorios, ya que rehacerlos
es tan simple como ejecutar &man.mkdir.1;.También es una buena costumbre crear el directorio con el
mismo nombre que tenga la impresora, como se muestra a
continuación:&prompt.root; mkdir /var/spool/nombre-impresoraAunque si cuenta con bastantes impresoras en su red, puede que
desee crear todos los directorios de cola, bajo un sólo
directorio reservado para todas aquellas que imprimen usando
LPD. En nuestro ejemplo haremos esto con
nuestras dos impresoras de ejemplo
rattan y
bamboo:&prompt.root; mkdir /var/spool/lpd
&prompt.root; mkdir /var/spool/lpd/rattan
&prompt.root; mkdir /var/spool/lpd/bambooSi a usted le preocupa la privacidad de los trabajos que
imprimen los usuarios, puede que desee proteger el directorio
de cola, de tal forma que no sea de acceso público. Los
directorios de cola deben pertenecer
al usuario daemon y grupo daemon, y debe contar con permisos de
lectura, escritura y navegación por estos y nadie
más. Haremos esto para nuestros ejemplos:&prompt.root; chown daemon:daemon /var/spool/lpd/rattan
&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan
&prompt.root; chmod 770 /var/spool/lpd/bambooFinalmente, debe indicar a LPD acerca
de estos directorios, en el fichero
/etc/printcap. Esta indicación se hace
por medio de la característica sd :#
# Fichero /etc/printcap para el host rose - incluyendo directorios de cola
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:Notese que el nombre de la impresora inicia en la primer columna
mientras que el resto debe contar con sangría de un tabulador y
todas las líneas, excepto la última, terminar con una
diagonal invertida.En el caso de que usted no especifique directorio alguno con
sd, el sistema de cola usara como default
/var/spool/lpd .Identificando el Dispositivo de ImpresiónEn la sección Añadiendo Dispositivos de
Puertos en /dev, vimos que dispositivo bajo
el directorio /dev iba a utilizar FreeBSD para
comunicarse con la impresora. Ahora le indicaremos esto a
LPD. Cuando el sistema de cola tiene un
trabajo por imprimir, abrirá el dispositivo especificado en
nombre del programa filtro (reponsable de pasar los datos a la
impresora).Para efecto de indicar esto, en la entrada de la impresora en
el fichero /etc/printcap, usaremos la
característica lp.En el ejemplo que hemos visto, asumiremos que
rattan esta conectada al primer puerto paralelo, y
bamboo en el sexto puerto serial; he aqui lo que
tendriamos que añadir a /etc/printcap:#
# Fichero /etc/printcap para el host rose - identificando los dispositivos a usar
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:Si usted no indica la característica lp
en el fichero /etc/printcap,
LPD usará el dispositivo
/dev/lp por default. El dispositivo
/dev/lp actualmente no existe en FreeBSD.Si la impresora que esta instalando esta conectada a un puerto
en paralelo, puede saltar la siguiente parte y dirijirse a la
sección Instalando un
Filtro de Texto. De otra manera, asegurese de seguir las
instrucciones de la siguiente sección.Configurando los Parámetros de Comunicación
del la Cola de ImpresiónimpresoraserialPara impresoras conectadas a un puerto serial,
LPD puede especificar la velocidad de
bps, la paridad, y otros parámetros de comunicación
en lugar del programa filtro que manda los datos a la
impresora. Esto es una ventaja dado lo siguiente:Le permite probar diferentes parámetros de
comunicación, con el simple hecho de modificar el fichero
/etc/printcap; con lo cual no es necesario
recompilar el programa filtro.Habilita el sistema de cola de impresión para hacer
uso del mismo programa filtro, para varias impresoras que pueden
contar con diferentes configuraciones de comunicación.Para efecto de controlar los parámetros de
comunicación por medio de un puerto serial, con la
característica lp, en el fichero
/etc/printcap, utilizarmos lo
siguiente:br#bps-velocidadEstablece la velocidad de comunicación del dispositivo,
donde bps-velocidad puede ser 50, 75, 110,
134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600,
19200, o 38400 bits-por-segundo.fc#limpiar-bitsLimpia la marca de bits, donde
limpiar-bits afecta en la estructura de
sgttyb una vez que se ha entablado la
comunicación con el dispositivo.fs#establece-bitsEstablece la marca de bits
establece-bits en la estructura de
sgttyb.xc#limpia-bitsLimpieza del modo bits, de forma local
limpia-bits una vez que se ha abierto
la comunicación con el dispositivo.xs#establece-bitsEstablece el modo bits, de forma local
establece-bits.Para mayor información con respecto al uso de las
caractrística de bits:
fc, fs,
xc, y xs,
vea el fichero
/usr/include/sys/ioctl_compat.h.Cuando LPD abre el canal de
comunicación con el dispositivo especificado por
lp, lee la marca de bits en la estructura
sgttyb; limpia cualquier bit en la
característica fc y establece bits
en la característica fs, para
posteriormente aplicar la configuración resultante. El
mismo procedimiento se sigue en el modo de bits local.Ahora añadamos la impresora de ejemplo que esta
conectada al puerto serial numero seis. La velocidad de bps la
estableceremos en 38400 bps. Para las marcas de bits usaremos
TANDEM,
ANYP, LITOUT,
FLUSHO, y PASS8.
Para el modo local de bits, estableceremos
LITOUT y PASS8 :bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:fs#0x82000c1:xs#0x820:Instalando un Filtro de Textofiltros de impresiónAhora estamos listos para indicarle a LPD
que filtro de texto debe utilizar para enviar los trabajos a la
impresora. Un filtro de texto, también
conocido como filtro de entrada, es un
programa que ejecuta LPD cuando tiene
un trabajo para imprimir. Cuando LPD
ejecuta el filtro de texto para una impresora, configura de manera
estandar la entrada para el trabajo a imprimir, y la salida
estandar a la impresora indicada en la característica
lp. El filtro espera leer el trabajo de la
entrada estandar, hacer el trabajo de traducción necesario
para la impresora, y enviar los resultados a la salida estandar, lo
cual será impreso. Para mayor información en los
filtros de texto, vea la sección Como Trabajan los Filtros.
En el caso de nuestro ejemplo, el filtro de texto puede ser un
pequeño script que sólo ejecute
/bin/cat para enviar el trabajo a la
impresora. FreeBSD cuenta con otro filtro llamado
lpf que controla los caracteres de regreso y
subrayado en impresoras que pueden presentar problemas con
dichos caracteres. Y desde luego, usted puede utilizar cualquier
filtro que desee. El filtro lpf se describe a
detalle en la sección titulada lpf: un Filtro de Texto.En primer lugar hagamos del script
/usr/local/libexec/if-simple un simple filtro
de texto. Introduzca el siguiente texto en un fichero, con su
eitor de texto favorito:#!/bin/sh
#
# if-simple - Filtro de texto simple para lpd
# Instalado en la ruta /usr/local/libexec/if-simple
#
# Simplemente copia stdin a stdout. Ignora todos los argumentos del filtro.
/bin/cat && exit 0
exit 2Haga el fichero ejecutable:&prompt.root; chmod 555 /usr/local/libexec/if-simpleAhora indiquele a LPD que lo use, al añadirlo con la
característica if, en el fichero
/etc/printcap. Este filtro, lo vamos a
añadir en ambas impresoras de nuestro ejemplo, en el fichero
/etc/printcap:#
# Fichero /etc/printcap para host rose - añadiendo el filtro de texto
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:\
:if=/usr/local/libexec/if-simple:Encienda LPD&man.lpd.8; se puede correr desde /etc/rc,
controlado por la variable lpd_enable. Esta
variable por default esta deshabilitada con NO.
Si usted no cuenta con esta línea, añadala de la
siguiente forma:lpd_enable="YES"al fichero /etc/rc.conf, y posteriormente puede
reiniciar su sistema o ejecutar &man.lpd.8;.&prompt.root; lpdProbando la ConfiguraciónUsted ha llegado al fin de una configuración sencilla de
LPD. Desafortunadamente, aun no es
momento de una felicitación, dado que aun debemos probar
la configuración y resolver cualquier problema que se
presente. Para efecto de probar la configuración, intente
imprimir algo. Para imprimir con el sistema
LPD, utilice el comando &man.lpr.1;,
el cual envia el trabajo para su impresión.Puede combinar &man.lpr.1; con el programa &man.lptest.1;,
el cual se ve en la sección Verificando la Comunicación
con la impresora, para generar un texto de prueba.Simplemente para probar la configuración de
LPD, intente:Teclee:&prompt.root; lptest 20 5 | lpr -Pnombre-impresoraDonde nombre-impresora es uno de
los nombres (o alias) que aparecen especificados en el fichero
/etc/printcap para las impresoras. Para
probar con la impresora por default, teclee &man.lpr.1; sin la
opción . Nuevamente, si esta probando
una impresora que espera recibir PostScript, envie un programa
PostScript en ese lenguaje, en lugar de usar &man.lptest.1;. Puede
hacer esto poniendo el programa en un fichero y tecleando
lpr fichero.Para una impresora PostScript, usted debe visualizar el
resultado del programa. Si esta usando &man.lptest.1;,
entonces su resultado debe verse algo similar a lo siguiente:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678Para más pruebas de la impresora, intente descargar
programas más largos (para impresoras basadas en un
lenguaje) o ejecutar &man.lptest.1; con diferentes opciones. Por
ejemplo lptest 80 60 producirá 60
líneas de 80 caracteres cada una.Si la impresora no funcionó, vea la sección Resolución de
Problemas.Configuración Avanzada de una ImpresoraEsta sección describe el uso de filtros para formatos
especiales, encabezados de página, impresión en red, y
restricción de uso de la impresora por cuenta.Filtrosfiltros de impresiónAun cuando LPD maneja con protocolos
de red, controles de acceso, requisiciones y otros aspectos de la
impresión, la mayor parte del trabajo real
se lleva a cabo por los filtros. Los Filtros son programas que se
comunican con la impresora y controlan las dependendcias de su
dispositivo y requerimientos especiales. En el ejemplo de la impresora
simple, instalamos un muy sencillo filtro de texto plano—un ejemplo
extremadamente sencillo que debiese trabajar con la mayoría de
las impresoras (en la sección Instalando un Filtro de Texto).
De cualquier manera, para tomar ventaja de la conversión de
formatos, cuentas de impresión, trucos específicos de las
impresoras y demás, es importante saber como trabajan los filtros.
En virtud de que todos estos aspectos son la responsabilidad de estos
filtros. Y la mala noticia es, que la mayor parte del tiempo
usted debe proveerse de estos filtros. La buena
noticia es normalmente estos ya existen disponibles; y cuando no,
son sencillos de escribir.FreeBSD tambié cuenta con un
/usr/libexec/lpr/lpf, que trabaja con muchas
impresoras que pueden imprimir texto plano. (Maneja caracteres de
regreso y tabulador en el fichero, así como conteo, pero se
puede decir que eso es todo). Existen también una gran
cantidad de filtros y componentes de estos, disponibles en la
Colección de Ports de FreeBSD.He aqui lo que encontrará en esta sección:La sección Como Trabajan los Filtros
intenta dar un repaso general al papel que juegan los filtros en el
proceso de impresión. Es importante que lea esta
sección para ver que sucede tras bambalinas
cuando LPD usa filtros. Este conocimiento
puede ayudarle a anticiparse y resolver problemas que puede
encontrar cuando instala más y más filtros en cada
impresora.Normalmente LPD espera poder imprimir
texto plano en todas las impresoras. Esto puede representar un
problema para las impresoras PostScript (o que manejen otro lenguaje
de impresión), las cuales no pueden imprimir texto plano
directamente. La sección Acomodando Trabajos de
Texto Plano en Impresoras PostScript le indica que debe de
hacer si se le presenta este problema. Es importante que lea esta
sección si usted cuenta con una impresora PostScript.PostScript es un formato de salida muy popular. Incluso algunas
personas (yo, incluido) escriben código PostScript
directamente. Pero las impresoras PostScript son caras. La
sección Simulando PostScript en Impresoras
No-PostScript le indica como puede hacer, para que una
impresora no-PostScript, acepte e imprima datos PostScript.
Es recomendable que lea esta sección si cuenta con una
impresora no-PostScript.La sección Filtros de
Conversión, le indica la forma en que puede
automatizar la conversión de ciertos formatos
específicos de ficheros, tal como gráficos o
datos de un determinado tipo, a un formato que la impresora
puede entender. Después de leer esta sección usted
podrá configurar su impresora de tal forma que los
usuarios puedan teclear lpr -t para imprimir
datos troff o lpr -d para imprimir datos de tipo
TeX DVI, o bien lpr -v para imprimir datos de
imagen y así sucesivamente. Recomiendo la lectura de esta
sección.La sección
Filtros de Salida explica todo acerca de las utilidades
que no son muy usadas de LPD: filtros
de salida. A menos que usted haya habilitado la impresión de
páginas de encabezado (vea Páginas de
Encabezado), puede saltar toda esta sección.La sección lpf:
Un Filtro de Texto detalla el uso de lpf,
un sencillo filtro de texto, para impresoras de matriz de puntos (e
impresoras laser que actuan como estas) que viene con FreeBSD. Si
usted necesita una forma rápida de tener un contador de
trabajos de impresión para texto plano, o bien si tiene una
impresora que al ver caracteres de regreso (backspace) comienza a
echar humo, definitivamente debe considerar lpf
como su alternativa.Como Trabajan los FiltrosComo se menciono anteriormente, un filtro es un programa ejecutable
que se inicia por LPD, para manejar el
dispositivo dependiente, responsable de la comunicación con la
impresora.Cuando LPD desea imprimir un trabajo,
inicia un programa filtro. Establece como entrada estandar del filtro
al fichero, y a la impresora como salida estandar, y como error
estandard al fichero log (indicado con la cracterística
lf, en el fichero /etc/printcap
o por default como /dev/console).troffCual filtro debe ser iniciado por LPD y
con que argumentos, depende en lo especificado en el fichero
/etc/printcap y los argumentos que hayan sido
utilizados por el usuario al momento de usar en la línea de
comandos: &man.lpr.1;. Por ejemplo, si el usuario teclea
lpr -t, LPD
iniciará el filtro para ficheros troff, listado en las
características tf para la impresora
destino. Si el usuario desea imprimir texto plano iniciará
el filtro if (esto casi es así, para mayor
información, vea la sección Filtros de Salida).Existen tres tipos de filtros que puede declarar en el fichero
/etc/printcap:El filtro de texto, erroneamente llamado
filtro de entrada en la documentación
de LPD, este se encarga de manejar la
impresión de texto simple. Piense en este como en el
filtro por default. LPD espera que
todas las impresoras puedan imprimir texto plano y es el
filtro de texto, el que se encarga de manejar los caracteres de
retroceso y tabulador, de tal forma que la impresora no se
confunda. Si en su sistema se debe llevar un conteo de
impresiones, el filtro de texto también debe llevar un
conteo de páginas impresas, normalmente al llevar la
cuenta de las líneas impresas y comparandolas con el
numero de líneas soportadas por página. El filtro
de texto se comienza con los siguientes argumentos:
nombre-del-filtro-c-wanchura-llongitud-isangrado-n login-h hostfichero-act
donde
aparece si el trabajo se envio utilizando lpr
-lanchuraes el valor de la característica
pw (ancho de página), indicado en
/etc/printcap, por default se usa
un valor de 132longitudes el valor de la característica
pl (longitud de página), por
default su valor es 66sangradose refiere a los espacios que se considerarán para
lpr -i, por default es 0.logines el nombre de la cuenta del usuario que imprime
el trabajohostes el nombre del host, del cual se ha enviado el trabajo
de impresiónfichero-actes el nombre del fichero contador, de
la característica af.impresorafiltrosUn filtro de conversión convierte
un formato específico, a uno que la impresora puede
plasmar en un papel. Por ejemplo, datos de tipo ditroff no pueden
imprimirse directamente, pero puede instalar un filtro de
conversión para ficheros ditroff, de tal forma que los
datos ditroff se conviertan a un formato que entiende la
impresora. La sección Filtros de
Conversión explica todo lo que usted necesita saber
sobre ellos. Los filtros de conversión también
requieren de llevar un conteo, si usted requiere de este
control. Los filtros de conversión se inicializan con
estos argumentos:
nombre-del-filtro-xancho-pixel-yalto-pixel-n login-h hostfichero-act
donde ancho-pixel es el valor de la
característica px (default 0) y
alto-pixel es el valor de la
característica py (default 0).El filtro de salida es usado solamente si
no existe un filtro de texto, o bien si las páginas de
encabezado están habilitadas. En mi experiencia, los
filtros de salida raramente se utilizan. La sección Filtros de Salida describe
el uso de estos. Sólo existen dos argumentos:
nombre-filtro-wancho-llargo
los cuales son idénticos a los argumentos
y de los filtros de
texto.La salida de los filtros debe ser con
el siguiente resultado:exit 0Esto es si el resultado de la impresión es
satisfactorio.exit 1Si el filtro falló en la impresión, pero
desea que LPD intente de nuevo
el trabajo de impresión. LPD
reiniciará el filtro si sale con esta clave.exit 2Si el filtro falla imprimiendo el fichero y no desea que
LPD lo intente de nuevo.
LPD desechará el fichero.El filtro de texto
/usr/libexec/lpr/lpf que viene con FreeBSD,
toma ventaja de los argumentos de ancho y largo, para determinar
cuando alimentar la impresora y como llevar el conteo de uso de la
impresora. Utiliza el host y login, así como el fichero de
conteo, para llevar el control de este registro.Si usted esta buscando adquirir filtros, verifique que ellos son
compatibles con LPD. Si lo son, deberan soportar los argumentos
descritos anteriormente. Si usted planea escribir filtros para
uso general, entonces creelos pensando en soportar estos
argumentos y códigos de salida.Acomodando Trabajos de Texto Plano en Impresoras PostScripttrabajos de impresiónSi usted es el único usuario de su computadora e impresora
PostScript (u otro lenguaje de impresoras), y promete nunca enviar
texto plano a su impresora o bien hacer uso de algunos programas que
probablemente envien texto plano a su impresora, entonces usted no
debe preocuparse por leer esta sección.Pero, si usted desea enviar tanto texto plano, como PostScript a
su impresora, entonces es altamente recomendable que prepare la
configuración de su impresora. Para efecto de hacer esto,
contamos con el filtro de texto, para detectar si los trabajos que
se han mandado son de texto plano o PostScript. Todos los trabajos de
tipo PostScript, deben comenzar con %! (para otros
lenguajes de impresión, vea la documentación de su
impresora). Si esos son los dos primeros caracteres de su trabajo,
entonces se considera PostScript y puede pasar el resto del trabajo de
forma directa. Si esos no son los primeros dos caracteres, entonces el
filtro hará la conversión del texto a PostScript e
imprimirá el resultado.¿Cómo se hace esto?impresoraserialSi usted cuenta con una impresora serial, una buena forma de hacer
esto es instalando lprps. lprps
es un filtro de impresión PostScript que lleva a cabo una
comunicación de dos vías con la impresora. Actualiza
el fichero de estatus de la impresora, por medio de información
actualizada, de tal forma que los usuarios y administradores pueden
ver exactamente el estado que guarda la impresora (tal como
toner bajo o
papel atorado). Pero más importante
es el programa que incluye llamado psif, el cual
detecta si el trabajo que se ha enviado es texto plano, con lo cual
llama a textps (otro programa que viene con
lprps), para convertir el texto plano a
PostScript. Posteriormente utiliza lprps para
enviar el trabajo a la impresora.El programa lprps es parte de la
Colección de Ports de FreeBSD (vea la sección La Colección de Ports). Claro esta, que
usted puede descargar, compilar e instalarlo. Una vez que instale
lprps, simplemente especifique la ruta al programa
psif que a su vez es parte de
lprps. Si ha instalado lprps
de la Colección de Ports,
añada lo siguiente, en la parte correspondiente a su
impresora Serial-PostScript, en el fichero
/etc/printcap::if=/usr/local/libexec/psif:También deberá especificar la característica
rw; que le indica a LPD
abrir la impresora en modo de lectura-escritura.Si usted cuenta con una impresora PostScript, conectada a un puerto
paralelo (y por lo tanto no cuenta con la comunicación de dos
vías con la impresora, que lprps requiere),
puede utilizar el siguiente script de shell como filtro de texto:
#!/bin/sh
#
# psif - Imprime PostScript o texto plano en impresoras PostScript
# Script version; NO la version que viene con lprps
# Instalado en /usr/local/libexec/psif
#
read first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Trabajo PostScript, imprimirlo.
#
echo "$first_line" && cat && printf "\004" && exit 0
exit 2
else
#
# Texto Plano, convertirlo e imprimirlo.
#
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
exit 2
fiEn este script, textps es un programa que hemos
instalado por separado, para convertir texto plano a PostScript. Usted
puede utilizar cualquier cualquier programa de conversión de
texto plano a PostScript que desee. La Colección de Ports de FreeBSD incluye un
programa muy completo llamado a2ps que quizás
desee investigar.Simulando PostScript en Impresoras No-PostScriptPostScriptemulaciónGhostscriptPostScript es el estandar por excelencia en
impresiones de alta calidad. Aunque en realidad PostScript resulta
ser un estandar algo caro. Afortunadamente la
Empresa Alladin, cuenta con un emulador PostScript, llamado
Ghostscript que corre bajo FreeBSD.
Ghostscript puede leer la mayoría de los ficheros PostScript
y volcarlos en una gran variedad de dispositivos, incluyendose gran
variedad de impresoras no-PostScript. Al instalar Ghostscript y usando
un filtro de texto especial para su impresora, puede hacer que su
impresora no-PostScript actue como una impresora PostScript real.
Ghostscript se encuentra en la Colección de Ports de FreeBSD
por lo que puede realizar la instalación desde este medio.
También puede descargarlo, compilarlo e instalarlo de una
manera fácil.Para efecto de simular PostScript, contamos con el filtro de texto
que detecta si se esta imprimiendo un fichero PostScript. Si no es
así, el filtro pasará el trabajo directamente a la
impresora, de otra forma utilizará Ghostscript para convertir
primero el fichero a un formato que la impresora entienda.Aqui tenemos un ejemplo: el siguiente script es un filtro de
texto para impresoras Hewlett Packard DeskJet 500. Para otras
impresoras, substituya el argumento del
comando gs (Ghostscript). Teclee gs
-h para obtener una lista de todos los dispositivos
soportados por Ghostscript en su sistema).#!/bin/sh
#
# ifhp - Impresion simulada-Ghostscript PostScript en una DeskJet 500
# Instalada en /usr/local/libexec/hpif
#
# Trate a LF como CR+LF:
#
printf "\033&k2G" || exit 2
#
# Read first two characters of the file
#
read first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Se trata de PostScript; use Ghostscript para convertir e imprimir.
#
# Note que los ficheros PostScript son , de hecho, programas interpretados,
# y esos programas se permiten escribir en la salida estandar, lo que puede
# confundir la salida impresa. De tal forma que redireccionaremos la salida
# estandar a error estandar, y crearemos una clave de salida 3, para la
# salida estandar, y haremos que Ghostscript escriba su salida a esta.
# Un ejercicio para el lector astuto: capture la salida del error estandar
# de Ghostscript y envielo por correo de regreso al usuario original, que
# genero el trabajo de impresion.
#
exec 3>&1 1>&2
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
-sOutputFile=/dev/fd/3 - && exit 0
#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \
&& exit 0
else
#
# Texto plano o PCL de HP, asi que solo vamos a imprimirlo directamente;
# permita la alimentacion de forma al final, para expulsar la ultima
# pagina.
#
echo $first_line && cat && printf "\033&l0H" &&
exit 0
fi
exit 2Finalmente, necesita notificar a LPD
de la característica if, que corresponde
al filtro a utilizar::if=/usr/local/libexec/ifhp:Y eso es todo. Puede teclear lpr texto.plano y
lpr cualquier.ps y ambos deben imprimirse
exitosamente.Filtros de ConversiónUna vez que se ha completado la configuración descrita en
la sección Configuración Simple de
una Impresora, probablemente lo primero que deba hacer es
instalar filtros de conversión para su formato de fichero
favorito (aparte de text plano ASCII).¿Por qué Instalar Filtros de
Conversión?TeX
- imprimiendo ficheros dvi
+ impresión de ficheros dviLos filtros de conversión sirven para instalar de una
manera sencilla varios tipos de formatos especiales. Como ejemplo,
suponga que requiere imprimir un buen numero de ficheros
desarrollados con el sistema de escritura TeX, y contamos con una
impresora PostScript. Cada vez que generemos un fichero DVI desde
TeX, no podremos imprimirlo directamente hasta que hagamos una
conversión de este a PostScript. La secuencia de comandos
a seguir es algo así:&prompt.user; dvips fichero-prueba.dvi
&prompt.user; lpr fichero-prueba.psAl instalar un filtro de conversión, podemos omitir
llevar a cabo la conversión manual, y permitir que
LPD se haga cargo por nosotros. Ahora,
cada vez que generemos un fichero DVI, sólo estaremos a
un paso de su impresión:&prompt.user; lpr -d fichero-prueba.dviCon esto le hemos indicado a LPD que
haga la conversión del fichero DVI. Esto se lleva a cabo
por medio de la opción . La sección
Opciones de Formato y
Conversión enumera las opciones de conversión.
Por cada una de las opciones que desea que una impresora
reconozca, instale un filtro de
conversión y señale su ruta en el fichero
/etc/printcap. Un filtro de conversión
es como el filtro de texto usado en la configuración de una
impresora simple (vea la sección Instalando un Filtro de Texto
para una referencia) excepto de que en lugar de imprimir texto
plano, el filtro convierte el fichero a un formato que la impresora
puede entender.¿Qué Filtros de Conversión Debo
Instalar?Usted debe instalar los filtros de conversión que vaya a
necesitar. Si imprime gran cantidad de documentos DVI, es
recomendable que instal un filtro de conversión para DVI.
Si cuenta con bastantes ficheros troff por imprimir, entonces
un filtro troff sería una buena idea.En la siguiente tabla encontrará un resúmen de
los filtros con que trabaja LPD, un
ejemplo de su entrada en /etc/printcap y
como hacer uso de estos con el comando lpr :
Tipo de FicheroCaracterística /etc/printcapOpción lprcifplotcfDVIdfplotgfditroffnfFORTRAN textorftroffrfrastervftexto planoifninguna, , o
En nuestro ejemplo, el uso de lpr -d indica
que la impresora requiere de la característica
df, en su entrada del fichero
/etc/printcap.fortranA pesar de lo que otros puedan opinar, formatos como texto
de FORTRAN o plot, son probablemnte obsoletos. A su gusto, usted
puede encontrar nuevos usos de estos formatos, así como a
cualquier otro con el simple hecho de instalar los filtros
adecuados. Por ejemplo, supongamos que desea imprimir ficheros de
tipo Printerleaf (que son ficheros generados por el programa de
promoción de escritorio Interleaf) de forma directa, pero
que nunca imprime ficheros plot. Podría instalar un filtro
de conversión de Printerleaf bajo la característica
gf y posteriormente educar a sus usuarios a
que utilicen el comando lpr -g para llevar a
cabo impresiones de ficheros Printleaf.Instalando Filtros de ConversiónConsiderando que los filtros de conversión son programas
que usted instala independientemente de la instalación base
de FreeBSD, probablemente el mejor lugar para colocarlos
sería bajo el directorio /usr/local.
El directorio /usr/local/libexec es un
lugar común, en virtud de que estos son programas especiales
que sólo serán ejecutados por
LPD; los usuarios comunes no
necesitarán ejecutarlos nunca.Para habilitar un filtro de conversión, deberá
especificar su ruta bajo la característica adecuada, en la
entrada de la impresora correspondiente en el fichero
/etc/printcap.En nuestro ejemplo, añadiremos el filtro de
conversión DVI, para la impresora llamada
bamboo. He aqui un ejemplo del fichero
/etc/printcap que hemos estado utilizando,
con la nueva característica df, para
la impresora bamboo.#
# Fichero /etc/printcap para host rose - añadiendo df a bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:El filtro DVI es un script de shell llamado
/usr/local/libexec/psdf. Aqui presentamos el
script:#!/bin/sh
#
# psdf - Filtro de impresion DVI a PostScript
# Instalado en /usr/local/libexec/psdf
#
# Llamado por lpd cuando el usuario ejecuta lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"Este script ejecuta dvips en modo de filtro
(la opción ) con la entrada estandar, que
es el trabajo a imprimir. Posteriormente inicia el filtro de
impresión PostScript lprps (vea la
sección Acomodando Trabajos de
Texto Plano en Impresoras PostScript), con las opciones que
LPD haya pasado al script. El comando
lprps hará uso de esas opciones para
llevar la cuenta de las páginas impresas.Más Ejemplos de Filtros de ConversiónConsiderando que no existe una serie de pasos establecida, para
instalar filtros de conversión, me permito mostrar algunos
ejemplos más. Puede usarlos tal como aparecen, si es que se
ajustan a sus necesidades.Este ejemplo es de un filtro de conversión raster
(bueno, de hecho se trata de un fichero GIF), para una impresora
Hewlett Packard LaserJet III-Si:#!/bin/sh
#
# hpvf - Convierte ficheros GIF a HP/PCL, posteriormente los imprime
# Instalado en /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
&& exit 0 \
|| exit 2Esto trabaja convirtiendo el fichero GIF a cualquier tipo de
fichero mapa portable, y conviritendo eso a un mapa en escala de
grises, y ese mapa de regreso a un fichero portable de mapa de
bits, y finalmente eso a datos compatibles con HP/PCL, entendible
por la impresora LaserJet.Aqui esta un ejemplo del fichero
/etc/printcap usando el filtro anterior, con la
impresora mencionada.#
# Fichero /etc/printcap para el host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:El siguiente script es un filtro de conversión de datos de
tipo troff desde un sistema groff, para la impresora PostScript
denominada bamboo:#!/bin/sh
#
# pstf - Convierte datos de troff tipo groff a PS, y los imprime.
# Instalado en /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"El script de arriba, nuevamente hace uso del comando
lprps, para manejar la comunicación con
la impresora. Si la impresora se encontrase en un puerto paralelo,
usariamos el siguiente script:#!/bin/sh
#
# pstf - Convierte datos groff a PS, y los imprime.
# Instalado en /usr/local/libexec/pstf
#
exec gropsEso es todo. Aqui presentamos la entrada necesaria en
/etc/printcap para habilitar el filtro::tf=/usr/local/libexec/pstf:Aqui presentamos un ejemplo que puede hacer que los viejos
usuarios de FORTRAN se ruboricen. Es un filtro de texto para
FORTRAN, usando impresoras que pueden imprimir directamente texto
plano. Lo instalaremos para la impresora teak:
#!/bin/sh
#
# hprf - Filtro de Texto FORTRAN para LaserJet 3si:
# Instalado en /usr/local/libexec/hprf
#
printf "\033&k2G" && fpr && printf "\033&l0H" &&
exit 0
exit 2Y añadiremos esta línea al fichero
/etc/printcap para la impresora
teak, para efecto de habilitar el filtro::rf=/usr/local/libexec/hprf:Aqui presentamos el último ejemplo que puede resultar algo
complicado. Vamos a añadir un filtro DVI para la impresora
LaseJet teak comentada anteriormente. Primero, la
parte sencilla: actualizaremos /etc/printcap
con la ubicación del filtro DVI::df=/usr/local/libexec/hpdf:Ahora la parte complicada: crar el filtro. Para eso, vamos
a necesitar un programa de conversión de DVI-a-LaserJet/PCL.
La Colección de Ports de FreeBSD (vea La Colección de Ports) cuenta con
uno, el nombre del paquete es: dvi2xx. Al
instalar este programa, nos brinda la funcionalidad que buscamos,
dvilj2p, el cual convierte ficheros DVI a
ficheros compatibles con LaserJet IIp, LaserJet III y LaserJet
2000 y códigos compatibles.El programa dvilj2p hace que el filtro
hpdf sea más complejo, en virtud de que
dvilj2p no puede leer desde la entrada
estandar. Este desea trabajar desde un nombre de fichero. Y lo
que es peor, es que el nombre del fichero debe contar con la
terminación .dvi, de tal forma que
usar /dev/fd/0 como entrada estandar representa
un problema. Esto lo podremos solucionar, creando un enlace
(simbólico) de un fichero temporal (uno que su tenga como
extensión .dvi) a
/dev/fd/0, y por tanto forzando a
dvilj2p a leer la entrada estandar.El único punto negativo que nos queda por resolver, es
que no podemos utilizar /tmp para el enlace
temporal. Los enlaces simbólicos son propiedad del grupo y
usuario bin. El filtro de ejecuta como usuario
daemon. Y el directorio
/tmp cuenta con el bit pegajoso
activado. El filtro puede crear el enlace, pero no podrá
limpiarlo una vez que termine y eliminarlo, ya que pertenece a un
usuario diferente.En lugar de esto, el filtro creará el enlace
simbólico en el directorio de trabajo actual, el cual
será el directorio de la cola de impresión
(especificado en /etc/printcap por la
característica sd). Este lugar es
perfecto para que los filtros hagan su trabajo, especialmente que
aqui existe más espacio (algunas veces) en disco duro, que
bajo el directorio /tmp.Finalmente, aqui presentamos el filtro:#!/bin/sh
#
# hpdf - Impresion de datos DVI en una impresora HP/PCL
# Instalado en /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
# Definir una funcion para limpiar nuestros ficheros temporales. Estos existen
# en el directorio de trabajo actual, el cual servira para la cola de impresion de
# la impresora.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Definir funcion para el manejo de errores fatales: imprimir un mensaje dado y salir
# con codigo de salida 2. Al salir con 2, le indica a LPD que no intente la impresion
# de nuevo.
#
fatal() {
echo "$@" 1>&2
cleanup
exit 2
}
#
# Si el usuario elimina el trabajo, LPD enviara un SIGINT, para que SIGINT
# (y algunas otros avisos) limpien despues de nosotros.
#
trap cleanup 1 2 15
#
# Asegurarse de que no estamos creando un conflicto con ficheros existentes.
#
cleanup
#
# Crear el enlace de la entrada DVI a la entrada estandar (el fichero a imprimir).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Hacer LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"
#
# Convertir e imprimir. Regresar valor de dvilj2p no parece my confiable,
# asi que es ignorado.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Limpiar y salir
#
cleanup
exit 0Conversión Automática: Una Alternativa A Los Filtros
De ConversiónTodos estos filtros de conversión realizan una gran labor
en pro de sus labores de impresión, pero con el inconveniente
de que cada usuario debe especificar cual filtro es el que se debe
utilizar (cuando se invoca el comando &man.lpr.1;). Si sus usarios
no son lo que podemos llamar aficionados a la computación, el
especificar que filtro utilizar puede volverse algo molesto. Y lo
que es peor, el uso de un filtro inadecuado puede causar que su
impresora termine imprimiendo cientos de hojas de papel de manera
incorrecta.En lugar de instalar filtros de conversión, quizás
le interese intentar que su filtro de texto (dado que es el filtro
por default) determine que tipo de fichero se esta enviando a
imprimir y automáticamente ejecute el filtro adecuado. En
este caso, herramientas como file pueden ser
de mucha utilidad. Claro esta, puede que algunos tipos de ficheros
puede ser difícil determinar de que tipo son, pero siempre
puede contar con filtros especiales para ellos.apsfilterimpresorafiltrosapsfilterLa Colección de Ports de FreeBSD cuenta con un filtro de
texto que ejecuta de forma automática la conversión,
llamado apsfilter. Este puede detectar texto
plano, PostScript y ficheros DVI, ejecutar la conversión
adecuada e imprimir.Filtros de SalidaEl sistema de cola de impresión de
LPD soporta otro tipo de filtros, que
aun no hemos explicado aqui: un filtro de salida. Un filtro de
salida esta diseñado para imprimir texto plano
únicamente, como el filtro de texto, pero de una forma
más simplificada. Si usted esta usando un filtro de
salida pero no filtro de texto, entonces:LPD inicia el filtro de salida para
el trabajo completo, en lugar de hacerlo para cada fichero del
trabajo.Para el filtro de salida, LPD
no realiza un trabajo extra para identificar el comienzo o
el fin del trabajo.En el filtro de salida, LPD no
utiliza como argumento el nombre de usuario o host, por lo tanto
no esta diseñado para llevar un conteo por usuario. De
hecho, este sólo maneja dos argumentos:nombre-filtro-wancho-llargoDonde ancho es tomado de la
característica pw y
largo es tomado de la
característica pl, para la impresora
en cuestión.Es importante que no se deje seducir por la simplicidad del filtro
de salida. Si usted desea que cada fichero de un trabajo sea impreso
en una página diferente, el filtro de salida no
hará este trabajo. Utilice un filtro de texto
(también conocido como filtro de entrada); vea la sección
Instalando un Filtro de Texto
. Mas allá, el filtro de salida es de hecho
más complicado en ese aspecto dado que examina la
cadena de bytes que se ha enviado, para buscar alguna marca especial y
enviarse señas él mismo, a nombre de
LPD.De cualquier forma, un filtro de salida es
necesario si usted desea páginas de
encabezado y requiere de enviar un secuencia de escape u otras
cadenas de inicialización para habilitar la impresión de
encabezados. (Aunque también es trivial si
desea cobrar de acuerdo a las páginas encabezado de cada
usuario, dado que LPD no otorga
información del usuario o host, al filtro de salida.)En una sola impresora, LPD permite el
uso tanto del filtro de salida como el filtro de texto. En cuyo caso,
LPD iniciará el filtro de salida
para imprimir las páginas de encabezado (vea la sección
Páginas de
Encabezado) únicamente. Posteriormente
LPD espera que el filtro de salida se
detenga por sí mismo al enviarle dos
bytes al filtro: ASCII 031 seguido de ASCII 001. Cuando un filtro de
salida recibe estos dos bytes (031, 001), deberá pararse,
enviandose a sí mismo una señal
SIGSTOP. Una vez que LPD
ha terminado de ejecutar otros filtros, reiniciará el filtro de
salida, el enviarle una señal SIGCONT.Si existe un filtro de salida, pero no existe
un filtro de texto y LPD esta trabajando con
un trabajo en texto plano, LPD
utilizará el filtro de salida para hacer el trabajo. Como se
comento anteriormente, el filtro de salida imprimirá cada
fichero del trabajo en secuencia, sin intervención de
alimentación u otras ventajas con lo que al papel se refiere, y
seguramente que esto no es lo que usted desea. En
casi todos los casos usted necesitará un filtro de texto.El programa lpf, que comentamos anteriormente
como un filtro de texto, también es capaz de ejecutar un filtro
de salida. Si desea un trabajo rápido-y-sucio del filtro de
salida, pero no desea que se escriban bytes de detección, ni
envien códigos, puede usar lpf.
También puede incluir lpf en un script de
shell, para que controle cualquier código de
inicialización que la impresora requiera.lpf: Un Filtro de TextoEl programa /usr/libexec/lpr/lpf que viene
con los binarios de FreeBSD, como un filtro de texto (filtro de
entrada) que puede darle sangía a los trabajos (usando la
opción lpr -i), que permite el envío
literal de caracteres (con el comando lpr -l),
ajusta la posición de impresión para caracteres de
retroceso y tabulador, y contabiliza las páginas impresas.
También puede funcionar como un filtro de salida.lpf se ajusta a la configuración de
gran cantidad de impresoras. Y aunque no tiene la habilidad de enviar
secuencias de inicialización a la impresora, es muy sencillo
escribir un script de shell para llevar a cabo la inicialización
y posteriormente ejecutar lpf.conteo de páginasconteoimpresoraPara efecto de que lpf lleve un conteo correcto,
requiere que se tengan los valores adecuados de las
características pw y pl,
en el fichero /etc/printcap. En base a estos,
determina cuanto texto puede existir en una página y cuantas
páginas existen en el trabajo de un usuario. Para mayor
información al respecto, vea la sección Contabilidad del Uso de la
Impresora.Páginas de EncabezadoSi usted cuenta con gran cantidad de usuarios,
y todos imprimiendo en varias impresoras, entonces sería
conveniente considerar las páginas de
encabezado como un mal necesario.páginas titularespáginas encabezadospáginas encabezadosLas páginas de encabezados, también conocidas como
titulares o
páginas de aviso identifican a quien
pertenece el trabajo enviado a imprimir, una vez que han sido
impresos. Normalmente estas son impresas en letras grandes y de color
negro remarcado (negritas), y quizás con bordes decorativos, de
tal forma que puedan distinguirse entre el resto de las páginas
enviadas a imprimir. Estas permiten a los usuarios localizar
rápidamente sus impresiones. El obvio lado negativo de estas
páginas es que se debe imprimir una hoja adicional, por cada
trabajo enviado a la impresora, su utilidad efímera, no dura
más que unos minutos, terminando en una bandeja de reciclaje.
(Note que las páginas de encabezado se imprimen con cada trabajo
enviado a la impresora, no con cada página impresa, de tal
manera que el deperdicio de papel no es tan grave.)El sistema LPD puede proveerle de las
páginas de encabezado de forma automática para sus
impresiones, si su impresora soporta de la
impresión de texto plano directamente. Si usted cuenta con una
impresora PostScript, necesitará un programa externo para generar
estas páginas; vea la sección Páginas de Encabezado
en Impresoras PostScript.Habilitando las Páginas de EncabezadoEn la sección Configuración Simple
de una Impresora, deshabilitamos la impresión de estas
páginas al especificar sh (que son siglas
en inglés para supress header, algo así
como eliminar encabezados) en el fichero
/etc/printcap. Para efecto de habilitar la
impresión de páginas de encabezado, simplemente elimine
la característica sh del fichero.¿Suena demasiado fácil, verdad?Efectivamente. Es probable que deba proveer
de un filtro de salida, para efecto de que se mande la cadena de
inicialización a la impresora. Aqui tenemos un ejemplo de un
filtro de salida para impresoras compatibles con PCL de Hewlett
Packard:#!/bin/sh
#
# hpof - Filtro de salida para impresoras compatibles con Hewlett Packard PCL
# Instalado en /usr/local/libexec/hpof
printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpfEspecifique la ruta del filtro de salida, en la
característica of. Vea la sección
Filtros de Salida para
más información al respecto.Aqui podrá ver un ejemplo de un fichero
/etc/printcap para la impresora
teak que trabajamos anteriormente; hemos
añadido las páginas de encabezado, así
como el filtro de salida mencionado anteriormente:#
# /etc/printcap for host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:Ahora, cuando los usuarios impriman sus trabajos a la impresora
teak, ellos obtendrán una página de
encabezado por cada trabajo que manden a imprimir. Si los usuarios
desean pasar un tiempo buscando sus impresiones, pueden deshabilitar la
impresión de esta página con el comando
lpr -h; para más información sobre las
opciones de &man.lpr.1;, vea la sección Opciones de Páginas de
Encabezado.El sistema LPD envia a la impresora
un caracter de alimentación de página. Si su
impresora utiliza un caracter diferente de alimentación de
página, especifíquelo en el fichero
/etc/printcap, bajo la característica
ff.Controlando las Páginas de EncabezadoAl habilitar las páginas de encabezado,
LPD produce un encabezado
largo, una página completa con letras largas que
identifican el usuario, la maquina host, y el trabajo. Aqui tenemos
un ejemplo (kelly ha impreso un trabajo llamado outline, desde el
host rose): k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
r rrr oooo ssss eeee
rr r o o s s e e
r o o ss eeeeee
r o o ss e
r o o s s e e
r oooo ssss eeee
Job: outline
Date: Sun Sep 17 11:04:58 1995Después de esta página,
LPD manda un caracter de alimentación
de página, para que el trabajo sea impreso en una hoja blanca
nueva (a menos que cuente con sf (por sus siglas en
inglés supress form feed, que es
eliminación de alimentación de
página) en el fichero
/etc/printcap).Si lo prefiere, LPD puede generar un
encabezado pequeño; puede hacer esto, al
especificar sb en el fichero
/etc/printcap. La página de encabezado que
será impresa se vera así:rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995Por default, LPD imprime la
página de encabezado en primer término y posteriormente
el trabajo. Para cambiar este comportamiento, es necesario incluir
la característica hl (encabezado a lo
último por sus siglas en inglés), en el fichero
/etc/printcap.Conteo de P´ginas de EncabezadoCuando se utiliza la utilidad integrada de conteo de
LPD, refuerza el paradigma de que;
cuando se refiere al conteo de impresiones: las páginas de
encabezados deben ser sin coto alguno.¿Por qué?Por que el filtro de salida es el único programa externo
que puede llevar un conteo de las páginas impresas, cuando
tiene el control, y este no es provisto con información de un
usuario o host o algun fichero contador, de tal
forma que no tiene idea de a quien cargar estas impresiones. Tampoco
es conveniente, simplemente cargar una impresión
al total de las impresiones del filtro de texto o filtro de
conversión (esos que cuentan con información del
usuario y host), esto en virtud de que los usuarios pueden suprimir
el uso de estas páginas con lpr -h. Esto
implica que se le podrían cobrar hojas que ellos no imprimieron.
Básicamente el comando lpr -h sería la
opción preferida de los usuarios concientes del sistema, pero
usted no puede ofrecer incentivo alguno para que se utilice.Tampoco es una buena alternativa que cada
filtro genere sus páginas de encabezado (y por lo tanto poder
cobrar por ellas). Si los usuarios desean suprimirlas usando la
opción lpr -h, aún obtendrán
estas páginas y les serán cobradas, en virtud de que
LPD no tiene transfiere la opción
a los filtros.Así que, ¿Qué opciones tenemos?Usted puede:Aceptar el paradigma de LPD y no
cobrar por las páginas de encabezado.Instalar una alternativa a LPD,
tal como LPRng. La sección
Alternativas al Sistema
de Impresión Estándar le informa sobre otros
programas que puede utilizar, que sustituyan a
LPD.Escribir un filtro de salida inteligente.
Normalmente, un filtro de salida no esta diseñado para hacer
otra cosa, que no sea inicializar la impresora o bien hacer alguna
conversión sencilla de caracteres. Esta diseñado
para páginas de encabezado y trabajos en texto plano (cuando
no existe algun filtro de texto (entrada)). Pero cuando si existe
un filtro de texto, para los trabajos en texto plano, entonces
LPD sólo hará uso del
filtro de salida para las páginas de encabezado. Y el
filtro de salida puede pasar el texto de la página
encabezado generado por LPD, para
determinar el usuario y el host al cual se le cobrará dicha
impresión. El único problema con este metodo es
que el filtro de salida aún no sabe que fichero usar
para llevar la cuenta de las impresiones (la característica
af no pasa el nombre del fichero), pero si
usted cuenta con un fichero establecido para llevar esta cuenta,
puede incluirlo en el código del filtro de salida. Para
efecto de facilitar este paso, utilice la característica
sh (encabezado corto) del fichero
/etc/printcap. Nuevamente, todo esto
podría resultar muy complicado, y los usuarios estaran
muy agradecidos con el generoso administrador del sistema que
genera las páginas de encabezado gratis.Páginas de Encabezado en Impresoras PostScriptComo se ha descrito anteriormente, LPD
puede generar páginas encabezado en texto plano para gran
cantidad de impresoras. Claro esta, que PostScript no puede imprimir
texto plano directamente, de tal forma que la habilidad de imprimir
estas páginas de LPD, es
inservible—o casi.Una forma obvia de crear las páginas de encabezado, es hacer
que cada filtro de conversión y de texto, creen sus
páginas de encabezado. Los filtros deberán utilizar el
nombre de usuario y host, para generar esta página
personalizada. Lo malo de este metodo es que los usuarios siempre
obtendrán una página de encabezado, aun cuando usen en
sus impresiones lpr -h.Exploremos este metodo. El siguiente script considera tres
argumentos (nombre del login del usuario, nombre del host, y nombre del
trabajo) y genera una página simple de encabezado PostScript:
#!/bin/sh
#
# make-ps-header - crea una pagina de encabezado PostScript a stdout
# Instalado en /usr/local/libexec/make-ps-header
#
#
# Estas son unidades PostScript (72 a la pulgada). Modifiquelo para A4 o
# cualquier tamano de papel que este utilizando.
#
page_width=612
page_height=792
border=72
#
# Verificar argumentos
#
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` <user> <host> <job>" 1>&2
exit 1
fi
#
# Salvar estos, principalmente para lectura de PostScript, mas abajo.
#
user=$1
host=$2
job=$3
date=`date`
#
# Enviar el codigo PostScript a la salida estandar.
#
exec cat <<EOF
%!PS
%
% Segurese de no interferir con el trabajo del usuario c continuacion
%
save
%
% Crear un grueso y poco placentero borde alrededor del borde de la pagina.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Desplegar nombre de login del usuario, bonito largo y prominente
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Ahora mostrar los aburridos detalle generales
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% Eso es todo
%
restore
showpage
EOFAhora, cada uno de los filtros de conversión y de texto,
pueden invocar este script, para en primer lugar generar esta
página y después imprimir el trabajo del usuario. Aqui
tenemos el filtro de conversión DVI que revisamos anteriormente
en este documento, modificado para generar páginas de
encabezado:#!/bin/sh
#
# psdf - DVI to PostScript printer filter
# Installed in /usr/local/libexec/psdf
#
# Invoked by lpd when user runs lpr -d
#
orig_args="$@"
fail() {
echo "$@" 1>&2
exit 2
}
while getopts "x:y:n:h:" option; do
case $option in
x|y) ;; # Ignore
n) login=$OPTARG ;;
h) host=$OPTARG ;;
*) echo "LPD started `basename $0` wrong." 1>&2
exit 2
;;
esac
done
[ "$login" ] || fail "No login name"
[ "$host" ] || fail "No host name"
( /usr/local/libexec/make-ps-header $login $host "DVI File"
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_argsNote como el filtro debe pasar los argumentos en orden, para efecto
de determinar el nombre de usuario y host. El procedimiento para los
otros filtros de conversión es identico. El filtro de texto
tiene una pequeña variación (vea la sección Como Trabajan los Filtros).
Como hemos mencionado anteriormente, este esquema simplemente nos
sirve para deshabilitar la opción eliminar
encabezados (la opción ) de
lpr. Si los usuarios desean salvar algunos arboles
(o algunos centavos si usted cobra por estas páginas), no
podrán deshabilitar esta opción, ya que cada filtro
imprimirá una página de encabezado con cada trabajo
impreso.Para permitir que los usuarios desactiven las páginas de
encabezado en cada trabajo, será necesario que utilice el truco
del que hablamos en la sección Conteo de
Páginas de Encabezado: escribir un filtro de salida que
pase la página generada por LPD y produzca una versión
PostScript de la misma. Si el usuario utiliza
lpr -h, entonces LPD no
generará una página encabezado, y tampoco su filtro de
salida. De otra forma, su filtro de salida tomará los datos de
LPD y enviará el código
PostScript apropiado para la impresión de la página de
encabezado.Si usted cuenta con una impresora PostScript conectada a un
puerto serial, puede usar lprps, que cuenta con
un filtro de salida, psof, que hace lo
mencionado. Note que psof no cobra por las
páginas de encabezado.Impresión en Redimpresoraredimpresión en redFreeBSD cuenta con soporte para impresión en red: envío
de trabajos a impresoras remotas. La impresión en red,
normalmente se cuenta con dos escenarios:Accesando a una impresora que esta conectada a un host
remoto. Esto es, una impresora que esta conectada por algun medio
convencional, como puerto serial o paralelo, en un host. Y por
otro lado se habilita LPD para poder
imprimir desde otros hosts de la red. La sección Impresoras Instaladas en
Hosts Remotos le indica como hacer esto.Accesando a una impresora que esta conectada directamente a la
red. En este caso la impresora cuenta con un dispositivo de red en
adición (o en su lugar) del convencional paralelo o serial.
Esta impresora puede funcionar de la siguiente manera:Puede comprender el protocolo de
LPD e inclusive hacer consulta de
trabajos en hosts remotos. En este caso, actua tal como un
host normal que esta ejecutando LPD.
Aplique el procedimiento revisado en Impresoras
Instaladas en Hosts Remotos para efecto de configurar
estas impresoras.Puede contar con soporte para envío de datos por medio
de la conexión de red. En este caso, usted
conecta la impresora a un host de la red, al hacer
responsable, a dicho host, de la administración de los
trabajos en la cola de impresión y su envio a la
impresora. La sección Impresoras con
Interfaces de Red para Secuencia de Datos le da algunos
consejos y sugerencias sobre como instalar estas impresoras.
Impresoras Instaladas en Hosts RemotosEl sistema de cola de impresión de
LPD cuenta con soporte integrado para enviar
trabajos de impresión a un host remoto que cuente con
LPD (o alguna sistema compatible con
LPD). Esta habilidad le permite instalar
una impresora en un host, y hacerla accesible desde otros hosts.
También es útil con impresoras que cuentan con
interfaces de red que comprenden el protocolo de
LPD.Para habilitar la funcionalidad de impresión remota, primero
instale la impresora en un host, que será el host de
impresión. Esto lo podemos hacer utilizando los
pasos descritos en la sección Configuración Simple de una
impresora. Realice cualquier configuración adicional
adicional que se requiera, de acuerdo a lo descrito en la
sección Configuración Avanzada de una
Impresora. Asegurese de probar la impresora y de que esta
funcionando correctamente, así como las funciones de
LPD que haya habilitado. También
asegurese de que el host local cuenta con
autorización para usar el servicio de
LPD en el host remoto
(vea la sección Restricción de
Trabajos de Impresoras Remotas).impresoraredimpresión en redSi usted esta utilizando una impresora que cuenta con un
dispositivo de red, compatible con LPD,
entonces el host de impresión mencionado
más adelante, será la misma impresora, y el
nombre de la impresora será el nombre que
usted le haya asignado a la impresora. Vea la documentación
que incluye su impresora y/o el dispositivo de impresión en
red para detalles al respecto.Si usted esta utilizando una impresora LaserJet Hewlett Packard
entonces la impresora nombre
automáticamente hará la conversión de LF a
CRLF, de tal forma que no será necesario el uso del script
hpif.Y de esta manera, para los hosts que desee que tengan acceso a la
impresora, deberá crear una entrada en su fichero
/etc/printcap, que contenga lo siguiente:Nombre la entrada como desee. Para simplificar, quizás
desee darle el mismo nombre y alias usado en el host de
impresión.La característica lp dejela en
blanco, de manera explícita (:lp=:).
Cree un directorio para la cola de impresión y
especifique su ruta en la característica
sd. LPD
utilizará este directorio para almacenar los trabajos
antes de que sean enviados al host de impresión.Añada el nombre del host de impresión a la
característica rm.Añada el nombre de la impresora en el host de
impresión en la característica
rp.Eso es todo. No es necesario listar los filtros de
conversión, dimensiones de la página, o algo
adicional en el fichero /etc/printcap.Aqui tenemos un ejemplo. El host rose cuenta
con dos impresoras, bamboo y
rattan. Vamos a habilitar a usuarios en el host
orchid para que puedan imprimir en esas impresoras.
Aqui tenemos el fichero /etc/printcap para el
host orchid (usado en la sección Habilitando las
Páginas de Encabezado). Ya cuenta con la entrada
para la impresora teak; y hemos añadido
las entradas para las impresoras del host rose:#
# Fichero /etc/printcap para el host orchid - anadiendo impresoras
# (remotas) del host rose
#
#
# teak es impresora local; esta conectada directamente a orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan esta conectada a rose; envio de trabajos para rattan en rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo tambien esta conectada a rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:Posteriormente, sólo necesitamos crear los directorios
para la cola de impresión en el host
orchid:&prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bambooAhora los usuarios de orchid pueden imprimir en
rattan y bamboo. Si, por
ejemplo, un usuario en orchid teclea
&prompt.user; lpr -P bamboo -d sushi-review.dvi
el sistema de cola de LPD en el host
orchid, copiará el trabajo al directorio
de cola /var/spool/lpd/bamboo y notará
que se trata de un trabajo DVI. Tan pronto como el host
rose tenga espacio en el directorio de cola de
impresión de bamboo, los dos
LPDs transferirán el fichero a
rose. El fichero quedará en espera en
la cola de rose hasta que sea impreso. Este
será convertido de DVI a PostScript (dado que
bamboo es una impresora PostScript), en
rose.Impresoras con Interfaces de Red para Secuencia de DatosComunmente, cuando usted adquiere una tarjeta de red para
impresoras, puede obtener dos versiones: una que emula la cola
de impresión (que son las de mayor valor), o bien, otra
que simplemente le permite recibir datos tal como lo hace un
puerto serial o paralelo (la versió económica). Esta
sección le explica como utilizar la versión
económica. Para el uso de la versión de mayor
valor, vea la sección Impresoras Instaladas en
Hosts Remotos.El formato del fichero /etc/printcap le
permite especificar que puerto serial o paralelo utilizar, y (en
caso de que utilice un puerto serial) la velocidad de baudio, si
utiliza control de flujo, retraso en tabulador, conversión
de nuevas líneas y más. Pero no hay manera de indicar
la conexión de una impresora que escucha en un puerto TCP/IP
u otro puerto de red.Para efecto de enviar datos a una impresora en red, usted necesita
crear un programa de comunicación que pueda ser llamado desde
un filtro de texto o de conversión. Aqui tenemos un ejemplo
de dicho programa: el script netprint, que toma
todos los datos de la entrada estandar y los envia a un impresora
conectada a la red. Hemos especificado el nombre de host de la
impresora como primer argumento y el puerto al que esta conectado
como segundo argumento, en netprint. Note que
este tipo de soporte sólo trabaja en una vía (de FreeBSD
a la impresora); gran cantidad de impresoras cuentan con soporte de
ambas vías, y quizás desee tomar ventaja de esto (para
obtener estatus de impresión, contabilidad, desempeño,
etc.).#!/usr/bin/perl
#
# netprint - Filtro de texto para impresoras en red
# Instalado en /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require 'sys/socket.ph';
($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;Una vez hecho este script, podemos utilizarlo en varios filtros.
Supongamos que contamos con la impresora de línea Diablo 750-N
conectada a la red. La impresora acepta datos para impresión
en el puerto 5100. El nombre de host que tiene la impresora es
scrivener. El filtro de texto a usar quedaría de la
siguiente manera:#!/bin/sh
#
# diablo-if-net - Filtro de texto para la impresora Diable en `scrivener' usando
# el puerto 5100. Instalado en /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100Restricción del Uso de la Impresoraimpresorarestringiendo el acceso aEsta sección le da información sobre la
restricción en el uso de la impresora. El sistema de
LPD le permite controlar quien puede
acceder a la impresora de ambas formas, local y remota, si los
usuarios pueden imprimir múltiples copias, que tan grandes
pueden ser los trabajos de impresión, y limitar el tamaño
de la cola de impresión.Restricción de Copias MultiplesEl sistema de LPD le facilita a los
usuarios el imprimir múltiples copias de un mismo fichero. Los
usuarios pueden usar (por ejemplo) lpr -#5 para
imprimir 5 copias de cada fichero enviado. El hecho de que esto sea
bueno o no es algo que depende de usted.Si usted siente que las copias múltiples causan trabajo
inecesario a su impresora, puede deshabilitar la opción
de &man.lpr.1;, al incluir la característica
sc en su fichero /etc/printcap.
Cuando los usuarios utilicen la opción al
momento de imprimir, verán el siguiente aviso:lpr: multiple copies are not allowedRecuerde que si usted a configurado una impresora para su
acceso de forma remota (vea la sección Impresoras
Instaladas en Hosts Remotos), será necesario que
también cuente con la característica sc
en el fichero /etc/printcap del host remoto, o
bien, los usuarios aun podrán hacer uso de la opción
, al usar un host diferente.Aqui presentamos un ejemplo. Este es un ejemplo del fichero
/etc/printcap, del host rose.
La impresora rattan es de batalla
por lo que permitiremos las copias múltiples, pero la
impresora laser bamboo es más delicada por
lo que vamos a deshabilitar las copias múltiples, al
añadir la característica sc:#
# Fichero /etc/printcap del host rose - restringe copias multiples en bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Ahora, tambié debemos añadir la característica
sc en el fichero /etc/printcap
del host orchid (y ya que estamos en eso,
deshabiltemos las copias múltiples para la impresora
teak):#
# Fichero /etc/printcap del host orchid - sin copias multiples para la
# impresora local teak o impresora remota bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:Al incluir la característica sc, hemos
prevenido el uso de lpr -#, pero eso no previene
el uso de &man.lpr.1; gran cantidad de veces, o el envío del
mismo trabajo varias veces, tal como:&prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.signExisten gran cantidad de formas para prevenir este abuso
(incluyendo el ignorarlo), que usted queda en libertad de explorar.
Restricción de Acceso a ImpresorasUsted puede controlar quien puede imprimir y en que impresoras,
haciendo uso del mecanismo de grupos de Unix y de la
característica rg en el fichero
/etc/printcap. Simplemente añada en un
grupo determinado, a los usuarios que desea puedan imprimir en cierta
impresora, y después añada el nombre del grupo a la
característica rg.Todos los usuarios que no pertenezcan a este grupo (incluyendo al
superusuario (root)), y que deseen imprimir en la
impresora controlada, les aparecerá este mensaje:
lpr: Not a member of the restricted groupDe la misma forma que hicimos con sc (la
eliminación de copias múltiples), con
rg deber´ indicarla en los hosts remotos que
tengan acceso a sus impresoras si lo cree conveniente (vea la
sección Impresoras Instaladas en
Hosts Remotos).Por ejemplo, vamos a permitir que cualquiera imprima en
rattan, pero solo aquellos que forman parte del
grupo artistas podrán usar la impresora
bamboo. Nuevamente tenemos el fichero
/etc/printcap para el host
rose:#
# Fichero /etc/printcap del host rose - grupo restringido para bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artistas:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Vamos a dejar de lado el otro fichero
/etc/printcap de ejemplo (el del host
orchid). Claro esta, que cualquier usuario desde
orchid puede imprimir en bamboo.
En este caso podriamos aceptar sólo ciertos accesos desde
orchid, y esto les daría acceso a la impresora.
O no.Sólo puede haber un grupo restringido por impresora.Controlando el Tamaño de los Trabajos Enviadostrabajos de impresiónSi usted cuenta con gran cantidad de usuarios accesando sus
impresoras, probablemente necesite establecer un límite
máximo en el tamaño que deban tener los trabajos
enviados a imprimir. Después de todo, sólo existe
tanto espacio libre en el sistema de ficheros como el que se tiene
en los directorios de cola, y también usted debe asegurarse
de que exista el espacio suficiente para otros usuarios.trabajos de impresióncontrolandoEl sistema de LPD, le permite
especificar un monto maximo de tamaño en bytes para un trabajo,
con la característica mx. Las unidades
están indicadas en blques BUFSIZ, que son
de 1024 bytes. Si usted le agrega un cero a esta
característica, no habrá límite en el
tamaño de los trabajos que se puedan enviar a imprimir; por
otro lado, si no se especifica la característica
mx, el límite por default será de
1000 bloques.El límite es válido para los
ficheros del trabajo, y no
para el tamaño total del trabajo.El sistema de LPD no rehusará
imprimir los trabajos que exceden el límite, en su lugar
procederá con la impresión hasta el límite
indicado. El resto del trabajo quedará descartado. El hecho
de que este comportamiento sea correcto o no, aun es tema de
debate.Ahora permitamonos incluir límites a nuestras impresoras
de ejemplo rattan y bamboo. En
virtud de que esos artistas tienden a imprimir grandes
trabajos en PostScript, los vamos a limitar a cinco megabytes. En la
impresora de línea no vamos a especificar límite:#
# Fichero /etc/printcap del host rose
#
#
# Sin limite de tamano en el trabajo:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Con limite de cinco megabytes:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Nuevamente, los límites aplican sólo para los
usuarios locales. Si se han configurado las impresoras para su
acceso de forma remota, los usuarios que accesen remotamente no
tendrán esta limitante. Para efecto de que esto sea
válido en los usuarios remotos, deberá agregar la
característica mx en el fichero
/etc/printcap de los hosts remotos. Vea la
sección Impresoras Instaladas en
Hosts Remotos para mayor información sobre la
instalación de impresoras en red.Existe otra forma especializada para limitar el tamaño
de los trabajos, desde impresoras remotas, vea la sección Restricción de
Trabajos de Impresoras Remotas.Restricción de Trabajos de Impresoras RemotasEl sistema de cola de LPD cuenta con
varios metodos para restringir la impresión de trabajos enviados
por hosts remotos:Restricciones del HostHaciendo uso de los ficheros
/etc/hosts.equiv y
/etc/hosts.lpd, usted puede controlar
el LPD local, para determinar
de que hosts remotos se acepten conexiones. En este
caso, LPD verifica, en caso de una
petición, que el host remoto se encuentre listado en
agluno de estos dos ficheros. Si no es así,
LPD rechazará la
petición.El formato de estos ficheros es simple: el nombre de un host
por línea. Note que el fichero
/etc/hosts.equiv también es usado por
el protocolo &man.ruserok.3;, y afecta programas como &man.rsh.1;
y &man.rcp.1;, así que tenga cuidado al editarlo.Por ejemplo, este es el fichero
/etc/hosts.lpd del host
rose:orchid
violet
madrigal.fishbaum.deEsto significa que rose aceptará
peticiones de los hosts orchid,
violet y
madrigal.fishbaum.de. Si cualquier
otro host intenta accesar el LPD de
rose, el acceso será denegado.Restricciones de TamañoUsted puede controlar cuanto espacio libre se requiere, en el
sistema de fichero donde se localiza el directorio del sistema
de impresión. Cree un fichero llamado
minfree, en el directorio local de la cola
de impresión. En ese fichero añada un numero que
representa el numero de bloques libres que deben haber en el
disco (512 bytes), para efecto de aceptar un trabajo de forma
remota.Esto permite asegurarle que los usuarios remotos no llenaran
su disco duro. Esto también puede usarse para dar cierta
prioridad a los usuarios locales: ya que podrá colocar sus
trabajos en espera en la cola de impresión, hasta que la
cantidad de espacio libre sea inferior a la indicada en el
fichero minfree.Por ejemplo, incluyamos a minfree en
la impresora bamboo. Para esto, primero
examinamos el fichero /etc/printcap, para
encontrar los datos de la impresora; aqui tenemos la entrada de
bamboo:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:mx#5000:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:El directorio de la cola de impresión es indicado por
la característica sd. Vamos a dejar
tres megabytes (que son 6144 bloques de disco) como espacio libre
que debe existir en el sistema de ficheros, para que
LPD acepte trabajos remotos:&prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree
Restricciones por UsuarioUsted puede controlar que usuarios remotos pueden imprimir en
impresoras locales, al incluir la característica
rs en /etc/printcap.
Cuando rs aparece en la entrada de una
impresora que esta conectada localmente,
LPD aceptará trabajos de
usuarios remotos, siempre y cuando el
usuario que ha enviado el trabajo, tenga alguna cuenta, con el
mismo nombre de usuario en el host local. De otra forma
LPD no hará el trabajo.Esta característica es particularmente útil en
medios donde (por ejemplo) existen varias areas que comparten
una red, y algunos usuarios traspasan las fronteras
departamentales. Al otorgarles una cuenta en su sistema, pueden
hacer uso de sus impresoras, desde su propio departamento de
sistemas. Si solo desea permitirles hacer uso de sus impresoras
y no de los recursos de su sistema, puede
asignarles cuentas tontas (token accounts), que
no cuentan con un directorio home y con un un shell inservible
como /usr/bin/false.Contabilidad del Uso de la ImpresoracontabilidadimpresoraAsí que usted requiere de cobrar por las impresiones.
¿Y por qué no?, el papel y la tinta cuestan dinero. Y
también están los costos de mantenimiento—las
impresoras estan llenas de partes móviles que tienden a
descomponerse. Usted ha analizado sus impresoras, los patrones de
uso, y costos de mantenimiento y ha llegado a un costo
por-página (o por-pie, por-metro, o por-loquesea). Ahora bien,
¿Cómo empezar a llevar una contabilidad de las
impresiones?.Bueno, la mala noticia es que LPD no
provee de mucha ayuda en esta area. El conteo depende en gran parte
en el tipo de impresora con que usted cuenta, el formato en que se
imprime y de sus requerimientos para cobrar por
el uso de la impresora.Para implementar un contador, deberá modificar el filtro de
texto (para cobrar por impresiones en texto plano) y los filtros de
conversión (para cobrar por impresiones en otro formato), para
efecto de llevar un conteo de páginas o peticiones a la impresora
para imprimir. Esto no podrá llevarse a cabo con un simple filtro
de salida, dado que no puede llevar un conteo. Vea la sección
Filtros.En términos generales existen dos formas de hacer esto:El contador periodico es la forma más
comun, quizás por que es la más sencilla. Cuando
alguien envia una impresión, el filtro registra el usuario,
host y numero de páginas en un fichero contador. Cada mes,
semestre, año o cualquier periodo de tiempo que prefiera,
puede revisar estos ficheros, de tal forma que sepa cuantas
impresiones ha realizado cada usuario y poder cobrar por las mismas.
Después de limpiar estos ficheros puede empezar un nuevo
periodo de cero.El contador por tiempo es menos conocido,
quizás por su dificultad de uso. Este metodo hace que sus
filtros cobren al usuario por sus impresiones, en cuanto hacen uso
de las impresoras. Como las cuotas de disco, el conteo es inmediato.
Con esto, usted puede prevenir que usuarios impriman cuando sus
cuentas están en numeros rojos, y quizás en cierto modo
proveer a sus usuarios de una forma de verificar sus cuotas de
impresión. Pero este metodo requiere de uso de bases
de datos, para dar seguimiento a los usuarios y sus cuotas.El sistema de cola de LPD cuenta con
soporte para ambos metodos: en virtud de que usted debe proveer los
filtros (bueno, casi todo el tiempo), también debe proveer del
código para el contador. Pero hay un lado positivo: usted cuenta
con una enorme flexibilidad en cuanto a metodos de contabilidad se
refiere. Por ejemplo, puede utilizar un contador periodico o por
tiempo. Usted selecciona que información debe quedar registrada:
nombre de usuario, nombre del host, tipo de trabajo, páginas
impresas, medidas del papel usado, tiempo que duro en imprimir el
trabajo, y así sucesivamente. Y para hacer esto, sólo debe
modificar sus filtros.Contabilidad de Impresiones Rápida y SuciaFreeBSD cuenta con dos programas que pueden auxiliarlo para
instalar un simple contador periodico. Ellos son; el filtro de
texto lpf, descrito en la sección lpf: un Filtro de Texto, y
&man.pac.8;, un programa para reunir y totalizar la información
de los ficheros de contador de impresiones.Como se menciono en la sección de filtros (Como Trabajan los Filtros),
LPD inicia los filtros de texto y
conversión con el nombre del fichero contador a usar en la
línea de comando del filtro. Los filtros pueden usar este
argumento para saber en donde registrar la información. El
nombre de este fichero se indica en la característica
af del fichero /etc/printcap,
y si no se indica su ruta completa, se hará referencia al
directorio de la cola de impresión.LPD inicia lpf con
los argumentos de alto y ancho del papel (tomados de
pw y pl). lpf
usa estos argumentos para determinar cuanto papel será
necesario. Una vez enviado el fichero a impresión, se escribe
en el fichero contador un registro. Este registro es así:2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhangDeberá usar un fichero contador para cada impresora, dado
que lpf no cuenta con una lógica de
bloqueo de ficheros incluida, y dos lpf escribiendo
al mismo tiempo en un fichero podrian corromperlo. Una forma segura
para garantizar el uso de ficheros distintos por impresora, es usar
af=acct en el fichero
/etc/printcap. De esta forma contaremos con el
fichero contador de cada impresora por separado, en el directorio de la
cola de impresión, en un fichero llamado
acct.Cuando sea el momento de cobrar a los usuraios, ejecute el programa
&man.pac.8;. Sólo dirijase al directorio de cola, del cual
desea recabar la información y teclee pac.
Usted obtendrá un resumen similar al siguiente: Login pages/feet runs price
orchid:kelly 5.00 1 $ 0.10
orchid:mary 31.00 3 $ 0.62
orchid:zhang 9.00 1 $ 0.18
rose:andy 2.00 1 $ 0.04
rose:kelly 177.00 104 $ 3.54
rose:mary 87.00 32 $ 1.74
rose:root 26.00 12 $ 0.52
total 337.00 154 $ 6.74Estos son los argumentos que puede pasar a &man.pac.8;:De que impresora hacer el resumen.
Esta opción funciona, solo si existe una ruta absoluta, en la
característcia af del fichero
/etc/printcap.Ordenar la salida por costo en lugar de por usuario
alfabeticamente.Ignorar el nombre de host. Con esta opción,
el usuario smith del host
alpha, es el mismo usuario
smith del host gamma. Sin
esta opción, se consideran usuarios diferentes.Computar cargos con tal precio
en dólares por página o por pie, en lugar del
precio tomado de la característica pc
del fichero /etc/printcap, o dos centavos
(precio por default). Puede indicar el
precio como un numero de punto
flotante.Invertir el orden de acomodo.Crear un fichero de resumen y reiniciar el fichero contador.
nombre…Imprimir la información del usuario
nombre unicamente.En el resumen que genera &man.pac.8; por default, podrá
observar el numero de páginas impresas por cada usuario desde
diferentes hosts. Si en su sitio, el host no es importante (por que
los usuarios pueden usar cualquier host), ejecute
pac -m, para producir el siguiente resumen: Login pages/feet runs price
andy 2.00 1 $ 0.04
kelly 182.00 105 $ 3.64
mary 118.00 35 $ 2.36
root 26.00 12 $ 0.52
zhang 9.00 1 $ 0.18
total 337.00 154 $ 6.74Para calcular el monto adeudado, &man.pac.8; utiliza la
característica pc del fichero
/etc/printcap (que por default utiliza 200, o
2 centavos por página). Especifique en cientos de centavos
el precio a cobrar por página o por pie, que desea cobrar, en
esta característica. Puede reemplazar este valor cuando ejecuta
&man.pac.8; con la opción . Las unidades de
esta opción estan expresadas en dólares, y no en cientos
de centavos. Por ejemplo,
&prompt.root; pac -p1.50
hace que cada página tenga un costo de un dolar con cincuenta
centavos. Realmente se puede exceder en las utilidades usando esta
opción.Finalmente, ejecutando pac -s puede guardar la
el resumen, en un fichero, que es nombrado al igual que el fichero
contador de la impresora, pero con _sum al
inicio del fichero. Posteriormente reinicia el fichero contador.
Cuando ejecuta &man.pac.8; nuevamente, lee el fichero resumen, para
obtener los totales y posteriormente añade la información
del fichero contador normal.¿Cómo Contabilizar las Páginas
Impresas?Para efecto de que pueda obtener un conteo más cercano a la
realidad, necesita poder determinar cuanto papel utiliza cada trabajo.
Este es el problema esencial del conteo de impresiones.Para impresiones en texto, este problema no es tan difícil
de resolver: puede contabilizar el numero de líneas que tiene un
trabajo y dividirlas entre el numero de líneas totales por
página que maneja la impresora. No olvide contabilizar los
retrocesos del fichero que sobreimprimen líneas, o de las largas
líneas lógicas que se justifican en en una o más
líneas físicas.El filtro de texto lpf (introducido en lpf: un Filtro de Texto) toma
en cuenta todas estas cosas cuando hace el conteo. Si usted esta
escribiendo un filtro de texto que requiere contabilizar, quizás
desee examinar el código fuente del lpf.
Pero, ¿Cómo manejar otros formatos?Bueno, para conversiones DVI-a-LaserJet o DVI-a-PostScript, puede
hacer que su filtro pase la información de salida a
dvilj o dvips y ver cuantas
páginas fueron convertidas. Puede hacer cosas similares con
otros formatos y filtros de conversión.Pero estos metodos sufren del hecho de que la impresora puede no
imprimir estas páginas. Po ejemplo, se pueden atorar, acabarse
la tinta, o explotar—y el usuario de todas formas se le
cobrará.Entonces, ¿qué puede hacer?Sólo existe una forma segura de llevar
un conteo confiable. Adquiera una impresora que
pueda indicarle cuanto papel utiliza, y conectela por medio de un
puerto serial o en red. Casi todas las impresoras PostScript cuentan
con soporte para esto. Existen otras marcas u modelos que
también cuentan con el soporte (por ejemplo, las impresoras en
red Imagen laser). Modifique los filtros de estas impresoras para que
lleven un conteo de las oáginas impresas y que almacenen los
registros basados en el valor only. No se
requiere de un conteo de líneas o de examinar el fichero de
errores.Claro esta que usted puede ser muy generoso y no cobrar por las
impresiones.Uso de las ImpresorasimpresorausoEsta sección le indica como usar las impresoras que ha instalado
con FreeBSD. Aqui tenemos los comandos de usuario mas comunes:&man.lpr.1;Imprime trabajos&man.lpq.1;Verifica los trabajos pendientes&man.lprm.1;Elimina un trabajo de la cola de impresiónTambién se cuenta con un comando de administración,
&man.lpc.8;, descrito en la sección
Administración de la Cola de Impresión de
LPD, usado para controlar las
impresoras y sus peticiones.Las tres opciones &man.lpr.1;, &man.lprm.1;, y &man.lpq.1;, aceptan el
argumento para
especificar en que impresora realizar la impresión/petición,
de acuerdo a lo indicado en /etc/printcap. Esto le
permite imprimir, remover o consultar los trabajos en varias impresoras.
Si no usa el argumento , estos comandos haran uso de la
impresora especificada en la variable de entorno PRINTER.
Finalmente, si no cuenta con la variable de entorno PRINTER
definida, estos comandos utilizarán la impresora por default, que
es lp.Por lo tanto, el termino impresora por default,
hace referencia a la impresora definida en la variable de entorno
PRINTER, o en su defecto a la impresora nombrada
lp, cuando no este definida la variable de entorno
PRINTER.Trabajos de ImpresiónPara imprimir un fichero, teclee:&prompt.user; lpr fichero...
- imprimiendo
+ imprimirLo anterior imprimirá los ficheros nombrados, en la impresora
por default. Si no indica el nombre del fichero, &man.lpr.1;
leerá los datos a imprimir de la entrada estandar. Por ejemplo,
este comando imprime algunos ficheros importantes del sistema:&prompt.user; lpr /etc/host.conf /etc/hosts.equivPara seleccionar una impresora, teclee:&prompt.user; lpr -P nombre-de-la-impresorafichero...Este ejemplo imprime una larga lista del directorio actual, en la
impresora nombrada rattan:&prompt.user; ls -l | lpr -P rattanEn virtud de que no se le paso fichero alguno para imprimir a
&man.lpr.1;, lpr toma los datos de la entrada
estandar, que en este caso es la salida del comando ls
-l.EL comando &man.lpr.1; también puede aceptar gran variedad de
opciones para controlar el formato, aplicar conversiones a los ficheros,
generar copias multiples, etc.. Para mayor información, vea la
sección Opciones de
Impresión.Verificando los Trabajostrabajos de impresiónCuando usted utiliza &man.lpr.1; para imprimir, los datos que desea
imprimir se colocan juntos en un paquete llamado trabajo de
impresión, el cual es enviado al sistema de cola de
LPD. Cada impresora cuenta con un orden de
impresión de trabajos, y su trabajo espera su turno en este orden,
junto con otros trabajos suyos y de otros usuarios. El criterio del
orden será los primeros-en-llegar son los primeros-en-salir.
Para ver los trabajos pendientes de la impresora por default, teclee
&man.lpq.1;. Para una impresora en especial, use la opción
. Por ejemplo, el comando
&prompt.user; lpq -P bamboo
le muestra los trabajos pendientes de la impresora
bamboo. Aqui tenemos un ejemplo de la salida del
comando lpq:bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytesEsto muestra que hay tres trabajos en espera, para
bamboo. El primer trabajo enviado por el usuario
kelly, tiene asignado en numero de trabajo 9. Cada
trabajo en una impresora, se le asigna un numero único. La
mayor parte del tiempo puede ignorar el numero de trabajo, pero este
será necesario en caso de que desee cancelar el trabajo; vea
la sección Eliminando
Trabajos para mas detalles al respecto.El trabajo numero nueve consiste en dos ficheros; al pasar varios
trabajos a &man.lpr.1;, estos son tratados como parte de un solo
trabajo. Este es el trabajo actual, activo (note la palabra
active bajo la columna Rank), que
quiere decir, que la impresora debe estar imprimiendo este trabajo. El
segundo trabajo consiste en datos pasados al comando &man.lpr.1; por la
entrada estandar. El tercer trabajo proviene del usuario
mary; que es un trabajo mucho mas grande. La ruta
que esta tratando de ser descrita es muy larga, de tal forma que
&man.lpq.1; solo lo representa con tres puntos.La primer línea de la salida de &man.lpq.1; también es
de utilidad: esta le indica que esta haciendo la impresora en este
momento (o cuando menos, que es lo que LPD
piensa que la impresora esta haciendo).El comando &man.lpq.1; tambien cuenta con la opción
, para generar una salida mas detallada. Aqui tenemos
un ejemplo de lpq -l:waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytesEliminando TrabajosSi cambia de parecer con respecto a imprimir un trabajo, puede
eliminarlo de los trabajos pendientes, con el comando &man.lprm.1;.
Incluso puede usar el comando &man.lprm.1; para elminar un trabajo
activo, pero algunos o todos los demas trabajos aun seran impresos.
Para eliminar un trabajo de la impresoras por default, primero use
&man.lpq.1; para saber el numero de trabajo. Despué teclee:&prompt.user; lprm numero-trabajoPara eliminar un trabajo de un a impresora especifica, utilice la
opción . El siguiente comando elimina el
trabajo numero 10 de los trabajos pendientes de la impresora
bamboo:&prompt.user; lprm -P bamboo 10El comando &man.lprm.1; cuenta con algunas opciones:lprm -Elimina todos los trabajos (de la impresora por default) y que le
pertenezcan a usted.lprm usuarioElimina todos los trabajos (de la impresora por default) que
pertenecen a usuario. El superusuario puede
eliminar trabajos de otros: usted solo puede eliminar sus trabajos.lprmCuando no se pasa ningun nombre de usuario, o ,
en la línea de comando, &man.lprm.1; elimina el trabajo
activo de la impresora por default, si este le pertenece. El
superusuario puede eliminar cualquier trabajo activo.Simplemente use la opción con las opciones
comentadas, para que apliquen en una impresora especifica. Por ejemplo,
el siguiente comando elimina todos los trabajos pendientes del usuario
actual en la impresora rattan:&prompt.user; lprm -P rattan -SI usted esta trabajando en una red, el comando &man.lprm.1;, solo le
permitira eliminar trabajos del host del cual se enviaron dichos trabajos,
incluso si la impresora esta habilitada desde otros hosts. La siguiente
secuencia de comandos demuestra esto:&prompt.user; lpr -P rattan mifichero
&prompt.user; rlogin orchid
&prompt.user; lpq -P rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 mifichero 12 bytes
&prompt.user; lprm -P rattan 13
rose: Permission denied
&prompt.user; logout
&prompt.user; lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
Más alla del Texto Plano: Opciones de ImpresiónEl comando &man.lpr.1; cuenta con soporte para multiples opciones que
controlan el formato del texto, conversión de gráficos y
otros formatos, producción de copias multiples, manejo de los
trabajos, y más. Esta sección describe estas opciones.
Opciones de Formato y ConversiónLas siguientes opciones de &man.lpr.1; controlan el formato de los
ficheros en el trabajo. Utilice estas opciones si el trabajo no es de
texto plano o si desea dar formato al texto plano por medio de la
utilidad &man.pr.1;.TeXPor ejemplo, el siguiente comando imprime un fichero DVI (desde un
sistema de escritura TeX) llamado fish-report.dvi
a la impresora bamboo:&prompt.user; lpr -P bamboo -d fish-report.dviEstas opciones aplican para todos los ficheros dentro del trabajo, por
lo que no debe mezclar (por decir) ficheros DVI y ditroff en el mismo
trabajo. Para hacer esto, envie los trabajos a imprimir por separado,
usando la opción que corresponda a cada trabajo.Todas estas opciones, excepto y requieren de filtros de conversión instalados para la
impresora destino. Por ejemplo, la opción
requiere de un filtro para DVI. La sección Filtros de Conversión
le da más detalles al respecto.Imprimir ficheros cifplot.Imprimir ficheros DVI.Imprimir ficheros de texto FORTRAN.Imprimir datos plot.Sangrar la salida con el numero de
columnas indicado; si omite numero, el
numero será de 8 columnas. Esta opción trabaja bien
solo con algunos filtros de conversión.No debe dejar espacios entre la opción
y el numero.Imprimir datos de texto literal, incluyendo caracteres de
control.Imprimir datos ditroff (troff independiente del dispositivo).-pFormatear el texto plano con &man.pr.1; antes de imprimir. Vea
&man.pr.1; para más información.Use titulo en la cabecera de
&man.pr.1;, en lugar del nombre del fichero. Esta opción solo
tiene efecto cuando se usa con .Imprimir datos troff.Imprimir datos raster.Aqui tenemos un ejemplo: este comando imprime una bonita y formateada
versión de la página de ayuda de &man.ls.1;, en la impresora
por default:&prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -tEl comando &man.zcat.1; descomprime la fuente de la página de
ayuda &man.ls.1; y lo pasa al comando &man.troff.1;, que le da formato y
crea la salida GNU troff, la cual es pasada a &man.lpr.1;, que envia el
trabajo a la cola de LPD. Como usamos la
opción con &man.lpr.1;, el sistema de cola va
a convertir la salida GNU troff a datos entendibles para la impresora,
cuando se imprime.Opciones para Manejar los TrabajosLas siguientes opciones de &man.lpr.1;, le indican a
LPD que debe manejar el trabajo de
una forma especial:-# copiasProducir un numero de copias de cada
fichero en el trabajo, en vez de una sola copia. Un administrador
puede inhabilitar esta oprción para reducir el desgaste de la
impresora y alentar el uso de la fotocopiadora. Vea la sección
Restriccón
de Copias Multiples.Este ejemplo imprime tres copias de
parser.c seguido de tres copias de
parser.h en la impresora por default:&prompt.user; lpr -#3 parser.c parser.h-mEnviar correo después de completar el trabajo. Con esta
opción, el sistema LPD enviara un
correo a su cuenta cuando termina de imprimir. En su mensaje, le
informará si el trabajo termino con exito o si hubo algun
error, y (normalmente) que tipo de error fué.-sNo copie el fichero al directorio de la cola, en su lugar crear
un enlace simbolico.Si usted esta imprimiendo un trabajo de gran tamaño,
quizás esta es una buena opción. Esta opción le
ahorra espacio en el directorio de cola (donde su trabajo puede
terminar con el espacio libre donde reside su directorio). Esta
opción también le ahorra tiempo, en virtud de que
LPD no tendrá que copiar todos y
cada uno de los bytes del trabajo al directorio.Aunque esto tiene su inconveniente: dado que
LPD estará haciendo uso del fichero
original, no lo podrá modificar o eliminar hasta que termine
la impresión.Si usted esta en un entorno de red, LPD
eventualmente copiará ficheros del host local al host remoto,
así que la opción le puede ahorrar
espacio solo en el directorio del host local, no en los remotos.
Aun con esto, la opcion es de gran utilidad.-rEliminar los ficheros del trabajo, una vez que hayan sido
copiados al directorio de la cola, o después de que hayan sido
impresos, cuando se use la opción . Tenga
cuidado con esta opción!Opciones de Páginas de EncabezadoCuando alguna de las siguientes opciones son pasadas a &man.lpr.1;,
ajustan el texto que normalmente aparece en la página encabezado
del trabajo. Si las páginas de encabezado son suprimidas, estas
opciones no tendrán efecto alguno. Vea la sección Páginas de
Encabezado para más información sobre la
configuración de las Páginas de Encabezado.-C textoReemplazar el nombre del host del encabezado con este
texto. Normalmente el nombre del host es el
nombre del host del cual se esta imprimiendo.-J textoReemplazar el nombre del trabajo en el encabezado con este
texto. Normalmente el nombre del trabajo es
el nombre del primer fichero del trabajo, o stdin si
esta imprimendo de la entrada estandar.-hNo imprimir página de encabezado.En algunos sitios esta opción puede no tenere efecto alguno,
debido al metodo usado para generar las páginas de encabezado.
Vea la sección Páginas de
Encabezado para más detalles.Administración de la Cola de Impresión de
LPDComo administrador de sus impresoras, usted deberá
instalarlas, configurarlas, y probarlas. Con el comando &man.lpc.8;
usted podrá interactuar con las impresoras de una forma más
completa. Con &man.lpc.8; usted podráIniciar y detener las impresorasHabilitar y deshabilitar sus trabajos pendientesModificar el orden de los trabajos pendientes.Primero, una nota de terminología: si una impresora es
detenida, no podrá contar con una cola de
trabajos pendientes. Los usuarios podrán enviar sus trabajos,
que quedarán en espera hasta que la impresora se
iniciada o su cola de trabajos pendientes sea
purgada.Si la cola de trabajos pendientes es
deshabilitada, ningun usuario (excepto
root) podrá enviar trabajos a la impresora.
Una cola de trabajos pendientes habilitada,
permitirá el envio de trabajos. Una impresora puede ser
iniciada para una cola de trabajos que esta
deshabilitada, en cuyo caso continuará imprimiendo los trabajos de
la cola de trabajos pendientes, hasta que ya no exista ninguno.En general, usted debe de contar con privilegios de
root para hacer uso del comando &man.lpc.8;. Los
usuarios comunes solo pueden usar &man.lpc.8; para verificar el
estatus de una impresora y para reiniciar una impresora detenida.Aqui tenemos un resumen de los comandos de &man.lpc.8;. La mayor
parte de estos comandos usan el argumento
nombre-impresora para indicarle en cual debe
operar. Como este argumento puede usar all, para
indicarle que opere en todas las impresoras listadas en el fichero
/etc/printcap.abort
nombre-impresoraCancelar el trabajo actual y detener la impresora. Los usuarios
podrán aun enviar sus trabajos si la cola de pendientes esta
habilitada.clean
nombre-impresoraEliminar ficheros viejos del directorio de cola de
impresión. Ocasionalmente, los ficheros que ya han sido
impresos no son eliminados correctamente por
LPD, particularmente si hubo errores durante
la impresión o si se realizaron otros trabajos administrativos
durante la misma. Este comando localiza ficheros que no pertenecen al
directorio y los elimina.disable
nombre-impresoraDeshabilita la cola de pendientes para nuevos trabajos. Si la
impresora esta activa, se continuan imprimiendo los trabajos en la
cola de pendientes. El superusuario (root)
siempre podrá enviar trabajos, incluso cuando se use esta
opción.Este es un comando útil cuando se esta probando una nueva
impresora o instalando un filtro: deshabilitar la cola de pendientes y
enviar los trabajos como root. Otros usuarios no
podrán enviar trabajos, hasta que la impresora haya sido
configurada correctamente y se re-habilite la cola de pendientes, con
el comando enable.down nombre-impresoramensajeUsar el comando down para una impresora, equivale a usar el comando
disable seguido del comando stop.
El mensaje que se ingrese, aparecerá
como el estatus de la impresora, cada vez que un usuario verifique su
estatus con &man.lpq.1; o con lpc status.enable
nombre-impresoraHabilitar la cola de pendientes. Los usuarios pueden enviar sus
trabajos pero la impresora no imprimira nada hasta que se
inicializada.help
nombre-del-comandoMostrar la ayuda del comando
nombre-del-comando. Si no se indica el
nombre-del-comando, se muestra un resumen
de los comandos disponibles.restart
nombre-impresoraReIniciar la impresora. Los usuarios comunes pueden usar esta
opción en caso de que por alguna razón
LPD se paralice, pero no pueden iniciar una
impresora detenida con algunos de los comandos stop
o down. El comando restart es
equivalente a ejecutar abort seguido del comando
start.start
nombre-impresoraIniciar la impresora. La impresora comenzará a imprimir
los trabajos en la cola de pendientes.stop
nombre-impresoraDetiene la impresora. La impresora terminará el trabajo
actual y dejará de imprimir. Aun cuando la impresora esta
detenida, los usuarios pueden enviar sus trabajos a la cola de
pendientes de la impresora.topq nombre-impresoratrabajo-o-usuarioModificar el orden de la cola de pendientes de la impresora
nombre-impresora, colocando los trabajos con
el identificador trabajo o que pertenecen al
usuario usuario, en primer lugar de la cola.
Para este comando no puede hacer uso de la opción
all en lugar de
nombre-impresora.up
nombre-impresoraUsar el comando up en una impresora; es lo opuesto al comando
down. Equivalente a start
seguido del comando enable.&man.lpc.8; acepta estos comandos desde la línea de comandos.
Si no ingresa aglun comando, &man.lpc.8; entra en modo interactivo, donde
puede ingresar los comandos hasta que teclee exit,
quit o fin-del-archivo (EOF).Alternativas al Sistema de Impresión EstándarSi ha estado leyendo este manual desde el principio, para este momento
usted ha aprendido practicamente todo lo que debe saber del sistema
LPD que viene con FreeBSD. Y ha podido observar
algunas de sus debilidades, lo que naturalmente nos lleva a la pregunta:
¿Qué otros sistema de impresión existen (y que
trabajen bajo FreeBSD)?.LPRngLPRngLPRng, que presumiblemente significa
LPR: the Next Generation (LPR: la Siguiente
Generación), es PLP completamente hecho de nuevo. Patrick Powell
y Justin Mason (el encargado principal de PLP) colaboraron en crear
LPRng. El principal sitio de
LPRng es http://www.astart.com/lprng/LPRng.html.Resolución de ProblemasUna vez que hizo la simple prueba con &man.lptest.1;, puede ser que
haya obtenido uno de los siguientes resultados, en vez de la correcta
impresión:Trabajo, después de un tiempo; o no expulso completamente
la hoja.La impresora llevo a cabo la impresión, pero espero bastante
o bien finalmente no hizo nada. De hecho, es posible que haya sido
necesario presionar en su impresora el botón para poner a la
impresora EN LINEA o bien de ALIMENTACION DE PAGINA.Si este es el caso, su impresora esperaba a ver si exisitian
más datos para imprimir, antes de comenzar con la
impresión. Para arreglar este problema puede hacer que su
filtro de texto envie al final un caracter de ALIMENTACION DE PAGINA o
cualquiera que sea necesario para la impresora. Esto normalmente es
suficiente para que la impresora imprima todos los datos restantes
en su buffer interno. También es recomendable verificar que cada
trabajo enviado se haya impreso en una página completa, de tal
forma que el siguiente trabajo no comience en la mitad de la
última página del trabajo previo.El siguiente ShellScript se puede utilizar como reemplazo de
/usr/local/libexec/if-simple, para imprimir un
caracter de alimentación de página:#!/bin/sh
#
# if-simple - Filtro de texto simple para lpd
# Instalado en /usr/local/libexec/if-simple
#
# Simplemente manda la entrada a la salida estandar.
# Ignora los argumentos del filtro.
# Escribe un caracter de alimentacion de pagina (\f) despues de imprimir.
/bin/cat && printf "\f" && exit 0
exit 2Se produce un efecto de escalera.Usted obtiene la siguiente impresión:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456MS-DOSOS/2ASCIIUsted es otra víctima del efecto de
escalera, causada por el conflicto de interpretación,
sobre cual caracter indica la nueva línea. Los sistemas
operativos estilo-Unix, usan un caracter sencillo: código
ASCII 10, alimentación de línea (LF). MS-DOS, OS/2 y
otros utilizan un par de caracteres, código ASCII 10
y código ASCII 13 (retorno de carrete o
CR). Muchas impresoras usan la forma de MS-DOS, para representar los
saltos de líneas.Cuando usted imprime con FreeBSD, su texto hace uso del caracter de
nueva línea. La impresora, una vez que detecta el caracter de
nueva línea, avanza el papel una línea, pero manteniendo
la misma posición horizontal, para la impresión del
siguiente caracter. Para eso es el caracter de retorno de carrete: para
mover la posición horizontal al borde izquierdo del papel.Aqui tenemos lo que FreeBSD desea que haga su impresora:Impresora recibe CRImpresora imprime CRImpresora recibe LFImpresora imprime CR + LFAqui tenemos algunas formas de llevar esto a cabo:Usar los botones de configuración de la impresora o el
panel de control, para modificar su interpretación de estos
caracteres. Verifique el manual de su impresora para ver como
hacer esto.Si cuenta con otro sistema operativo en su maquina, ademas de
FreeBSD, quizás sea necesario
reconfigurar la impresora, para usar la
interpretación de los caracteres de CR y LF del otro sistema
operativo. Puede escoger una de las otras soluciones que se
comentan más adelante.Puede hacer que el controlador serial de FreeBSD,
automáticamente convierta LF en CR+LF. Claro esta, que esta
alternativa funciona solo en impresoras
seriales. Para habilitar esta habilidad, establezca el bit
CRMOD, en la característica
fs del fichero /etc/printcap
para la impresora.Envie un código de escape a la
impresora para que temporalmente de un tratamiento diferente a
los caracteres LF. Consulte el manual de su impresora para ver
los códigos de escape soportados por su impresora. Una vez
que localice el código correcto, modifique su filtro de
texto, para que se envie este código primero y después
el trabajo a imprimir.PCLAqui tenemos un ejemplo de un filtro de texto, para impresoras
compatibles con PCL de Hewlett-Packard. Este filtro hace que la
impresora trate a LF como LF + CR; posteriormente envia el trabajo
de impresión; y por último envia un caracter de
alimentación de página, para expulsar la última
página del trabajo. Este filtro debiese funcionar con casi
todas las impresoras Hewlett Packard.#!/bin/sh
#
# hpif - Filtro de texto simple para lpd e impresoras compatibles con HP-PCL
# Instalado en /usr/local/libexec/hpif
#
# Pasa la entrada estandar a la salida estandar.
# Ignora todos los argumentos del filtro.
# Le indica a la impresora que debe tratar a LF como si fuera CR+LF.
# Expulsa la ultima pagina cuando ha terminado.
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
exit 2Aqui tenemos un ejemplo de /etc/printcap
para un host llamado orchid. Solo cuenta con una
impresora conectada al puerto paralelo, una Hewlett Packard LaserJet
3Si, llamada teak. Se esta usando el script
anterior como filtro de texto:#
# Fichero /etc/printcap del host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:Cada línea se sobreescribe.La impresora no avanza ninguna línea. Todas las líneas
son impresas una sobre otra en un solo renglón.Este problema es lo opuesto al efecto de escalera,
descrito anteriormente, y es poco común. En algun lugar, los
caracteres de LF, que usa FreeBSD para indicar un salto de línea,
la impresora los identifica como CR, de tal forma que regresa el punto
de impresión al borde del papel, pero sin saltar al siguiente
renglón.Utilice los botones de la impresora o el panel de control, para
forzar a que la impresora interprete de la siguiente manera los
caracteres LF y CR:Impresora recibeImpresora imprimeCRCRLFCR + LFAl imprimir se pierden caracteres.Mientras imprime, algunos caracteres no son impresos en cada
línea. El problema puede agravarse conforme se usa la
impresora, perdiendo más y más caracteres.El problema es que la impresora no puede mantener el ritmo al cual
la computadora envia los datos por medio de la línea serial
(este problema no se debiese presentarse en impresoras conectadas al
puerto paralelo). Existen dos formas de solucionar este problema:Si la impresora cuenta con soporte para el control de flujo
XON/XOFF, haga que FreeBSD lo utilice, al especificar el bit TANDEM
en la característica fs.Si la impresora cuenta con soporte para el control de flujo
externo (carrier), especifique el bit MDMBUF en
la característica fs. Asegurese de que
el cable utilizado para conectar la impresora a la computadora cuenta
con soporte para este tipo de control de flujo.Si la impresora no cuenta con soporte para el control de flujo,
use una combinación de los bits NLDELAY,
TBDELAY, CRDELAY,
VTDELAY y BSDELAY en la
característica fs, para añadir el
retraso apropiado en la cadena de información enviada a la
impresora.Solo imprime basura.La impresora imprime lo que parece ser basura al azar, pero no el
texto deseado.Esto normalmente es otro síntoma de una configuración
incorrecta en los parámetros de comunicación de una
impresora serial. Verifique el rango de bps en la característica
br y la paridad de bits en fs y
fc; asegurese de que la impresora use los mismos datos
especificados en el fichero /etc/printcap.No sucede nada.Si no sucede nada, probablemente el problema es con FreeBSD y no con
su hardware. Incluya un fichero de registros (log), con la
característica lf, en la entrada de su
impresora en el fichero /etc/printcap. Por ejemplo,
aqui esta la entrada de rattan, con la
característica lf :rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.logPosteriormente, intente imprimir de nuevo. Verifique el fichero de
registros (en nuestro ejemplo, /var/log/rattan.log)
para buscar cualquier mensaje de error que aparezca. Basado en ese
mensaje trate de resolver el problema.Si no especifica la característica lf,
entonces LPD utilizará
/dev/console como la salida por default.
diff --git a/es_ES.ISO8859-1/books/handbook/users/chapter.sgml b/es_ES.ISO8859-1/books/handbook/users/chapter.sgml
index 181943043e..a453f90d29 100644
--- a/es_ES.ISO8859-1/books/handbook/users/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/users/chapter.sgml
@@ -1,1099 +1,1099 @@
NeilBlakey-MilnerContributed by Usuarios y administración básica de cuentas
- Sinopsis
+ SinópsisFreeBSD permite que varios usuarios usen el mismo ordenador.
Obviamente, sólo uno de estos usuarios puede sentarse frente al
monitor y al teclado en un momento dado
Bueno, a menos que conectes múltiples terminales, pero
dejaremos ese tema para el .
, pero cualquier número de usuarios puede entrar por la red para
hacer su trabajo. Para usar el sistema cada usuario ha de tener
una cuenta.Después de leer este capítulo sabrás:Cuáles son las diferencias entre las distintas cuentas de
usuario en sistemas FreeBSD.Cómo añadir cuentas.Cómo eliminar cuentas.Cómo cambiar detalles de las cuentas, como el nombre
completo del usuario, o su shell preferida.Cómo establecer límites por cuenta, para controlar los
recursos como memoria o tiempo de CPU que las cuentas y grupos
de cuentas pueden emplear.Cómo usar grupos para facilitar la administración de
cuentas.Antes de leer este capítulo deberías:Entender los conceptos básicos de Unix y FreeBSD ().IntroducciónTodos los accesos al sistema se consiguen vía cuentas, y todos
los procesos son ejecutados por usuarios, por ello la
administración de usuarios y cuentas es de una gran importancia
en sistemas FreeBSD.Cada cuenta en un sistema FreeBSD tiene cierta información
asociada que la identifica.Nombre de usuarioEl nombre de usuario como se le entraría al prompt
login:. Los nombres de usuario han de ser
únicos en la computadora; no puede haber dos usuarios con el
mismo nombre de usuario. Existen algunas reglas para la
creación de nombres de usuario válidos documentadas en
&man.passwd.5;; típicamente se usarían nombres de usuario de
a lo sumo ocho caracteres, todos ellos en minúscula.ContraseñaCada cuenta tiene una contraseña asociada. La
contraseña puede ser vacía, en cuyo caso no se requerirá
ninguna para acceder al sistema. Esto normalmente es una
mala idea; cada cuenta debería tener una constraseña no
vacía.Identificador de usuario (UID)El UID es un numero entre 0 y 65536 que sirve para
identificar unívocamente al usuario en el sistema.
Internamente, FreeBSD usa el UID para identificar usuarios y
cualquier comando de FreeBSD que permita especificar un
nombre de usuario convertirá éste al UID antes de trabajar
con él. Esto significa que puedes tener varias cuentas con
nombres de usuario distintos pero con el mismo UID. En lo
que a FreeBSD respecta, tales cuentas son un solo usuario.
Es improbable que alguna vez tengas que hacer algo
así.Identificador de grupo (GID)El GID es un número entre 0 y 65536 que sirve para
identificar unívocamente el grupo principal al cual
pertenece un usuario. Los grupos son un mecanismo para
controlar el acceso a recursos del sistema en base al GID,
en vez del UID. Esto puede reducir significativamente el
tamaño de algunos ficheros de configuración. Un usuario
puede pertencer a más de un grupo.Clase de loginLas clases de login son una extensión al mecanismo de
grupos que ofrecen una mayor flexibilidad a la hora de
adaptar el sistema a distintos usuarios.Tiempo de cambio de contraseñaPor defecto FreeBSD no obliga a los usuarios a cambiar
su contraseña periódicamente. Se puede requerir esto a
determinados usuarios, haciendo que algunos o todos deban
cambiar sus contraseñas al cabo de cierto periodo de
tiempo.Tiempo de expiración de cuentasPor defecto las cuentas en FreeBSD no expiran. Si estás
creando cuentas que sabes que van a tener un tiempo limitado
de vida, por ejemplo, las cuentas de los estudiantes de una
escuela, entonces puedes especificar cuándo expiran. Una
vez vencido su tiempo de expiración una cuenta no puede ser
usada para entrar en el sistema, si bien sus directorios y
archivos serán conservados.Nombre completo de usuarioEl nombre de usuario identifica unívocamente a una
cuenta para FreeBSD, pero no refleja su verdadero nombre
necesariamente. Esta información puede ser asociada a la
cuenta. Directorio homeEl directorio home es el camino completo de un
directorio en el sistema en el que el usuario se hallará
cuando entre. Una convención usual consiste en poner todos
los directorios home en
/home/nombre_de_usuario
o en
/usr/home/nombre_de_usuario.
Los usuarios guardarían sus archivos personales en sus
directorios home, y en cualquier directorio que creasen
allí.Shell de usuarioLa shell provee el entorno por defecto mediante el cual
los usuarios interactúan con el sistema. Existen varios
tipos de shell y los usuarios experimentados tendrán sus
propias preferencias, que pueden expresarse en la
configuración de su cuenta.Existen principalmente tres tipos de cuentas; la cuenta de
superusuario, las cuentas
de usuarios del sistema, y las
de usuarios. La cuenta de
superusuario, normalmente llamada root, se
usa para administrar el sistema sin limitaciones en los
privilegios. Los usuarios del sistema utilizan servicios del
mismo. Finalmente, las cuentas de usuarios son usadas por gente
real, aquellos que entran, leen correo, etcétera.La cuenta superusuariocuentassuperusuario (root)La cuenta superusuario, normalmente llamada
root, viene preconfigurada para facilitar la
administración del sistema, y no debería ser utilizada para tareas
cotidianas como enviar o recibir correo, exploración general del
sistema, o programación.Esto es así porque el superusuario, a diferencia de las
cuentas de usuario, puede operar sin límites, y un mal uso de la
cuenta de superusuario puede conllevar desastres espectaculares.
Las cuentas de usuario no pueden destruir el sistema por un error,
por ello es generalmente mejor utilizar cuentas de usuario
normales cuando sea posible, a no ser que especialmente necesites
privilegios extra.Deberías comprobar siempre un par o tres de veces los comandos
que ejecutas como superusuario, ya que un espacio de más o un
carácter omitido pueden significar una pérdida de datos
irreparable.Así pues, lo primero que deberías hacer después de leer este
capítulo es crear una cuenta sin privilegios de uso general para
ti si aún no la tienes. Esto aplica tanto si trabajas en una
máquina con varios usuarios como si trabajas en una máquina con un
solo usuario. Más adelante, en este mismo capítulo, explicamos
cómo crear cuentas adicionales, y cómo cambiar de usuario normal a
superusuario.Cuentas de sistemacuentassistemaLos usuarios de sistema son aquéllos que corren servicios como
DNS, correo, servidores web, etc. Esto es así por seguridad; si
todos los servicios corrieran como superusuario podrían actuar sin
ninguna restricción.cuentasdaemoncuentasoperatorAlgunos ejemplos de usuarios de sistema son
daemon, operator,
bind (para el DNS), y
news. Con frecuencia, los administradores de
sistemas crean el usuario httpd para que
ejecute los servidores web que instalan.cuentasnobodynobody es el usuario de sistema sin
privelegios genérico. No obstante, es importante tener en cuenta
que cuantos más servicios use nobody, más
ficheros y procesos estarán asociados con dicho usuario, y en
consecuencia más privilegiado será.Cuentas de usuariocuentasusuarioLas cuentas de usuario constituyen la principal vía de acceso
al sistema para la gente real. Estas cuentas aíslan al usuario
del entorno, impidiendo que pueda dañar al sistema o a otros
usuarios, y permitiendo a su vez que pueda personalizar su entorno
sin que esto afecte a otros.Cada persona que acceda a tu sistema debería tener una sola
cuenta de usuario. Esto te permite averiguar quién está haciendo
qué, evita que interfieran las configuraciones de distintos
usuarios, que unos puedan leer el correo de otros,
etcétera.Cada usuario puede configurar su entorno para acomodarlo al
uso que hace del sistema, utilizando shells, editores, atajos de
teclado e idioma alternativos.Modificación de cuentascuentasmodificarExiste una variedad de comandos disponible en el entorno Unix
para modificar cuentas de usuario. Los comandos más comunes se
hallan resumidos a continuación, seguidos de ejemplos más
detallados de su uso.ComandoResumenadduserLa aplicación de línea de comandos recomendada para
añadir nuevos usuarios.rmuserLa aplicación de línea de comandos recomendada para
eliminar usuarios.chpassUna herramienta flexible para modificar la base de datos
de usuarios.passwdUna herramienta de línea de comandos simple para cambiar
contraseñas de usuario.pwUna herramienta potente y flexible para modificar
cualquier aspecto de las cuentas de usuario.addusercuentasañadiradduser/usr/share/skeldirectorio esqueletoadduser es un programa simple para añadir
usuarios. Crea entradas en los archivos de sistema
passwd y group.
También crea un directorio home para el nuevo usuario, copia
allí ficheros de configuración por defecto
(dotfiles) de
/usr/share/skel, y opcionalmente puede
enviar al usuario un mensaje de bienvenida.Para crear el fichero inicial de configuración usa
adduser -s -config_create.
La hace que adduser
sea silencioso por defecto. Más tarde usamos
cuando queremos cambiar valores por defecto.
A continuación configuramos valores por defecto para
adduser y creamos nuestra primera
cuenta de usuario, dado que utilizar root
para uso normal del sistema es pernicioso y peligroso.Configuración de adduser&prompt.root; adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh -> /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y
Write your changes to /etc/adduser.conf? (y/n) [n]: y
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]:
Enter home directory (full path) [/home/jru]:
Uid [1001]:
Enter login class: default []:
Login group jru [jru]:
Login group is ``jru''. Invite jru into other groups: guest no
[no]: wheel
Enter password []:
Enter password again []:
Name: jru
Password: ****
Fullname: J. Random User
Uid: 1001
Gid: 1001 (jru)
Class:
Groups: jru wheel
HOME: /home/jru
Shell: /usr/local/bin/zsh
OK? (y/n) [y]: y
Added user ``jru''
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
&prompt.root;En resumen, cambiamos la shell por defecto a
zsh (una shell alternativa incluida
en la colección de ports), y deshabilitamos el envío de un
mensaje de bienvenida a nuevos usuarios. Luego grabamos la
configuración, creamos una cuenta para jru,
y nos aseguramos de que jru esté en el
grupo wheel (de modo que puede asumir el
papel de root vía el comando
su).La contraseña que escribes no se muestra, tampoco se
muestran asteriscos. Asegúrate de no entrar dos veces una
contraseña equivocada.Usa adduser sin argumentos en adelante,
no necesitarás cambiar las opciones por defecto. Si el
programa te pide modificarlas sal y prueba con la opción
.rmuserrmusercuentaseliminarPuedes usar rmuser para eliminar
completamente del sistema a un usuario.
rmuser efectúa los siguientes pasos:Elimina la entrada del usuario en &man.crontab.1; (si
tiene alguna).Elimina las tareas &man.at.1; pertenecientes al
usuario.Mata todos los procesos pertenecientes al
usuario.Elimina al usuario del fichero local de contraseñas del
sistema.Borra el directorio home del usuario (si le
pertenece).Elimina los archivos de correo entrante del usuario de
/var/mail.Borra todos los ficheros del usuario de áreas en las que
se guardan archivos temporales como
/tmp.Finalmente, elimina el nombre de usuario de todos
aquellos grupos a los que pertenece en
/etc/group.
Si un grupo queda vacío y el nombre del grupo
coincide con el del usuario, el grupo es eliminado; esto
complementa la creación de grupos por usuario de
&man.adduser.8;.rmuser no puede ser usado para eliminar
cuentas de superusuario, dado que algo así es casi siempre señal
de masiva destrucción.Por defecto existe un modo interactivo que intenta asegurar
que uno sabe lo que hace.Eliminación interactiva de cuenta con rmuser&prompt.root; rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
&prompt.root;chpasschpasschpass cambia información de los usuarios
en base de datos como contraseñas, shells y datos
personales.Los administradores del sistema, como el superusuario, son
los únicos que pueden modificar la información y contraseñas de
otros usuarios con chpass.Cuando no le pasamos más opciones, salvo un nombre de
usuario opcional, chpass muestra un editor
con información de usuario. Cuando se sale del editor la base
de datos de usuarios se actualiza con la nueva
información.chpass interactivo ejecutado por el superusuario#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1000
Gid [# or name]: 1000
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:Un usuario normal puede modificar un pequeño subconjunto de
esta información, y sólo para sí mismo.chpass interactivo ejecutado por un usuario normal#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:chfn y chsh son
enlaces a chpass, como también lo son
ypchpass, ypchfn, e
ypchsh. El soporte para NIS es automático,
por lo que no es necesario especificar el
yp antes del comando. Si esto te resulta
algo confuso no te preocupes, NIS será tratado en el .passwdpasswdcuentascambiar contraseñapasswd es el comando que se usa
normalmente para cambiar tu propia contraseña como usuario o,
como superusuario, la de otros usuarios.Los usuarios han de introducir su contraseña original
antes de cambiarla para prevenir que gente no autorizada pueda
hacerlo cuando no se encuentren en la consola.Cambio de tu contraseña&prompt.user; passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: doneCambio de la contraseña de otro usuario como superusuario&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneComo ocurre con chpass,
yppasswd es un enlace a
passwd, de manera que NIS funciona con
ambos comandos.pwpw&man.pw.8; es una utilidad de línea de comandos para crear,
eliminar, modificar, y mostrar usuarios y grupos. Hace de
interfaz a los archivos del sistema de usuarios y grupos.
pw tiene un conjunto de opciones de línea de
comandos bastante potente que lo hacen adecuado para su uso en
scripts de shell, aunque los nuevos usuarios puede que lo
encuentren algo más complicado que el resto de comandos que
presentamos aquí.Limitar a los usuarioslimitar a los usuarioscuentaslimitarEn un sistema multiusuario es probable que no confíes en que
el sistema no vaya a ser dañado por ningún usuario.cuotaslimitar a los usuarioscuotascuotas de discoLas cuotas de disco permiten al administrador decirle al
sistema de ficheros qué cantidad de espacio de disco puede
utilizar un usuario; además, ofrecen una manera rápida de
comprobar el uso de disco de un usuario sin tener que calcularlo
cada vez. Las cuotas se estudian en el capítulo de quotas.El resto de límites de recursos incluyen cantidad de CPU,
memoria, y otros recursos que el usuario puede utilizar./etc/login.confLas clases de login se definen en
/etc/login.conf. La semántica precisa está
fuera del alcance de esta sección, pero se describe con detalle en
la página de manual &man.login.conf.5;. Es suficiente decir que
cada usuario es asignado a una clase de login
(default por defecto), y que cada clase de
login tiene un conjunto de capacidades asociado. Una capacidad
de login es un par
nombre=valor,
donde nombre es un identificador
conocido y valor una cadena de texto
arbitraria que se procesa en función del nombre. Establecer
clases y capacidades de login es bastante sencillo y también se
describe en &man.login.conf.5;.Los límites de recursos son diferentes de las capacidades de
login en dos sentidos. En primer lugar, para cada límite existe
un límite blando (actual) y uno duro. Un límite blando puede ser
ajustado por el usuario o una aplicación, pero no puede ser más
alto que el límite duro. Éste último puede ser disminuido por el
usuario pero nunca aumentado. En segundo lugar, la mayoría de los
límites de recursos aplican a un usuario concreto por proceso, no
globalmente. Nótese, no obstante, que estas diferencias vienen
impuestas por cómo se tratan los límites específicamente, no por
la implementación del marco de capacidades de login (es decir, en
realidad no constituyen un caso especial de capacidades de
login).Sin más, a continuación veremos los límites de recursos más
comúnmente usados (el resto, junto con el resto de capacidades de
login, puede encontrarse en &man.login.conf.5;).coredumpsizecoredumpsizelimitar a los usuarioscoredumpsizeEl tamaño de un fichero core generado por un programa
está, por razones obvias, subordinado a otros límites sobre
uso de disco (p. ej., filesize, o cuotas
de disco). Aun y así, se usa frecuentemente como un método
menos severo de controlar consumo de espacio de disco, dado
que los usuarios no generan ficheros core por ellos mismos,
y a menudo no los borran, activar este límite puede evitar
que agoten el espacio de disco de que disponen si algún
programa grande (p. ej., emacs)
deja de funcionar abruptamente.cputimecputimelimitar a los usuarioscputimeÉsta es la máxima cantidad de tiempo de CPU que los
procesos de un usuario pueden consumir.
Éste es un límite sobre el
tiempo de CPU consumido, no el
porcentaje de uso de CPU que se muestra en algunos
campos de &man.top.1; y &man.ps.1;. Un límite de ese
tipo no es posible a día de hoy, y sería bastante
inútil: un compilador —probablemente una tarea
legítima— puede usar prácticamente el 100% de la
CPU durante algún tiempo con facilidad.filesizefilesizelimitar a los usuariosfilesizeÉste es el tamaño máximo que puede llegar a tener un
fichero del usuario. A diferencia de las cuotas de disco, este
límite se especifica para ficheros individuales, no para
el conjunto de todos los archivos que posee.maxprocmaxproclimitar a los usuariosmaxprocÉste es el máximo número de procesos que un usuario
puede ejecutar a la vez, incluidos tanto los procesos en
primer plano como los procesos en segundo plano. Por
razones obvias, este límite no puede ser mayor que el límite
de sistema especificado por kern.maxprocsysctl. Obsérvese también que si
asignamos un valor demasiado bajo a este límite podemos
mermar la productividad de un usuario: frecuentemente es
útil entrar múltiples veces en el sistema o ejecutar
pipelines. Algunas tareas, como compilar largos programas,
lanzan múltiples procesos (p. ej., &man.make.1;, &man.cc.1;,
y demás preprocesadores intermedios).memorylockedmemorylockedlimitar a los usuariosmemorylockedÉsta es la máxima cantidad de memoria que un proceso
puede haber solicitado tener bloqueada en memoria principal
(p. ej., ver &man.mlock.2;). Algunos programas críticos
para el sistema, como &man.amd.8;, se quedan bloqueados en
la memoria principal de manera que en caso de ser llevados a
swap no contribuyan a la basura del sistema si hay algún
problema.memoryusememoryuselimitar a los usuariosmemoryuseÉsta es la mayor cantidad de memoria que un proceso
puede consumir en todo momento. Incluye tanto memoria
normal como uso de swap. No se trata de un límite para
restringir el consumo de memoria en general, pero es un buen
comienzo.openfilesopenfileslimitar a los usuariosopenfilesÉsta es la máxima cantidad de archivos que un proceso
puede tener abiertos. En FreeBSD, los archivos se usan
tambien para representar sockets y canales IPC; así, cuida
de no poner este límite demasiado bajo. A nivel de sistema,
el límite para esto lo define
kern.maxfilessysctl.sbsizesbsizelimitar a los usuariossbsizeÉste es el límite de cantidad de memoria de red, y por
lo tanto mbufs, que un usuario puede consumir. Se originó
como respuesta a un viejo ataque DoS que creaba muchos
sockets, pero puede ser usado en general para limitar las
comunicaciones por red.stacksizestacksizelimitar a los usuariosstacksizeÉste es el tamaño máximo que puede alcanzar la pila de
un proceso. Por sí solo no es suficiente para limitar la
cantidad de memoria que puede usar un programa; en
consecuencia, debería ser usado junto con otros
límites.Hay unas pocas cosas más a recordar cuando establecemos
límites de recursos. A continuación vienen algunas
recomendaciones, sugerencias, y comentarios varios.Los procesos que se ponen en marcha cuando arranca el
sistema por /etc/rc están asignados a la
clase de login daemon.Aunque el /etc/login.conf que viene
con el sistema tiene valores razonables para la mayoría de los
límites, sólo tú, el administrador, puedes saber lo que es
apropiado para tu sistema.A los usuarios del X Window System (X11) probablemente se
les debería conceder más recursos que al resto. X11 de por sí
consume muchos recursos, pero además contribuye a que los
usuarios ejecuten más programas simultáneamente.Recuerda que hay muchos límites que aplican a procesos
individuales, no al usuario en general. Por ejemplo, poner
openfiles a 50 significa que cada uno de
los procesos que ejecute un usuario puede abrir a lo máximo 50
ficheros. Así, la cantidad de ficheros que un usuario puede
abrir es el valor de openfiles multiplicado
por el valor de maxproc. Esto también
aplica al uso de memoria.Para más información acerca de límites de recursos y clases y
capacidades de login en general, consulta las páginas de manual
relevantes: &man.cap.mkdb.1;, &man.getrlimit.2;,
&man.login.conf.5;.Personalizar a los usuariosLa localización es un entorno establecido por el administrador
o el usuario para dar soporte a distintos lenguajes, juegos de
caracteres, estándares sobre fechas y horas, etcétera. Éste tema
se trata en el capítulo Localización.Gruposgrupos/etc/groupcuentasgruposUn grupo es simplemente una lista de usuarios. Los grupos se
identifican por su nombre de grupo y gid (ID de grupo). En
FreeBSD (y en la mayoría de sistemas Unix), los dos factores que
tiene en cuenta el núcleo para decidir si un proceso puede hacer
algo es su ID de usuario y la lista de grupos a los que pertenece.
A diferencia del ID de usuario, un proceso tiene una lista de
grupos asociados. En ocasiones encontrarás menciones al "ID de
grupo" de un usuario o de un proceso; la mayoría de las veces
referirán simplemente al primero de los grupos de la lista.La correspondencia entre nombres e IDs de grupo está en
/etc/group. Se trata de un fichero de texto
plano con cuatro campos separados por el signo dos puntos. El
primer campo es el nombre de grupo, el segundo la contraseña
encriptada, el tercero el ID de grupo, y el cuarto la lista de
miembros separados por comas. Puede ser editado a mano sin
peligro (¡suponiendo, por supuesto, que no se cometan errores de
sintaxis!). Para una descripción más completa de la sintaxis, ver
la página de manual &man.group.5;.Si no quieres editar /etc/group
manualmente, puedes usar el comando &man.pw.8; para añadir y
modificar grupos. Por ejemplo, para añadir un grupo llamado
teamtwo y luego confirmar que existe puedes
usar:Añadir un grupo usando &man.pw.8;&prompt.root; pw groupadd teamtwo
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:El número 1100 en el ejemplo anterior es el
ID de grupo del grupo teamtwo. Ahora mismo
teamtwo no tiene miembros, y es por tanto
bastante inútil. Cambiemos eso invitando a
jru a formar parte del grupo
teamtwo.Añadir a alguien a un grupo usando &man.pw.8;&prompt.root; pw groupmod teamtwojru
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:jruEl argumento de la opción es una lista con
los usuarios que son miembros del grupo separados por comas.
Sabemos de secciones anteriores que el fichero de contraseñas
también contiene un grupo para cada usuario. El usuario es
automáticamente añadido a la lista de grupos por el sistema; no
constará como miembro cuando usemos el comando
groupshow con &man.pw.8;, pero sí cuando la
información se consulte con &man.id.1; u otra herramienta similar.
En otras palabras, &man.pw.8; sólo manipula el fichero
/etc/group; nunca tratará de leer datos
adicionales de /etc/passwd.Determinar pertenencia a grupos con &man.id.1;&prompt.user; idjru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)Como puedes ver, jru es miembro de los
grupos jru y
teamtwo.Para más información acerca de &man.pw.8;, consulta su página
de manual, y para más información acerca del formato de
/etc/group, consulta la página de manual de
&man.group.5;.