Guía de referencia Debian ------------------------- Osamu Aoki Coordinador de la traducción al español: Walter O. Echarri Sección A.1, `Autores' CVS, lun abr 3 22:57:45 UTC 2005 ------------------------------------------------------------------------------- Resumen ------- Esta Guía de referencia Debian (http://qref.sourceforge.net/) intenta proporcionar un repaso amplio del sistema Debian al igual que una _guía de usuario post-instalación_ Abarca diversos aspectos de la administración del sistema mediante ejemplos que utilizan comandos de la shell. Se brindan tutoriales, trucos e información sobre diversos temas: conceptos básicos del sistema Debian, consejos para la instalación del sistema, administración de paquetes Debian, el kernel de Linux en Debian, puesta a punto del sistema, creación de una puerta de enlace (gateway), editores de texto, CVS, programación y GnuPG para usuarios que _no son desarrolladores_. Nota de Copyright ----------------- Copyright (C) 2001--2005 by Osamu Aoki Copyright (Chapter 2) (C) 1996--2001 by Software in the Public Interest. Este documento puede ser usado en los términos descritos en la Licencia Pública GNU versión 2 o posterior. (http://www.gnu.org/copyleft/gpl.html) Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. ------------------------------------------------------------------------------- Contenidos ---------- 1. Prefacio 1.1. Documento oficial 1.2. Convenciones en los documentos 1.3. Scripts de ejemplo 1.4. Configuración básica 1.5. Fundamentos sobre las distribuciones Debian 2. Fundamentos de Debian 2.1. Los archivos Debian 2.1.1. Estructura de los directorios 2.1.2. Distribuciones Debian 2.1.3. La distribución `estable' 2.1.4. La distribución `de prueba' 2.1.5. La distribución `inestable' 2.1.6. La distribución `congelada' 2.1.7. Los nombres de versión de la distribución Debian 2.1.8. Nombres de versión usados en el pasado 2.1.9. El origen de los nombres de versión 2.1.10. El directorio `pool' 2.1.11. Algunas notas históricas sobre Sid 2.1.12. Transferencias de paquetes en `incoming/' 2.1.13. Recuperando una paquete antiguo 2.1.14. Distintas arquitecturas 2.1.15. El código fuente 2.2. Sistema de administración de paquetes Debian 2.2.1. Repaso sobre los paquetes Debian 2.2.2. Formato de los paquetes Debian 2.2.3. Convención usada para designar a los paquetes Debian 2.2.4. Preservando la configuración local 2.2.5. Scripts de mantenimiento de Debian 2.2.6. Prioridad de los paquetes 2.2.7. Paquetes virtuales 2.2.8. Dependencia entre paquetes 2.2.9. Significado de Pre-depends 2.2.10. Estado de un paquete 2.2.11. Evitando la actualización de un paquete 2.2.12. Paquetes fuente 2.2.13. Construir un paquete binario a partir de un paquete fuente 2.2.14. Creando paquetes Debian nuevos 2.3. Actualizando un sistema Debian 2.3.1. Métodos para actualizar un sistema Debian 2.3.2. Repaso de las herramientas de administración de paquetes 2.3.3. `dpkg' 2.3.4. APT 2.3.5. `dselect' 2.3.6. Actualizando un sistema en funcionamiento 2.3.7. Archivos `.deb' descargados y en caché 2.3.8. Mantener un registro de las actualizaciones 2.4. El proceso de arranque de Debian 2.4.1. El programa `init' 2.4.2. Niveles de ejecución 2.4.3. Personalizando el proceso de arranque 2.5. En apoyo a la diversidad 2.6. Internacionalización 2.7. Debian y el kernel 2.7.1. Compilando un kernel desde un fuente no perteneciente a Debian 2.7.2. Herramientas para crear núcleos personalizados 2.7.3. Cargadores de arranque alternativos 2.7.4. Discos de arranque personalizados 2.7.5. Cuidados especiales para tratar con módulos 2.7.6. Desinstalando el paquete de un kernel antiguo 3. Consejos para la instalación de un sistema Debian 3.1. Consejos generales para la instalación de un sistema Linux 3.1.1. Fundamentos sobre la compatibilidad del hardware 3.1.2. Determinando el hardware del PC 3.1.3. Determinando el hardware del PC mediante Debian 3.1.4. Determinando el hardware del PC mediante otros SOs 3.1.5. El mito sobre Lilo 3.1.6. GRUB 3.1.7. Elección de los discos de arranque 3.1.8. Instalación 3.1.9. Máquinas IP para usar en una LAN 3.1.10. Cuentas de usuarios 3.1.11. Creando sistema de archivos 3.1.12. Lineamientos para la memoria DRAM 3.1.13. Espacio de intercambio 3.2. Configuración del bash 3.3. Configuración del ratón 3.3.1. Ratón PS/2 3.3.2. USB mice 3.3.3. Touch pad 3.4. Configuración NFS 3.5. Configuración de Samba 3.6. Configuración de la impresora 3.6.1. `lpr'/`lpd' 3.6.2. CUPS(TM) 3.7. Otros consejos de instalación 3.7.1. Instalación adicional de paquetes 3.7.2. Módulos 3.7.3. Configuración básica de una grabadora de CDs 3.7.4. Gran cantidad de memoria y apagado automático 3.7.5. Problemas extraños al acceder a ciertos sitios de Internet 3.7.6. Configuración de una conexión telefónica con PPP 3.7.7. Otros archivos de configuración files para modificar en `/etc' 4. Tutoriales de Debian 4.1. Fuentes de información 4.2. La consola Linux 4.2.1. Entrando al sistema 4.2.2. Añadir una cuenta de usuario 4.2.3. Cómo apagar el sistema 4.2.4. Edición en línea de comandos 4.2.5. Comandos básicos que se deben tener presente 4.2.6. Sistema X Window 4.2.7. Combinaciones de teclas habituales 4.3. Midnight Commander (MC) 4.3.1. Instalar MC 4.3.2. Iniciar MC 4.3.3. Administrador de archivos 4.3.4. Trucos para la línea de comandos: 4.3.5. Editor 4.3.6. Visor 4.3.7. Inicio automático de programas 4.3.8. Sistema de archivos virtuales FTP 4.4. Para saber más 5. Actualizando una distribución 5.1. Transición a la versión Woody de APT 5.2. Preparación para la transición (`stable' a `testing') 5.3. Actualizar el sistema Debian 5.3.1. Mejor método de actualización usando `dselect' 5.3.2. Método obsoleto de actualización usando `apt-get' 6. Administración de paquetes Debian 6.1. Introducción 6.1.1. Herramientas principales 6.1.2. Herramientas prácticas 6.2. Fundamentos de la administración de paquetes Debian Debian 6.2.1. Instalación de con `tasksel' 6.2.2. Configurar el sistema APT 6.2.3. `dselect' 6.2.4. `aptitude' 6.2.5. Los comandos `apt-cache' y `apt-get' 6.2.6. Permanecer en una versión de la distribución Debian 6.2.7. Volver todos los paquetes a su versión `estable' 6.2.8. Repaso de `/etc/apt/preferences' 6.3. Comandos de supervivencia de Debian 6.3.1. Búsqueda de fallos y ayuda en Debian 6.3.2. Resolución de problemas al actualizar con APT 6.3.3. Rescate usando `dpkg' 6.3.4. Recuperar los datos de la selección de paquetes 6.3.5. Recuperando un sistema luego de borrar `/var' 6.3.6. Instalar un paquete en un sistema que no arranca 6.3.7. Qué hacer si el comando `dpkg' se encuentra dañado 6.4. Comandos 'nirvana' de Debian 6.4.1. Información sobre un archivo 6.4.2. Información sobre un paquete 6.4.3. Instalación automática con APT 6.4.4. Reconfigurar paquetes instalados 6.4.5. Desinstalar y purgar paquetes 6.4.6. Conservar paquetes antiguos 6.4.7. Sistema mixto `estable'/`de prueba'/`inestable' 6.4.8. Eliminar paquetes del caché 6.4.9. Grabar/copiar la configuración del sistema 6.4.10. Portar un paquete a la rama `stable' 6.4.11. Archivo local de paquetes 6.4.12. Convertir o instalar un paquete que no pertenece a Debian 6.4.13. Verificar los paquetes instalados 6.4.14. `sources.list' optimizado 6.5. Otras particularidades de Debian 6.5.1. El comando `dpkg-divert' 6.5.2. El paquete `equivs' 6.5.3. Comandos alternativos 6.5.4. `init' del System-V y niveles de ejecución 6.5.5. Servicios desactivados 7. El kernel de Linux en Debian 7.1. Recompilación del kernel 7.1.1. Método Debian estándar 7.1.2. Método clásico 7.1.3. Cabeceras del kernel 7.2. El kernel modular 2.4 7.2.1. PCMCIA 7.2.2. SCSI 7.2.3. Funciones de Red 7.2.4. Sistema de archivos EXT3 ( > 2.4.17) 7.2.5. Soporte Realtek RTL-8139 en el kernel 2.4 7.2.6. Soporte puerto paralelo 7.3. Poniendo a punto al kernel mediante el sistema de archivos proc 7.3.1. Demasiado archivos abiertos 7.3.2. Intervalos de vaciado de disco 7.3.3. Máquinas con memoria extremadamente lenta 8. Trucos para Debian 8.1. Arrancando el sistema 8.1.1. "¡Olvidé la contraseña de superusuario!" (1) 8.1.2. "¡Olvidé la contraseña de superusuario!" (2) 8.1.3. No puedo arrancar el sistema 8.1.4. "¡Permítanme desactivar X al arrancar!" 8.1.5. Otros trucos con el indicador de arranque 8.1.6. Configurando los parámetros de arranque (GRUB) 8.2. Registro de actividades 8.2.1. Registrando las actividades del intérprete de comandos 8.2.2. Registrando las actividades en X 8.3. Copiar y archivar un subdirectorio entero 8.3.1. Comandos básicos para copiar un subdirectorio entero 8.3.2. `cp' 8.3.3. `tar' 8.3.4. `pax' 8.3.5. `cpio' 8.3.6. `afio' 8.4. Respaldos diferenciales y sincronización de datos 8.4.1. Respaldos diferenciales con rdiff 8.4.2. Copias de respaldo diarias con `pdumpfs' 8.4.3. Respaldos diferenciales con RCS 8.5. Recuperar al sistema de un cuelgue 8.5.1. Mate el procesoi 8.5.2. Alt-SysRq 8.6. Algunos pequeños comandos útiles para tener en cuenta 8.6.1. Paginador 8.6.2. Memoria disponible 8.6.3. Configurar fecha y hora (BIOS) 8.6.4. Configurar hora (NTP) 8.6.5. Como controlar características de la consola tales como el protector de pantalla 8.6.6. Búsqueda en la base de datos administrativa 8.6.7. Desactivar el sonido (bip) 8.6.8. Mensajes de error por pantalla 8.6.9. Configurar la consola 8.6.10. Volver la consola a su estado normal 8.6.11. Convertir un archivo de texto en formato DOS a formato Unix 8.6.12. Sustitución de expresiones regulares 8.6.13. Editar un archivo con un script 8.6.14. Extraer diferencias y combinar actualizaciones entre archivos fuente 8.6.15. Convertir un archivo grande en archivos más pequeños 8.6.16. Extraer datos de una tabla contenida en un archivo de texto 8.6.17. Pequeños scripts que incluyen tuberías 8.6.18. Pequeños scripts para recorrer distintos archivos 8.6.19. La locura de los script cortos en Perl 8.6.20. Obtener el texto de una página web o del archivo de una lista de correos 8.6.21. Impresión de una página web 8.6.22. Impresión de la página una página del manual 8.6.23. Combinar dos archivos PostScript o PDF 8.6.24. El tiempo de un comando 8.6.25. El comando `nice' 8.6.26. Planificar una actividad (`cron', `at') 8.6.27. Intercambiando consolas con `screen' 8.6.28. Probando la red 8.6.29. Eliminar mensajes de la cola local 8.6.30. Eliminar mensajes bloqueados de la cola local 8.6.31. Redistribuir los contenidos de `mbox' 8.6.32. Borrar el contenido de un archivo 8.6.33. Archivos fantasma 8.6.34. `chroot' 8.6.35. Cómo verificar los enlaces duros 8.6.36. Montar una imagen del disco duro 8.6.37. Samba 8.6.38. Utilidades para otros sistemas de archivos 8.7. Errores típicos a tener presente 8.7.1. `rm -rf .*' 8.7.2. `rm /etc/passwd' 9. Puesta a punto del sistema Debian 9.1. Trucos para la inicialización del sistema 9.1.1. Personalizando los scripts init 9.1.2. Personalizando el sistema de registro 9.1.3. Optimización del acceso al hardware 9.2. Control de acceso 9.2.1. Control de acceso mediante PAM y login 9.2.2. "Por qué el `su' GNU no soporta el grupo `wheel'" 9.2.3. Significado de los distitos grupos 9.2.4. `sudo' -- un entorno de trabajo más seguro 9.2.5. Control de accesos a los demonios 9.2.6. Lightweight Directory Access Protocol 9.3. Grabadora de CDs 9.3.1. Introducción 9.3.2. Primer enfoque: módulos + `lilo' 9.3.3. Segundo enfoque 2: recompile el kernel 9.3.4. Etapas post-configuración 9.3.5. Imagen en CD (arrancable) 9.3.6. Grabar un CD (R, R/W): 9.3.7. Crear la imagen de un CD 9.3.8. Imágenes de CD Debian 9.3.9. Hacer una copia de respaldo del sistema en un CD-R 9.3.10. Grabar un CD de música a un CD-R 9.4. El programa X 9.4.1. Paquetes del sistema X 9.4.2. Paquetes de detección de hardware para el servidor X 9.4.3. El servidor X 9.4.4. El cliente X 9.4.5. Sesión X 9.4.6. Conexión TCP/IP en X 9.4.7. Conexión X remota: `xhost' 9.4.8. Conexión X remota: `ssh' 9.4.9. `xterm' 9.4.10. Base de datos de recursos de X 9.4.11. Adquirir privilegios de superusuario en X 9.4.12. Fuentes trueType en X 9.4.13. Navegador web (gráfico) 9.5. SSH 9.5.1. Fundamentos 9.5.2. Reenvío de puertos -- túnel SMTP/POP3 9.5.3. Conectarse con pocas contraseñas 9.5.4. Otro clientes SSH 9.5.5. Agente SSH 9.5.6. Resolución de problemas 9.6. Programas de correo 9.6.1. Agente de transporte de correo (MTAs) 9.6.2. Utilidad de correo (Fetchmail) 9.6.3. Utilidad de correo (Procmail) 9.6.4. Agente de usuario de correo (Mutt) 9.7. Localización y soporte de idiomas 9.7.1. Personalización básica 9.7.2. Locales 9.7.3. Activar el soporte de locales 9.7.4. Activar un local determinado 9.7.5. Formato de la fecha del local ISO 8601 9.7.6. Ejemplo para los Estados Unidos (ISO-8859-1) 9.7.7. Ejemplo para Francia con el signo euro (ISO-8859-15) 9.7.8. Ejemplo para un sistema bilingüe (EUC japonés e ISO-8859-1) 9.7.9. Ejemplo de UTF-8 en X 9.7.10. Ejemplo de UTF-8 en una consola FB 9.7.11. Más allá de los locales 10. Configuración de la red 10.1. Fundamentos de redes IP 10.2. Configuración de la red a bajo nivel 10.2.1. Configuración de la red a bajo nivel -- `ifconfig' y `route' 10.2.2. Configuración de la red a bajo nivel -- `ip' 10.2.3. Configurando una interfaz Wi-Fi 10.2.4. Configurando una interfaz PPP 10.3. Asignando un nombre a la máquina 10.3.1. Nombre de la máquina 10.3.2. Nombre para el correo 10.4. Servicio de Nombres de Dominio (DNS) 10.4.1. El sistema de resolución 10.4.2. Administrando la información del servidor de nombres -- `resolvconf' 10.4.3. Guardar en memoria los nombres resueltos -- `dnsmasq' 10.4.4. Proveyendo un Servicio de Nombres de Dominio -- `bind' 10.5. Configurando las interfaces de red usando DHCP 10.6. Configuración de la red de alto nivel en Debian 10.6.1. Configurando una interfaz con una dirección IP estática. 10.6.2. Configurando una interfaz usando DHCP 10.6.3. Configurando una interfaz Wi-Fi 10.6.4. Configurando una interfaz PPP 10.6.5. Configurando una interfaz PPPoE 10.6.6. Configurando múltiples interfaces Ethernet para una puerta de enlace 10.6.7. Configurando interfaces virtuales 10.7. _Re_configuración de la red 10.8. Reconfiguración mágica de la red 10.8.1. guessnet 10.8.2. laptop-net 10.9. Activando la reconfiguración de la red 10.9.1. Activando la configuración de la red durante el arranque 10.9.2. Activando la configuración de la red -- `hotplug' 10.9.3. Activando la configuración de la red -- `ifplugd' 10.9.4. Activando la configuración de la red -- `waproamd' 10.9.5. Configuración de la red y PCMCIA 10.10. Configuración de los servicios de red 10.11. Resolución de problemas en la red 10.12. Configurando una puerta de enlace 10.12.1. Configuración de netfilter 10.12.2. Administrando múltiples conexiones de red 11. Editores 11.1. Editores populares 11.2. Editores de rescate 11.3. Emacs y Vim 11.3.1. Comandos útiles en Vim 11.3.2. Comandos útiles en Emacs 11.3.3. Ejecutando el editor 11.3.4. Resumen de los comandos del editor (Emacs, Vim) 11.3.5. Configuración de Vim 11.3.6. Ctags 11.3.7. Convertir un porción de texto seleccionado en código HTML 11.3.8. Dividir la pantalla con `vim' puede editar múltiples archivos en un entorno de múltiples ventanas. Escriba ":help usr_08.txt" para más detalles. 12. Sistemas de control de versiones 12.1. Sistema de versiones concurrentes (CVS) 12.1.1. Instalar el servidor CVS 12.1.2. Sesiones CVS de ejemplo 12.1.3. Resolución de problemas 12.1.4. Comandos del CVS 12.2. Subversion 12.2.1. Instalando el servidor Subversion 12.2.2. Migrando un repositorio CVS a Subversion 12.2.3. Ejemplos de uso de Subversion 13. Programación 13.1. Dónde empezar 13.2. Shell 13.2.1. Bash -- el intérprete de comandos interactivo estándar de _GNU_ 13.2.2. Intérpretes de comandos POSIX 13.2.3. Parámetros del intérprete de comandos 13.2.4. Redireccionamiento del shell 13.2.5. Operadores condicionales del shell 13.2.6. Tratamiento de la línea de comandos 13.3. Awk 13.4. Perl 13.5. Python 13.6. Make 13.7. C 13.7.1. Programa sencillo en C (`gcc') 13.7.2. Depurar 13.7.3. Flex -- un Lex mejorado 13.7.4. Bison -- un Yacc mejorado 13.7.5. Autoconf 13.8. Preparación de documentos 13.8.1. Tratamiento de texto `roff' 13.8.2. SGML 13.8.3. TeX/LaTeX 13.8.4. Programación ilustrada 13.9. Creación de paquetes Debian 13.9.1. Empaquetar un único binario 13.9.2. Empaquetando con herramientas 14. GnuPG 14.1. Instalar Gnu PG 14.2. Usar GnuPG 14.3. Administrar GnuPG 14.4. Usando GnuPG con aplicaciones 14.4.1. Usando GnuPG con Mutt 14.4.2. Usando GnuPG con Vim 15. Suporte para Debian 15.1. Referencias 15.2. Encontrar el significado de una palabra 15.3. Conocer la popularidad de un paquete Debian 15.4. Sistema de seguimiento de fallos de Debian 15.5. Listas de Correo 15.6. IRC 15.7. Motores de Búsqueda 15.8. Páginas en Internet A. Apéndice A.1. Autores A.2. Garantías A.3. Comentarios A.4. Formato del documento A.5. El laberinto de Debian A.6. Citas de Debian ------------------------------------------------------------------------------- 1. Prefacio ----------- Esta Guía de referencia Debian (http://qref.sourceforge.net/) intenta proporcionar un amplio repaso del sistema Debian al igual que _una guía de usuario post-instalación_. El lector a quien va dirigida es todo aquel dispuesto a leer scripts de shell. Supongo que además adquirió ciertas habilidades básicas en sistemas tipo UNIX. He tomado la decisión de _no_ explicar todo en detalle como si se tratara de una _página del manual_, una _página info_ o un _documento HOWTO_. En vez de explicaciones detalladas, intento proporcionar información práctica dando la _secuencia exacta de comandos_ en el texto principal o en los _scripts de ejemplo_ situados en http://www.debian.org/doc/manuals/debian-reference/examples/. Debe comprender el contenido de los ejemplos antes de usar cualquier comando. Su sistema puede requerir de una secuencia de comandos ligeramente diferente. Gran parte de la información incluida consiste en enlaces hacia referencias oficiales listadas en Sección 15.1, `Referencias'. Esto es en parte así porque inicialmente este documento se originó como una "_referencia rápida_". _Resúmalo y simplifíquelo_ es mi principio rector. Para obtener ayuda para un sistema en emergencia vaya directamente a Sección 6.3, `Comandos de supervivencia de Debian'. 1.1. Documento oficial ---------------------- La última versión oficial de este documento se encuentra en los archivos Debian en el paquete `debian-reference-es'. También se encuentra disponible en http://www.debian.org/doc/manuals/debian-reference/. La última versión en desarrollo se encuentra en http://qref.sourceforge.net/Debian/. El proyecto se hospeda en http://qref.sourceforge.net/ donde este documento se encuentra disponible para descargar en los formatos de texto, HTML, PDF, SGML y PostScript. 1.2. Convenciones en los documentos ----------------------------------- La "Guía de referencia Debian" proporciona información mediante comandos del shell Bash. Veamos las convenciones utilizadas: # comando en la cuenta de superusuario $ comando en la cuenta de usuario normal ... descripción de la acción Estos ejemplos utilizan `PS2=" "' para evitar `>'. Véase Sección 13.2.1, `Bash -- el intérprete de comandos interactivo estándar de _GNU_' para más información. Una referencia: * en una página del _manual_ se muestra así bash(1). * en una página _TEXINFO GNU_ se muestra así `info libc'. * en un _libro_ se muestra así _El Lenguaje de Programación C_. * en una _URL_ se muestra así http://www.debian.org/doc/manuals/debian-reference/. * en un _archivo_ del sistema se muestra así `/usr/share/doc/Debian/reference/'. Se utilizaron las siguientes abreviaturas: * _LDP_: Proyecto de Documentación de Linux (http://www.tldp.org/) * _DDP_: Proyecto de Documentación de Debian (http://www.debian.org/doc/) Si bien únicamente se proporcionan las URLs de los documentos del LDP, también se pueden obtener en paquetes e instalarse en `/usr/share/doc/HOWTO/'. Véase Sección 15.1, `Referencias'. 1.3. Scripts de ejemplo ----------------------- Los scripts de ejemplo se encuentran en el subdirectorio de ejemplos (http://www.debian.org/doc/manuals/debian-reference/examples/) ubicado en `/usr/share/doc/Debian/reference/'; en el caso de archivos ocultos el '.' que precede al nombre del archivo se reemplaza por un guión de subrayado "_". Se ha añadido un sufijo extra cuando existen diversos scripts de ejemplo para un mismo tema. 1.4. Configuración básica ------------------------- Si el sistema ha sido instalado con la cantidad mínima de paquetes, asegúrese de ejecutar el siguiente comando para instalar algunos paquetes esenciales y documentos claves: # apt-get install info man-db doc-base dhelp apt apt-utils auto-apt \ dpkg less mc ssh nano-tiny elvis-tiny vim sash \ kernel-package \ manpages manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc install-doc \ libpam-doc glibc-doc samba-doc exim-doc cvsbook \ gnupg-doc # apt-get install debian-reference # en el caso de Sarge, haga esto también :) Para Woody, añada `exim-doc-html' a la lista anterior. Para Sarge, reemplace `exim-doc' por `exim4-doc-html' y `exim4-doc-info'. 1.5. Fundamentos sobre las distribuciones Debian ------------------------------------------------ Debian viene en 3 versiones o "sabores": * `estable': conveniente para un servidor. Poco interesante para una estación de trabajo. Véase Sección 2.1.3, `La distribución `estable''. * `de prueba': conveniente para una estación de trabajo. Véase Sección 2.1.4, `La distribución `de prueba''. * `inestable': úsela con cierta prudencia. Véase Sección 2.1.5, `La distribución `inestable''. Lea por lo menos la lista de correo `debian-devel-announce@lists.debian.org' para estar al tanto sobre las novedades de Debian. En el mes de marzo del 2002, estas tres versiones correspondían a Potato (calidad de producción), Woody (versión beta, muy estable ya que su lanzamiento era inminente) y Sid (versión alfa). En agosto del 2002, justo después del lanzamiento de Woody, estas correspondían a Woody (calidad de producción), Sarge (versión beta, será un poco difícil durante cierto tiempo) y Sid (siempre es la versión alfa). Cuando los paquetes de la rama `inestable' no poseen fallos críticos (RC) dados a conocer durante la primera semana de pruebas, automáticamente se transfieren a la rama `de prueba'. See Sección 2.1, `Los archivos Debian'. En teoría, existen dos cosas que puede hacer para obtener las últimas versiones de los programas. * Sección 6.2, `Fundamentos de la administración de paquetes Debian Debian' (principalmente para estaciones de trabajo) * Sección 6.4.10, `Portar un paquete a la rama `stable'' (principalmente para servidores) Permanecer en la versión `de prueva' deDebian tiene como efecto colateral la lenta solución de los fallos de seguridad. Queda debidamente advertido. Si mezcla versiones de Debian, usando paquetes de la rama `de prueba' o `inestable' en la rama `estable', es muy probable que sin querer descargue diversos paquetes de la rama `de prueba' o `inestable' que pueden tener errores. Queda debidamente advertido. Utilizar la versión `de prueba' o `inestable' de Debian conlleva el riesgo creciente de encontrarse con fallos graves. Esto puede evitarse, creando un esquema multi-arranque con versiones más estables de Debian, o utilizando un truco interesante con `chroot' con la versión más estable como se explica en Sección 8.6.34, ``chroot''. Esta última opción nos permitirá ejecutar diferentes versiones de Debian simultáneamente en diferentes consolas. Luego de explicar algunos fundamentos de la distribución Debian en Capítulo 2, `Fundamentos de Debian', presentaré cierta información básica para ayudarle a vivir tranquilamente con los programas más actuales, aprovechando las ventajas de las distribuciones Debian `de prueba' e `inestable'. Los impacientes deberían ir directamente a Sección 6.3, `Comandos de supervivencia de Debian'. ¡Feliz actualización! ------------------------------------------------------------------------------- 2. Fundamentos de Debian ------------------------ Este capítulo proporciona información fundamental sobre el sistema Debian para aquellos que no son desarrolladores. Para información autorizada, consulte:i * Manual de Normativa de Debian * Referencia para los Desarrolladores de Debian * Guía para Nuevos Encargados de Paquetes de Debian listada en la sección Sección 15.1, `Referencias'. Si está buscando explicaciones menos detalladas, vaya directamente a la Capítulo 6, `Administración de paquetes Debian' o a los capítulos adecuados. Este capítulo se basa en información obtenida de las "FAQ de Debian" reorganizada totalmente a fin de permitir dar sus primeros pasos a los administradores de sistemas Debian. 2.1. Los archivos Debian ------------------------ 2.1.1. Estructura de los directorios ------------------------------------ El software que ha sido empaquetado para Debian está disponible en alguno de los diversos árboles de directorios situados en cada sitio réplica Debian (http://www.debian.org/mirror/) a través de FTP o HTTP. En cada sitio réplica de Debian, bajo el directorio `debian' se pueden encontrar los siguientes directorios: `dists/': Este directorio contiene las "distribuciones" y se utilizan para acceder a los paquetes actualmente disponibles en las versiones y pre-versiones de Debian. Aún se pueden encontrar aquí algunos paquetes antiguos, archivos `Contents-*.gz', y archivos `Packages.gz'. `pool/': La nueva ubicación de todos los paquetes de todas las versiones y versiones previas de Debian. `tools/': Utilidades del DOS para crear discos de arranque, particionar su unidad de disco, comprimir/descomprimir archivos y arrancar Linux. `doc/': La documentación básica de Debian: FAQ, instrucciones para dar a conocer un fallo, etc. `indices/': El archivo Maintainers y los archivos override. `project/': principalmente recursos para el desarrollador, tales como: `project/experimental/': Este directorio contiene paquetes y herramientas que aún están en desarrollo y en la etapa alfa de prueba. Los usuarios no deberían usar estos paquetes ya que pueden resultar peligrosos y perjudicial incluso para los más experimentados. `project/orphaned/': Paquetes que han sido abandonados por las personas los tenían a cargo y que han sido retirados de la distribución. 2.1.2. Distribuciones Debian ---------------------------- Normalmente existen tres distribuciones Debian en el directorio `dists': la distribución `estable' (stable) , la distribución `de prueba' (testing) y la distribución `inestable' (unstable). A veces existe una distribución `congelada' (véase Sección 2.1.6, `La distribución `congelada''). Cada distribución viene definida por un enlace simbólico al directorio real, utilizando un nombre de código en el directorio `dists' 2.1.3. La distribución `estable' -------------------------------- Los paquetes de la versión `estable', Debian Woody (3.0r0), se encuentran en el directorio `stable' (enlace simbólico a `woody'): * `stable/main/': Este directorio contiene los paquetes que formalmente constituyen la versión más reciente del sistema Debian. Todos estos paquetes están de acuerdo con Las directivas del Software Libre de Debian (DFSG) (http://www.debian.org/social_contract#guidelines) (también disponible como `/usr/share/doc/debian/social-contract.txt' que se instala mediante `debian-doc'), y todos se pueden usar y distribuir libremente. * `stable/non-free/': este directorio contiene paquetes cuya distribución está restringida y necesita que los distribuidores tomen cuidadosamente en cuenta las exigencias especificadas por la licencia. Por ejemplo, algunos paquetes tienen licencias que prohiben su distribución comercial. Otros pueden ser redistribuidos pero, de hecho, son shareware y no software libre. La licencia de cada uno de estos paquetes debe analizarse y, quizás, negociarse antes de incluirse en cualquier forma de redistribución (por ejemplo, en un CD-ROM). * `stable/contrib/': este directorio contiene paquetes que son libres de acuerdo con la definición de software libre de Debian y, en sí mismos, _de libre distribución_, pero que dependen de algún modo de otro paquete que _no_ es de distribución libre y, por lo tanto, disponible únicamente en la sección non-free. Actualmente, además de las ubicaciones anteriores, los paquetes nuevos se encuentran físicamente en el directorio `pool' (Sección 2.1.10, `El directorio `pool''). El estado actual de los fallos de la distribución `estable' se puede consultar en la página web Stable Problems (http://ftp-master.debian.org/testing/stable_probs.html). 2.1.4. La distribución `de prueba' ---------------------------------- Los paquetes de la versión `de prueba', Debian Sarge, se encuentran en el directorio `testing' (enlace simbólico a `sarge') tras haber sido probados durante cierto tiempo en la rama `inestable'. Actualmente, además de las ubicaciones anteriores, los paquetes nuevos se localizan en el directorio `pool' (Sección 2.1.10, `El directorio `pool''). Asimismo, también están los subdirectorios `main', `contrib' y `non-free' que cumplen las mismas funciones que en la rama `estable'. Estos paquetes deben estar en sintonía con todas las arquitecturas para las cuales fueron construidos y no deben tener dependencias que impida su instalación; además, deben tener menos fallos críticos que las versiones que se encuentran en la rama `inestable'. De esta manera, es de esperar que la rama `de prueba' sea la posible candidata de la próxima versión. Más detalles sobre este mecanismo en: http://www.debian.org/devel/testing. El estado final de la distribución `de prueba' se puede consultar en los siguientes sitios: * update excuses (http://ftp-master.debian.org/testing/update_excuses.html) * testing problems (http://ftp-master.debian.org/testing/testing_probs.html) * release-critical bugs (http://bugs.debian.org/release-critical/) * base system bugs (http://bugs.qa.debian.org/cgi-bin/base.cgi) * bugs in standard and task packages (http://bugs.qa.debian.org/cgi-bin/standard.cgi) * other bugs and bug-squashing party notes (http://bugs.qa.debian.org/) 2.1.5. La distribución `inestable' ---------------------------------- Los paquetes de la versión `inestable', denominada siempre "Sid", se encuentran en el directorio `unstable' (enlace simbólico a `sid') tras haber sido transferidos al archivo Debian y permanecer allí hasta su translado a la rama `de prueba' Actualmente, además de las ubicaciones anteriores, los paquetes nuevos se ubican en el directorio `pool' (Sección 2.1.10, `El directorio `pool''). Asimismo, también están los subdirectorios `main', `contrib' y `non-free' que cumplen las mismas funciones que en la rama `estable'. La distribución `inestable' contiene la imagen más reciente del sistema en desarrollo. Se alienta a los usuarios a usar y probar estos paquetes pero se les advierte sobre su estado. La ventaja de usar la distribución `inestable' es que uno siempre está actualizado con lo último del proyecto Debian--- pero si deja de funcionar deberá conservar ambas partes :-) El estado actual de los fallos de la distribución `inestable' se puede consultar en la página web Problemas de la rama inestable (http://ftp-master.debian.org/testing/unstable_probs.html). 2.1.6. La distribución `congelada' ---------------------------------- Cuando la distribución `de prueba' está suficientemente madura se "congela", es decir, ya no se aceptan programas nuevos y -de ser necesario- sólo se eliminan fallos. Asimismo, en el directorio `dists' se crea un nuevo árbol "de prueba" al que se le asigna un nuevo nombre. La distribución congelada está durante algunos meses de prueba con actualizaciones continuas y congelaciones totales denominadas `ciclos de prueba (el reciente lanzamiento de Woody no incluía un enlace simbólico a la versión `congelada', por lo tanto ésta no era una distribución sino una etapa de desarrollo de la distribución `de prueba') En la distribución congelada se mantiene un registro de fallos que pueden retrasar la liberación de un paquete o de la distribución completa. Una vez que los fallos están por debajo de los valores máximos aceptables, la distribución congelada se transforma en la distribución estable, es liberada y la versión estable anterior se vuelve obsoleta (y se archiva). 2.1.7. Los nombres de versión de la distribución Debian ------------------------------------------------------- Los nombres de los directorios situados en el directorio `dists', tales como `woody' y `sarge', son simplemente los "nombres de versión". Cuando una distribución Debian se encuentra en la etapa de desarrollo, no tiene número de versión sino un "nombre de versión". El propósito de estos nombres es facilitar la replicación de la distribuciones Debian (si un directorio como `unstable' cambia de repente su nombre a `stable', sin ser necesario, se tendrían que descargar un montón de cosas nuevamente). Actualmente, `stable/' es un enlace simbólico a `woody' y `testing/' es un enlace simbólico a `sarge'. Esto significa que `Woody' es la distribución estable y `Sarge' la distribución de prueba actuales. `unstable' es un enlace simbólico permanente a `sid/', ya que Sid siempre es la distribución inestable. 2.1.8. Nombres de versión usados en el pasado --------------------------------------------- Nombres de versión que ya han sido usados: "Buzz" para la versión 1.1, "Rex" para la versión 1.2, "Bo" para la versión 1.3.x, "Hamm" para la versión 2.0, "Slink" para la versión 2.1, "Potato" para la versión 2.2, "Woody" para la versión 3.0, y "Sarge" para la versión 3.1. 2.1.9. El origen de los nombres de versión ------------------------------------------ Hasta aquí han sido tomados de la película _Toy Story_ de Pixar. * _Buzz_ (Buzz Lightyear) era el cosmonauta, * _Rex_ era el tiranosaurio, * _Bo_ (Bo Peep) era la niña que cuidaba la oveja, * _Hamm_ era el cerdito alcancía, * _Slink_ (Slinky Dog) era el perro de juguete, * _Potato_ era, por supuesto, el Sr. Potato, * _Woody_ era el vaquero. * _Sarge_ era el líder del ejército de plástico verde, * _Etch_ (Etch-a-Sketch) era el blackboard, * _Sid_ era el vecinito que destruyó los juguetes. 2.1.10. El directorio `pool' ---------------------------- Históricamente, los paquetes se guardaban en el subdirectorio `dists' correspondiente a una determinada distribución. Esto ocasionaba diversos problemas, como -por ejemplo- un gran consumo del ancho de banda de los sitios réplicas cuando se realizaban grandes cambios. Actualmente, los paquetes se guardan en un gran `depósito', estructurado según el nombre del paquete fuente. Para facilitar su uso, el depósito está subdividido en secciones (`main', `contrib' y `non-free') y por la primer letra del nombre del paquete fuente. Estos directorios contienen diversos archivos: los paquetes binarios para cada arquitectura y los paquetes fuentes a partir de los cuales se han generado los mismos. Puede averiguar el lugar donde se encuentra un paquete ejecutando el comando `apt-cache showsrc ' y leyendo la línea que dice `Directory:'. Por ejemplo, los paquetes de `apache' se encuentran en `pool/main/a/apache/'. Puesto que existen tantos paquetes `lib*' estos son tratado de una manera especial: por ejemplo, los paquetes `libpaper' se encuentran en `pool/main/libp/libpaper/'. Los directorios `dists' aún se siguen utilizando para los archivos índice usados por programas como `apt'. De todas maneras, al momento de escribir este doucmento, las distribuciones antiguas no han sido modificadas para usar estos 'depósitos' por lo que verá rutas que contienen nombres de distribuciones tales como `potato' o `woody' en el campo de cabecera "Directory". Normalmente, no se debe preocupar por nada de esto ya que la reciente `apt' y probablemente la antigua `dpkg-ftp' (véase Sección 2.3.1, `Métodos para actualizar un sistema Debian') se harán cargo en forma totalmente transparente. Si desea más información, consulte las RFC: implementación de las herramientas de paquetes (http://lists.debian.org/debian-devel-announce/2000/debian-devel-announce-200010/msg00007.html). 2.1.11. Algunas notas históricas sobre Sid ------------------------------------------ Cuando la actual Sid no existía, la organización del archivo Debian adolecía de un grave inconveniente: se suponía que cuando una arquitectura era creada en la rama `inestable', iba a ser liberada cuando la distribución se transformara en la nueva versión `estable'. Para muchas arquitecturas éste no era el caso con lo cual los correspondientes directorios debían desplazarse ante un nuevo lanzamiento. Esto no resultaba práctico ya que esta acción consumía ingentes cantidades de ancho de banda. Los administradores del archivo evitaron el problema durante muchos años ubicando los binarios de las arquitecturas no liberadas en un directorio especial llamado `sid'. Cerca del lanzamiento de estas arquitecturas se creaba un enlace entre la versión `estable' y `sid' y a partir de allí eran creadas dentro de la rama `inestable' de manera normal. Esta disposición era un tanto confusa para los usuarios. Con la llegada de los repositorios de paquetes (véase Sección 2.1.10, `El directorio `pool'') durante el desarrollo de la distribución Woody, los paquetes binarios comenzaron a guardarse en un lugar estándar del depósito, independientemente de la distribución, de modo que al liberar una distribución no se produciera un gran consumo de ancho de banda en los sitios réplica (existe, no obstante, un consumo gradual del ancho de banda durante el proceso de desarrollo). 2.1.12. Transferencias de paquetes en `incoming/' ------------------------------------------------- Los paquetes transferidos primero se ubican en http://incoming.debian.org/ luego de haber sido analizados para asegurar que realmente provienen de un desarrollador de Debian (y son ubicados en el subdirectorio `DELAYED' en el caso de una transferencia de una persona que no es encargada: Non-Maintainer Upload (NMU)). Una vez por día, se transladan de `incoming/' a `unstable/'. En una emergencia, si desea instalar paquetes desde `incoming/' antes de ir a `unstable/'. 2.1.13. Recuperando una paquete antiguo --------------------------------------- Mientra que las distribuciones de Debian más recientes se encuentran en el directorio `debian' de cada sitio réplica (http://www.debian.org/mirror/), los archivos de las antiguas distribuciones de Debian tales como Slink se guardan en http://archive.debian.org/ o en el directorio `debian-archive' de cada sitio réplica de Debian. Los paquetes antiguos de la rama `de prueba' e `inestable' se pueden localizar en http://snapshot.debian.net/. 2.1.14. Distintas arquitecturas ------------------------------- Dentro de cada uno de los árboles de directorios principales (`dists/stable/main', `dists/stable/contrib', `dists/stable/non-free', `dists/unstable/main/', etc.) las entradas de los paquetes binarios residen en subdirectorios cuyos nombres indican la arquitectura para la cual fueron compilados. * `binary-all/' para paquetes no dependen de la arquitectura. Aquí se incluyen, por ejemplo, scripts escritos en Perl o documentación. * `binary-/' para paquetes que se ejecutan en una plataforma determinada. Por favor, observe que los paquetes binarios para la versión `de prueba' y la versión `inestable' ya no residen en estos directorios sino en el directorio de nivel superior `pool'. No obstante, por cuestiones de compatibilidad hacia atrás se siguen conservando los archivos índice (`Packages' y `Packages.gz'). Para las arquitectura binarias actualmente soportadas, consulte las Release Notes de cada distribución. Se pueden ubicar en los sitios de Notas de versión para stable (http://www.debian.org/releases/stable/releasenotes) y testing (http://www.debian.org/releases/testing/releasenotes). 2.1.15. El código fuente ------------------------ En el sistema Debian se incluye el código fuente para todo. Por otra parte, los términos de la licencia de la mayoría de los programas del sistema _exigen_ que se distribuyan junto con su código fuente o que proporcionen una manera de obtenerlo. Normalmente el código fuente se distribuye a través de los directorios `source', que son paralelos a todos los directorios que contienen los binarios correspondiente a una arquitectura específica o, más recientemente, en el directorio `pool' (véase Sección 2.1.10, `El directorio `pool''). Para obtener el código fuente sin estar familiarizado con la estructura del archivo Debian, pruebe hacer `apt-get source '. Algunos paquetes, en especial `pine', se distribuyen únicamente como código fuente debido a las limitaciones impuestas por su licencia (hace poco se ha incluido el paquete `pine-tracker' para facilitar la instalación de Pine). El procedimiento descrito en Sección 6.4.10, `Portar un paquete a la rama `stable'' y Sección 13.9, `Creación de paquetes Debian' describe la manera de contruir un paquete en forma manual. Para los paquetes de los directorios "contrib" y "non-free", que formalmente no forman parte del sistema Debian, el código fuente puede o no estar disponible. 2.2. Sistema de administración de paquetes Debian ------------------------------------------------- 2.2.1. Repaso sobre los paquetes Debian --------------------------------------- Los paquetes contienen generalmente todos los archivos necesarios para implementar un conjunto de comandos relacionados o características. Existen dos tipos de paquetes Debian: * _Paquetes binarios_, que contienen ejecutables, archivos de configuración, páginas man/info, información sobre derechos de autor y otra documentación. Estos paquetes se distribuyen en un formato de archivo específico de Debian (véase Sección 2.2.2, `Formato de los paquetes Debian'); que se distinguen por tener a `.deb' como extensión de archivo. Los paquetes binarios se pueden desempaquetar usando la utilidad de Debian `dpkg'; se brindan más detalles en la página del manual. * _Paquetes fuentes_, que consisten en un archivo `.dsc' que describe el paquete (incluyendo el nombre de los archivos que siguen), un archivo `.orig.tar.gz' que contiene el código fuente original sin modificar en formato tar comprimido con gzip y, generalmente, un archivo `.diff.gz' que contiene los cambios del código fuente original específicos de Debian. La utilidad `dpkg-source' empaqueta y desempaqueta los archivos fuentes de Debian; se brindan más detalles en la página del manual. La instalación de software mediante el sistema de paquetes utiliza "dependencias" que fueron cuidadosamente concebidas por las personas a cargo de los paquetes. Estas dependencias están documentadas en el archivo `control' asociado a cada paquete. Por ejemplo, el paquete que contiene el compiladodr C GNU (`gcc') "depende" del paquete `binutils' que incluye el enlazador y ensamblador. Si un usario intenta instalar `gcc' sin haber previamente instalado `binutils', el sistema de administración de paquetes (dpkg) mostrará un mensaje de error diciendo que necesita también a `binutils' y abortará la instalación de `gcc' (no obstante, el usuario insistente puede hacer caso omiso, véase dpkg(8)) Para más detalles, véase Sección 2.2.8, `Dependencia entre paquetes' más abajo. Las herramientas de los paquetes de Debian se pueden usar para: * manipular y administrar paquetes o partes de paquetes, * ayudar al usuario a dividir paquetes que deben distribuirse a través de medios de tamaño limitado como, por ejemplo, disketes * asistir a los desarrolladores en la construcción de paquetes y * ayudar a los usuarios a instalar paquetes que se encuentran en sitios Debian remotos. 2.2.2. Formato de los paquetes Debian ------------------------------------- Un "paquete" Debian o un archivo Debian contiene los archivos ejecutables, bibliotecas y la documentación asociada con un programa particular o con un conjunto de programas relacionados. Normalmente, un archivo Debian tiene ua extensión de archivo que termina en `.deb'. La estructura interna del formato de paquetes binarios de Debian se describen en la página del manual deb(5). Puesto que el formato interno está sujeto a cambios (entre los lanzamientos principales de Debian), siempre utilice dpkg-deb(8) para manipular archivos `.deb'. [1] Los detalles internos de este formato de paquete binario de Debian se describen en la página del manual deb(5). Puesto que este formato está sujeto a cambios (entre los lanzamientos principales de Debian), siempre utilice dpkg-deb(8) para manipular archivos `.deb'. Por lo menos en la distribución Sarge, todos los archivos del repositorio de Debian son manipulables por los comandos estándar Unix `ar' y `tar', incluso cuando los comandos de `dpkg' no se encuentran disponibles. [1] El proyecto `debian-installer' introdujo paquetes con nombres que terminan en `.udeb'. En pocas palabras, es un formato micro-`.deb' que no necesita seguir estrictamente la política de Debian, carece de ciertos contenidos como, por ejemplo, documentación y está destinado a ser usado únicamente por el `debian-installer', el nuevo instalador de Debian que está siendo desarrollado para el lanzamiento de Sarge. El formato de archivo de `.deb' y `.udeb' son idénticos. El programa `udpkg' utilizado para manipular paquetes `.udeb' tiene una capacidad inferior que el estándar `dpkg' y soporta pocas relaciones entre paquetes. La diferencia en el nombre es debido a que los encargados del archivo de Debian no estaban contentos con los `.deb's del archivo que no seguían con la política de Debian, por lo que fue elegido un nombre diferente para acentuar esta diferencia y para hacer menos probable que la gente inconcientemente los instale en sistemas reales. Los `.udeb's son utilizados en el disco ram inicial durante la instalación base para crear únicamente un sistema Debian muy restringido. 2.2.3. Convención usada para designar a los paquetes Debian ----------------------------------------------------------- Los nombres de los paquetes Debian siguen la siguiente convención: _-.deb donde es el nombre del paquete. A modo de verificación, uno puede determinar el nombre del paquete asociado a un archivo Debian determinado (archivo `.deb') mediante una de las siguientes maneras: * consultar el archivo "Packages" del directorio del sitio Debian donde fue almacenado dicho archivo. Este archivo contiene una descripción de cada paquete; el primer campo de cada párrafo es el nombre formal del paquete. * usar el comando `dpkg --info .deb' (siendo y la versión y la revisión del paquete en cuestión, respectivamente). Esto muestra, entre otras cosas el nombre del paquete correspondiente al archivo desempaquetado. La parte indica el número de versión especificada por el desarrollador original. No hay un estándar que regule los números de versión, por lo tanto pueden tener formatos diferentes tales como "19990513" y "1.3.8pre1". La parte indica el número de revisión y es asignado por el desarrollador Debian (o por un usuario particular si decide crear el paquete por sí mismo). Este número corresponde al nivel de revisión del paquete Debian; de esta manera, un nivel de revisión nuevo implica generalmente cambios en el Makefile de Debian (`debian/rules'), en el archivo de control (`debian/control'), en los guiones de instalación y desinstalación (`debian/p*') o en los archivos de configuración utilizados por el paquete. 2.2.4. Preservando la configuración local ----------------------------------------- La preservación de los archivos configuración del usuario se activa a través del mecanismo "conffiles" de Debian. Los archivos de configuración del usuario (generalmente localizados en `/etc/') son especificados en el archivo `conffiles' del sistema de paquetes Debian. El sistema de administración de paquetes evita que estos archivos sean reescritos al actualizar un paquete. En lo posible configurar el sistema sin modificar los archivos que pertenecen a distintos paquetes Debian. También resulta generalmente una buena idea no modificarlos incluso si son archivos de configuración. Esto asegura que las operaciones de actualizaciones sean rápidas y sin problemas. Para determinar con exactitud qué archivos serán preservados durante una actualización, ejecute: dpkg --status package y consulte la línea "Conffiles:". Los detalles del contenido de un archivo `conffiles' son proporcionados por el Manual de Normativa de Debian, sección 11.7 (véase Sección 15.1, `Referencias'). 2.2.5. Scripts de mantenimiento de Debian ----------------------------------------- Los scripts de mantenimiento de Debian son scripts ejecutables que se ejecutan automáticamente antes o después de la instalación de un paquete. Todos estos archivos, junto con otro llamado `control', son parte de la sección "control" de un archivo Debian. Los archivos individuales son: preinst Este script se ejecuta antes que su paquete sea desempaquetado de su archivo Debian (`.deb'). Muchos scripts "preinst" detienen los servicios de los paquetes que están siendo actualizados hasta que la actualización o instalación de los mismos haya finalizado (luego de la ejecución exitosa del script "postinst"). postinst Generalmente este script completa la configuración requerida por un paquete una vez desempaquetado de su archivo Debian (`.deb'). A menudo, los scripts 'postinst' le piden al usuario ciertos datos y/o le advierte que si acepta los valores predeterminados deberá volver a reconfigurar el paquete cuando la situación lo requiera. Muchos scripts "postinst" a continuación ejecutan los comandos necesarios para reiniciar el servicio una vez que el paquete nuevo correspondiente haya sido instalado o actualizado. prerm Generalmente, este script detiene los demonios asociados a un paquete. Es ejecutado antes de la eliminación de los archivos relacionados con el mismo. postrm Generalmente, este script modifica los enlaces u otros archivos asociados a un paquete y/o elimina los archivos creados por él (véase, también Sección 2.2.7, `Paquetes virtuales'.) Actualmente, todos los archivos de control se pueden encontrar en el directorio `/var/lib/dpkg/info'. Los archivos asociados al paquete `loquesea' comienzan con la palabra "loquesea" y llevan las extensiones "preinst", "postinst", etc., según corresponda. El archivo `loquesea.list' de este directorio lista todos los archivos que fueron instalados con el paquete `loquesea' (obsérvese, que la ubicación de estos archivos es interno a `dpkg' y puede estar sujeto a cambios) 2.2.6. Prioridad de los paquetes -------------------------------- Los encargados de la distribución, asignan a cada paquete Debian una _prioridad_ para ayudar al sistema de administración de paquetes. Las prioridades son: * Los paquetes _requeridos_ son necesarios para el correcto funcionamiento del sistema. Esto incluye todas las herramientas necesarias para reparar inconvenientes en el sistema. Nunca debería eliminar estos paquetes ya que podría inutilizar su sistema e incluso podría ser incapaz de poder usar `dpkg' para recuperarlo. Los sistemas con únicamente con paquetes requeridos probablemente no sean utilizables, pero tienen la funcionalidad suficiente como para permitir al administrador del sistema arrancar e instalar más programas. * Los paquetes _Importantes_ son los que habitualmente se encuentran en cualquier sistema tipo Unix. Son otros paquetes sin los que el sistema no funcionará correctamente o no será totalmente utilizable. _No_ incluye a Emacs, a X11, a Tex o cualquier otra aplicación grande. Estos paquetes sólo constituyen la infraestructura básica. * Los paquetes _Estándar_ son aquellos que están en todo sistema Linux e incluyen un sistema en modo texto razonablemente pequeño pero no por eso demasiado limitado. Esto es lo que se intalará por defecto si el usuario no selecciona otra cosa más. No incluye aplicaciones demasiado grandes, pero incluye Emacs (que es más una parte de la infraestructura que una aplicación) y un subconjunto razonable de TeX y LaTeX (si resulta ser posible sin X). * Los paquetes _Opcionales_ incluye a todos los paquetes que probablemente desearía instalar incluso si no está familiarizados con ellos y no tiene requerimientos específicos. Esto incluye a X11, a la distribución completa de TeX y a un montón de aplicaciones. * Los paquetes _Extra_ son aquellos que entran en conflicto con otros de mayor importancia, y que carecen de utilidad para los usuarios que no están familiarizados con ellos, o que necesitan de requerimientos específicos como para incluirlos como "Opcionales". En la descripción del paquete nótese las diferencias entre "Prioridad: requerida", "Sección: base" y "Esencial: sí". "Sección: base" significa que el paquete se instalará antes que cualquier otro en un sistema nuevo. La mayoría de los paquetes de la "Sección: base" posee una "Prioridad requerida" o por lo menos una "Prioridad: importante" y muchos de ellos están marcados con la etiqueta "Esencial: sí". "Esencial: sí" significa que para que el sistema de administración de paquetes tal como `dpkg' pueda eliminarlo del mismo necesita de una opción extra para forzar su desinstalación. Por ejemplo, `libc6', `mawk' y `makedev' tienen una "Prioridad: requerida" y una "Sección: base" pero no llevan la etiqueta "Esencial: sí". 2.2.7. Paquetes virtuales ------------------------- Un paquete virtual es un nombre genérico que se le asigna a cualquier paquete de un grupo de paquetes que básicamente proporcionan la misma funcionalidad. Por ejemplo, tanto `tin' como `trn' son lectores de noticias y, por lo tanto, deberán satisfacer cualquier dependencia exigida por un programa que requiera de un lector de noticias a fin de que éste funcione correctamente o resulte útil. Se dice que ambos proporcionan el "paquete virtual" llamado `news-reader'. De manera similar, muchos paquetes tales como `exim', `exim4', `sendmail' y `postfix' proporcionan la funcionalidad de un agente de transporte de correo. Por lo tanto, se dice que proporcionan el mismo paquete virtual `mail transport agent'. Si se instala alguno de los dos, cualquier programa que dependa de la instalación de un agente de transporte de correo se ejecutará sin problemas debido a la existencia de este paquete virtual. Debian posee un mecanismo de modo que, si se instala en un sistema más de un paquete que proporciona el mismo paquete virtual, el administrador puede configurar uno de los dos como paquete preferido. El comando utilizado se llama `update-alternatives' y se describe mas adelante en Sección 6.5.3, `Comandos alternativos'. 2.2.8. Dependencia entre paquetes --------------------------------- El sistema de paquetes Debian tiene un rango de "dependencias" entre paquetes que fue concebido para señalar (mediante un simple indicador) el nivel en el que el Programa A puede operar en forma independiente de la existencia del Programa B en un sistema determinado: * El Paquete A _depende_ del Paquete B si B debe instalarse sí o sí para poder ejecutar A. En algunos casos A depende no sólo de B, sino de una versión específica de B. En este caso, la dependencia de versión constituye un límite inferior, es decir, A dependerá de cualquier versión de B más reciente que la versión especificada. * El Paquete A _recomienda_ al Paquete B si el encargado del mismo considera que la mayoría de los usuarios no querrán a A sin tener también la funcionalidad proporcionada por B. * El Paquete A _sugiere_ al Paquete B si B contiene archivos que están relacionados con (y generalmente mejoran) la funcionalidad de A. * El Paquete A _está en conflicto_ con el Paquete B cuando A no funciona si se instala B en el sistema. La mayoría de los casos, el conflicto surge cuando A contiene archivos que son mejoras de los de B. A menudo los "conflictos" están relacionados con "reemplazos". * El Paquete A _reemplaza_ el Paquete B cuando los archivos instalados por B se eliminan y (en algunos casos) se sobreescriben por los archivos de A. * El Paquete A _proporciona_ el Paquete B cuando todos los archivos y funcionalidad de B están incorporados en A. Este mecanismo brinda la posibilidad a los usuarios con poco espacio en disco obtener sólamente la parte de paquete A que realmente se necesita. Información más detallada sobre el uso de cada uno de estos términos se puede encontrar en el _Manual para la creación de paquetes_ y el _Manual de Normativa_. Obsérvese que `dselect' tiene un mayor control sobre los paquetes considerados como _recomendados_ y _sugeridos_ que `apt-get', el cual simplemente obtiene todos los paquetes considerados como _dependientes_ y deja todos los paquetes considerados como _recomendados_ y _sugeridos_. En sus versiones modernas ambos programas usan APT como interfaz. 2.2.9. Significado de Pre-depends --------------------------------- "Pre-depends" es una dependencia especial. En el caso de un paquete común y corriente, `dpkg' desempaquetará sus archivos (es decir, su archivo `.deb') estén o no en el sistema los archivos de los cuales dependen. Simplificando, desempaquetar significa que `dpkg' extraerá los archivos del archivo .deb que iba a ser instalado en el sistema y los coloca en su lugar. Si el paquete _depende_ de la existencia de otros paquetes en el sistema, `dpkg' se negará a completar la instalación (ejecutando su acción "configure") hasta que dichos paquetes sean instalados. No obstante, en el caso de algunos paquetes, `dpkg' se negará incluso a desempaquetarlos hasta que se resuelvan ciertas dependencias. Se dice que estos paquetes "pre-dependen" de la presencia de algún(algunos) otro(s) paquete(s). El proyecto Debian proporcionó este mecanismo para realizar actualizaciones del sistema seguras del formato `a.out' al formato `ELF' en donde el _orden_ en que se desempaquetaban los paquetes era crítica. Existen otras situaciones con actualizaciones masivas donde este método resulta útil, por ejemplo cuando los paquetes con prioridad "requerida" y su depencencia con libc. Nuevamente, información más detallada se puede encontrar en el _Manual de creación de Paquetes_. 2.2.10. Estado de un paquete ---------------------------- El estado de un paquete puede ser "unknown" (desconocido), "install" (para instalar), "remove" (para eliminar), "purge" (para purgar), o "hold" (en espera). Estas banderas indican lo que el usuario quiere hacer con un paquete (como viene indicado por las acciones del usuario en la sección "Select" de `dselect' o por la invocación directa de `dpkg' por parte del mismo). Significados: * _unknown_ (desconocido) - el usuario nunca indicó si deseaba el paquete. * _install_ (para instalar) - el usuario desea instalar o actualizar el paquete. * _remove_ (para eliminar) - el usuario desea eliminar el paquete pero no sus archivos de configuración ya existentes. * _purge_ (para purgar) - el usuario desea eliminar completamente el paquete incluyendo sus archivos de configuración. * _hold_ (para conservar) - el usuario no desea que el paquete sea procesado, es decir, quiere conservar la versión actual con su estado independientemente de cual sea. 2.2.11. Evitando la actualización de un paquete ----------------------------------------------- Existen dos mecanismos para evitar la actualización de un paquete, mediante `dpkg' o, comenzando con Woody, mediante APT. Con `dpkg', exporte primero la lista de las selecciones de paquetes: dpkg --get-selections > A continuación, edite el archivo resultante `', cambiando la línea que contiene el paquete que se desea conservar, por ejemplo `libc6', de: libc6 install a: libc6 hold Guárdelo y actualice la base de datos de `dpkg' haciendo: dpkg --set-selections O, si conoce el nombre del paquete que desea conservar, simplemente escriba: echo libc6 hold | dpkg --set-selections Este proceso conserva los paquetes durante el proceso de instalación de cada paquete. El mismo efecto se puede obtener mediante `dselect'. Simplemente entre a la pantalla [S]elect, busque el paquete cuyo estado desea conservar y presione la tecla `=' (o la tecla `H'). Los cambios se producirán inmediatamente al salir de la pantalla. En la distribución Woody el sistema a APT pose un mecanismo nuevo alternativo para conservar paquetes durante el proceso de obtención de archivos .deb usando `Pin-Priority'. Véase la página del manual apt_preferences(5) junto con http://www.debian.org/doc/manuals/apt-howto/ o el paquete `apt-howto'. Sección 6.2.8, `Repaso de `/etc/apt/preferences'' también contiene una breve explicación. 2.2.12. Paquetes fuente ----------------------- Los paquetes fuente se distribuyen en un directorio denominado `source' y se pueden descargar manualmente o usar apt-get source loquesea para conseguirlos (consulte la página del manual apt-get(8) para saber cómo configurar APT para que haga esto). 2.2.13. Construir un paquete binario a partir de un paquete fuente ------------------------------------------------------------------ Para un paquete `loquesea', necesitará los archivos `loquesea_*.dsc', `loquesea_*.tar.gz' y `loquesea_*.diff.gz' para compilar los fuentes (observación: para un paquete Debian nativo el paquete `.diff.gz' no existe). Una vez que los tiene a todos, y si tiene instalado el paquete `dpkg-dev' , el comando dpkg-source -x .dsc extraerá el paquete en un directorio llamado `'. Ejecutar el siguiente comando para construir el paquete binario: $ cd loquesea-version $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc Finalmente haga, # su -c "dpkg -i ../.deb" para instalar el paquete recientemente construido. Véase Sección 6.4.10, `Portar un paquete a la rama `stable''. 2.2.14. Creando paquetes Debian nuevos -------------------------------------- Para una información más detallada, consulte la Guía para Nuevos Encargados de Paquetes de Debian disponible en el paquete `maint-guide' o en http://www.debian.org/doc/manuals/maint-guide/. 2.3. Actualizando un sistema Debian ----------------------------------- Uno de los objetivos de Debian es proporcionar una manera de actualizar el sistema en forma consistente y segura. Siempre hacemos todo lo posible para que una nueva versión se pueda actualizar fácilmente a partir de las anteriores. Durante el proceso de actualización, los paquetes alertan a los usuarios sobre posibles inconvenientes y a menudo proporcionan una solución al posible problema. También debería leer las Release Notes, el documento que describe los detalles sobre actualizaciones específicas, que acompañan a todos los CDs de Debian y disponibles en la WWW en http://www.debian.org/releases/stable/releasenotes o http://www.debian.org/releases/testing/releasenotes. En Capítulo 6, `Administración de paquetes Debian' se proporciona una guía práctica sobre actualizaciones. Esta sección describe los detalles básicos. 2.3.1. Métodos para actualizar un sistema Debian ------------------------------------------------ Uno podría simplemente ejecutar un FTP anónimo o una llamada a `wget' a un repositorio Debian, recorrer los distintos directorios hasta encontrar el archivo deseado, obtenerlo y, finalmente, instalarlo usando `dpkg'. Obsérvese que `dpkg' instalará los archivos de actualización en el momento, incluso en un sistema andando. A veces, no obstante, la versión nueva de un paquete requerirá de la versión nueva de otros en cuyo caso la instalación no tendrá éxito hasta/salvo que se instalen dichos paquetes. Mucha gente encuentra que este enfoque insume gran cantidad de tiempo, ya que Debian evoluciona muy rápidamente ---en general, cada semana se agregan una docena o más de paquetes nuevos. Este número es más grande justo antes de la salida de una nueva versión. Para poder hacer frente a esta avalancha, muchas personas prefieren usar un programa automatizado. Para este fin, existen diversas herramientas de administración de paquetes especializadas. 2.3.2. Repaso de las herramientas de administración de paquetes --------------------------------------------------------------- El sistema de administración de paquetes Debian tiene dos objetivos: la manipulación del propio paquete y la obtención de los archivos del paquete desde un repositorio Debian. `dpkg' realiza la primer tarea, APT y `dselect' la segunda. 2.3.3. `dpkg' ------------- Este es el programa principal para manipular los archivos de un paquete ; consulte dpkg(8) para una descripción completa. `dpkg' viene acompañado con diversos programas suplementarios primitivos. * `dpkg-deb': Manipula los archivos `.deb'. dpkg-deb(1) * `dpkg-ftp': un antiguo comando para la obtención de paquetes. dpkg-ftp(1) * `dpkg-mountable': un antiguo comando para la obtención de paquetes. dpkg-mountable(1) * `dpkg-split': divide un paquete grande en archivos más pequeños. dpkg-split(1) `dpkg-ftp' y `dpkg-mountable' han quedado obsoletos luego de la introducción del sistema APT. 2.3.4. APT ---------- APT (Advanced Packaging Tool) es una interfaz avanzada del sistema de paquetes de Debian que consiste en diversos programas cuyos nombres generalmente comienzan con "apt-". `apt-get', `apt-cache' y `apt-cdrom' son herramientas de la línea de comandos para el manejo de paquetes. Estos también funcionan como frontales de usuario para otras herramientas tales como `dselect' y `aptitude'. Para más información, instale el paquete `apt' y lea apt-get(8), apt-cache(8), apt-cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody) y `/usr/share/doc/apt/guide.html/index.html'. Una fuente alternativa de información es el APT HOWTO (http://www.debian.org/doc/manuals/apt-howto/). Éste se puede instalar mediante `apt-howto' en `/usr/share/doc/apt-howto/en/apt-howto-en.html/index.html'. `apt-get upgrade' y `apt-get dist-upgrade' tienden a obtener todos los paquetes situados bajo "Dependen:" y descarta todos los paquetes listados en "Recomendados:" y "Sugeridos:". Para evitar esto, use `dselect'. 2.3.5. `dselect' ---------------- Este programa es una interfaz de usuario con menús para el sistema de administración de paquetes Debian. Particularmente resulta útil para las primeras instalaciones y actualizaciones a gran escala. Véase Sección 6.2.3, ``dselect''. Para más información, instale el paquete `install-doc' y lea `/usr/share/doc/install-doc/dselect-beginner.en.html' o Documentación dselect para principiantes (http://www.debian.org/releases/woody/i386/dselect-beginner). 2.3.6. Actualizando un sistema en funcionamiento ------------------------------------------------ El kernel (el sistema de archivos) en los sistemas Debian admite el reemplazo de archivos incluso cuando están siendo usados. Asimismo se cuenta con un programa llamado `start-stop-daemon' que se utiliza para arrancar demonios en tiempo de arranque o para detenerlos cuando se cambian el nivel de ejecución del kernel (por ejemplo, de modo multiusuario a monousuario, para detener el sistema, etc.). Los scripts de instalación utilizan el mismo programa cuando se instala un nuevo paquete que contenga un demonio para detener los demonios en ejecución y rearrancarlos si fuese necesario. Obsérvese que Debian no exige usar el modo monousuario para actualizar el sistema en funcionamiento. 2.3.7. Archivos `.deb' descargados y en caché --------------------------------------------- Si ha descargado manualmente los paquetes a su disco (lo cual no es en absoluto necesario, véase arriba para la descripción de `dpkg-ftp' o APT), entonces después de haber instalados puede eliminarlos de su sistema. Si utiliza APT, los archivos se guardan en el caché situado en el directorio `/var/cache/apt/archives'. Tras la instalación puede eliminarlos (`apt-get clean') o copiarlos al directorio `/var/cache/apt/archives' de otra máquina para economizar el tiempo de descarga para instalaciones posteriores. 2.3.8. Mantener un registro de las actualizaciones -------------------------------------------------- `dpkg' mantiene un registro de los paquetes que han sido desempaquetados, configurados, eliminados y/o purgados pero (hasta el momento) no mantiene un registro de la actividad del terminal que tiene lugar cuando el paquete está siendo manipulado. La manera más sencilla de superar este inconveniente consiste en ejecutar las sesiones de `dpkg', `dselect', `apt-get', etc., con el programa script(1). 2.4. El proceso de arranque de Debian ------------------------------------- 2.4.1. El programa `init' ------------------------- Al igual que todos los sistemas Unix, Debian arranca ejecutando el programa `init'. El archivo de configuración de `init' (que es el `/etc/inittab') indica que el primer script que se debe ejecutar es el `/etc/init.d/rcS'. Lo que ocurre a continuación depende de si se encuentra instalado el paquete `sysv-rc' o el `file-rc'. A continuación, supondremos que se encuentra instalado el paquete `sysv-rc' (`file-rc' contiene su propio script `/etc/init.d/rcS' y utiliza un archivo en vez de enlaces simbólicos en los directorios rc para controlar qué servicios se inician en los diferentes niveles de ejecución) El archivo `/etc/init.d/rcS' del paquete `sysv-rc' ejecuta todos los scripts situados en `/etc/rcS.d/' para realizar inicializaciones tales como la comprobación y montaje de los sistemas de archivos, la carga de módulos, la inicialización de los servicios de red, la configuración del reloj, etc. Luego, y por compatibilidad, también ejecuta todos los archivos (excepto aquellos con un `.' en su nombre) situados en `/etc/rc.boot/'. Este último directorio está reservado para el administrador del sistema y su utilización ha caído en desuso. Véase Sección 9.1, `Trucos para la inicialización del sistema' y el Sistema de niveles de ejecución y scripts init.d (http://www.debian.org/doc/debian-policy/ch-opersys#s-sysvinit) en el Manual de Normativa de Debian para más información. Debian no utiliza el directorio `rc.local' del tipo BSD. 2.4.2. Niveles de ejecución --------------------------- Luego de completar el proceso de arranque, `init' inicia todos los servicios que han sido configurados para ejecutarse en el nivel de ejecución predeterminado. Este último viene indicado por una entrada `id' en el `/etc/inittab'. Debian viene con `id=2'. Debian utiliza 7 niveles de ejecución: * 0 (apagar el sistema), * 1 (modo monousuario), * 2 al 5 (diversos modos multiusuario) y * 6 (reiniciar el sistema). Tambien puede utilizarse los niveles de ejecución 7, 8 y 9 pero sus directorios rc no se van llenando a medida que son instalados los paquetes. Cambie los niveles de ejecución utilizando el comando `telinit'. Si está instalado el paquete `sysv-rc' entonces para entrar al nivel de ejecución predeterminado se ejecutan todos los scripts de inicio situados en `/etc/rc.d/' (donde es el nivel de ejecución predeterminado). Los scripts situados en `/etc/rc.d' son, de hecho, enlaces simbólicos que apuntan a los scripts ubicados en `/etc/init.d/'. No obstante, la primera letra del nombre del enlace simbólico determina la _manera_ en que se ejecuta el script de `/etc/init.d/'. Para ser más precisos, antes de entrar a cualquier nivel de ejecución, se ejecutan todos los scripts que comienzan con `K'; estos scripts detienen servicios. Luego se ejecutan todos los scripts que comienzan con `S'; estos scripts inician servicios. Los números de dos dígitos que preceden a `K' o a `S' determinan el orden en que se ejecutarán los scripts: aquellos con las numeraciones más bajas se ejecutarán primero. Este enfoque funciona porque cada script de `/etc/init.d/' toma un argumento "start" o "stop" y actúa en consecuencia. Cada script también acepta "restart" y "force-reload"; estos métodos se pueden utilizar para reiniciar los servicios una vez que haya sido arrancado el sistema o forzarlos para que vuelvan a cargar sus archivos de configuración. Por ejemplo: # /etc/init.d/exim4 force-reload 2.4.3. Personalizando el proceso de arranque -------------------------------------------- Supongamos que desea añadir el servicio `loquesea' al conjunto de aquellos servicios que fueron iniciados tras el arranque. Siga los siguientes pasos: 1. Instale el script init `/etc/init.d/loquesea'. 2. Ejecute `update-rc.d' con los argumentos adecuados. 2.5. En apoyo a la diversidad ----------------------------- Debian ofrece diversas alternativas para satisfacer los deseos del administrador del sistema sin dañar al sistema. * `dpkg-divert', véase Sección 6.5.1, `El comando `dpkg-divert''. * `equivs', véase Sección 6.5.2, `El paquete `equivs''. * `update-alternative', véase Sección 6.5.3, `Comandos alternativos'. * `make-kpkg' puede alojar distintos cargadores de arranque. Véase make-kpkg(1). Cualquier archivo situado en `/usr/local/' pertenece al administrador del sistema y Debian no los va a tocar. La mayoría los archivos situados en `/etc/' son `conffiles' (archivos de configuración) y Debian no los sobreescribirá durante una actualización salvo que el administrador del sistema los solicite en forma explícita. 2.6. Internacionalización ------------------------- El sistema Debian se encuentra internacionalizado y provee soporte para la visualización y entrada de caracteres en diversos idiomas, tanto en la consola como en X. Diversos, documentos, páginas del manual y mensajes del sistema han sido traducidos en un número creciente de idiomas. Durante la instalación, Debian le pide al usuario elegir el idioma de instalación ( y a veces una variante local del idioma) Si el sistema que ha instalado no soporta todas las características que necesita de su idioma, si necesita cambiar de idioma o instalar un teclado diferente que soporte su idioma, consulte Sección 9.7, `Localización y soporte de idiomas'. 2.7. Debian y el kernel ----------------------- Véase Capítulo 7, `El kernel de Linux en Debian'. 2.7.1. Compilando un kernel desde un fuente no perteneciente a Debian --------------------------------------------------------------------- Uno tiene que comprender la política de Debian en relación a las cabeceras. Las bibliotecacs C de Debian se construyen con las versiones más reciente de las cabeceras del _kernel_ de la rama _estable_. Por ejemplo, la versión Debian-1.2 usaba la versión 5.4.13 de las cabeceras. Esta práctica contrasta con los paquetes fuentes del kernel de Linux distribuidos por todos los sitios de archivos FTP de Linux que usan incluso versiones más recientes de las cabeceras. Los archivos de cabecera del kernel distribuidos con los fuentes del mismo están ubicados en `/usr/include/linux/include/'. Si necesita compilar un programa con las cabeceras del kernel que son más nuevas que las proporcionadas por `libc6-dev' debe incluir al compilar `-I/usr/src/linux/include/' en la línea de comando. Esto me ocurrió una vez con el empaquetado del demonio automounter (`amd'). Cuando los nuevos núcleos cambiaron algunos detalles internos relacionados con el NFS, `amd' necesitaba saber de ellos. Esto me obligó a incluir las cabeceras de los últimos núcleos. 2.7.2. Herramientas para crear núcleos personalizados ----------------------------------------------------- A los usuarios que desean (o deben) crear un núcleo personalizado se les recomienda descargar el paquete `kernel-package'. Este paquete contiene el script para crear el paquete del kernel y proporciona la posibilidad de crear un paquete Debian kernel-image ejecutando el comando # make-kpkg kernel_image en el directorio principal de los fuentes del kernel. La ayuda disponible se obtiene ejecutando el comando # make-kpkg --help o mediante la página del manual make-kpkg(8). y Capítulo 7, `El kernel de Linux en Debian'. Los usuarios deben descargar por cuenta propia el código fuente más reciente del núcleo (o del núcleo de su preferencia) de su sitio Linux favorito a menos que se encuentre disponible un paquete kernel-source- (donde hace referencia a la versión del kernel). El script de arranque `initrd' de Debian requiere de un parche especial para el kernel llamado `initrd'; véase http://bugs.debian.org/149236. En el archivo `/usr/doc/kernel-package/README' se dan instrucciones detalladas para el uso del paquete `kernel-package'. 2.7.3. Cargadores de arranque alternativos ------------------------------------------ Para usar cargadores de arranque alternativos tales como `grub' o `loadlin', copie el kernel de Linux compilado `bzimage' a otras ubicaciones (por ejemplo, a `/boot/grub' o a una partición MS-DOS). 2.7.4. Discos de arranque personalizados ---------------------------------------- La tarea de crear discos de arranque personalizados se vió grandemente facilitada por el paquete Debian `boot-floppies' que solía estar en la en la sección `admin' del archivo FTP Debian para Potato y versiones anteriores. Los scripts de shell de este paquete crean discos de arranque en formato `syslinux'. Se tratan de discos formateados en MS-DOS cuyos sectores de arranque han sido alterados de modo de poder arrancar Linux directamente (o cualquier otro sistema operativo que haya sido definido en el archivo `syslinux.cfg' del disquete). Otros scripts de este paquete crean discos de arranque de emergencia e incluso crean los discos básicos. Encontrará más información sobre esto en el archivo `/usr/doc/boot-floppies/README' luego de instalar el paquete `boot-floppies'. 2.7.5. Cuidados especiales para tratar con módulos -------------------------------------------------- El paquete `modconf' de Debian proporciona un script de shell (`/usr/sbin/modconf') que se puede usar para personalizar la configuración de los módulos. Este script presenta una interfaz basada en menús en donde el usuario puede elegir los distintos controladores de dispositivos que se pueden cargar en el sistema. Las respuestas se utilizan para personalizar el archivo `/etc/modules.conf' (que contiene los alias y demás argumentos que se deben usar para los diferentes módulos) gracias a los archivos `/etc/modutils/' y `/etc/modules' (que contiene los módulos que se deben cargar durante el arranque). Al igual que los archivos (nuevos) `Configure.help' que ahora están disponibles para admitir la construcción de núcleos personalizados, el paquete `modconf' package viene con una serie de archivos de ayuda (en `/usr/share/modconf/') que proporcionan información detallada sobre los argumentos apropiados para cada uno de los módulos. Véase Sección 7.2, `El kernel modular 2.4' para algunos ejemplos. 2.7.6. Desinstalando el paquete de un kernel antiguo ---------------------------------------------------- El script `kernel-image-.prerm' comprueba si el kernel que está actualmente ejecutando es el mismo que el que está intentando desinstalar. Por lo tanto, puede eliminar de manera segura los núcleos que no desea seguir usando con el siguiente comando: # dpkg --purge --force-remove-essential kernel-image- (obviamente, hay que reemplazar por el número de versión y revisión de su kernel) ------------------------------------------------------------------------------- 3. Consejos para la instalación de un sistema Debian ---------------------------------------------------- La documentación oficial para instalar Debian se encuentra en http://www.debian.org/releases/stable/ y http://www.debian.org/releases/stable/installmanual. Las versiones de desarrollo se encuentran en http://www.debian.org/releases/testing/ y http://www.debian.org/releases/testing/installmanual (en preparación, a veces puede no existir). Aunque este capítulo fue escrito durante la época del instalador Potato, la mayoría de su contenido ha sido actualizado para el instalador Woody. Ambos instaladores son muy similares. Puesto que Sarge utilizará un instalador totalmente diferente, por favor considere lo siguiente como punto referencia para el instalador Sarge. Asimismo algunos paquetes claves han cambiado su nombre y prioridades. Por ejemplo, el MTA predeterminado de Sarge es `exim4' en vez de `exim' y ha sido incluido `coreutils' para reemplazar diversos paquetes. Puede que necesite realizar algunas modificaciones. 3.1. Consejos generales para la instalación de un sistema Linux --------------------------------------------------------------- No se olvide visitar http://www.debian.org/CD/netinst/ si está buscado la imagen del instalador Debian en CD. Utilizar la versión `de prueba' o `inestable' de Debian conlleva el riesgo creciente de encontrarse con fallos graves. Esto puede evitarse, creando un esquema multi-arranque con versiones más estables de Debian, o utilizando un truco interesante proporcionado por `chroot' en la versión más estable como se explica en Sección 8.6.34, ``chroot''. Esta última opción nos permitirá ejecutar diferentes versiones de Debian simultáneamente en diferentes consolas. 3.1.1. Fundamentos sobre la compatibilidad del hardware ------------------------------------------------------- Linux es compatible con la mayoría del hardware de PC y se puede instalar en prácticamente cualquier sistema. Para mí, fue tan fácil como instalar Windows 95/98/Me. La lista de compatibilidad de hardware parece que no deja de crecer. Si posee una PC portátil, consulte Linux on Laptops (http://www.linux-laptop.net/) para consejos sobre instalación según marca y modelo. Mi recomendación para el hardware de una PC de escritorio es: "simplemente sea conservador": * SCSI en vez de IDE para trabajar, disco duro IDE/ATAPI para uso personal. * CD-ROM IDE/ATAPI CD-ROM (o CD-RW). * PCI en vez de ISA, en especial para las tarjetas de red (NIC). * Use un NIC económico. Tulip para PCI, NE2000 para ISA es suficiente. * Evite PCMCIA (portátiles) en su primera instalación de Linux. * No utilice teclados o ratones USB ... a menos que le gusten los desafíos. Si posee una máquina lenta, extraer el disco duro y conectarlo a otra máquina más rápida para la instalación es muy buena idea. 3.1.2. Determinando el hardware del PC -------------------------------------- Durante la instalación, se le pedirá que identifique el hardware o chipset del PC. A menudo, esta información no resulta fácil de encontrar. Veamos un método 1. Abra el gabinete de su PC y mire su interior. 2. Anote los números de los chips más grandes de la tarjeta de video, la tarjeta de red, los chips situados cerca de los puertos seriales y puertos IDE. 3. Anote los nombres impresos en la parte posterior de las tarjetas PCI e ISA. 3.1.3. Determinando el hardware del PC mediante Debian ------------------------------------------------------ En un sistema Linux, los siguientes comandos deberían brindarle cierta idea sobre su hardware actual y su configuración. $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices Estos comandos se pueden ejecutar durante el proceso de instalación desde la pantalla de la consola presionando Alt-F2. Finalizada la primer etapa de instalación e instalando los paquetes opcionales `pciutils', `usbutils' y `lshw', puede obtener información más detallada del sistema: $ lspci -v |pager $ lsusb -v |pager # lshw |pager Usos típico de las interrupciones: * IRQ0: salida del temporizador (reloj del sistema)(8254) * IRQ1: controlador del teclado * IRQ2: cascada para IRQ8--IRQ15 en una PC-AT * IRQ3: puerto serie secundario (io-port=0x2F8) (`/dev/ttyS1') * IRQ4: puerto serie primario (io-port=0x3F8) (`/dev/ttyS0') * IRQ5: libre [tarjeta de sonido (SB16: io-port=0x220, DMA-low=1, DMA-high=5)] * IRQ6: controlador de la disquetera (io-port=0x3F0) (`/dev/fd0', `/dev/fd1') * IRQ7: puerto paralelo (io-port=0x378) (`/dev/lp0') * IRQ8: rtc * IRQ9: interrupción por software (int 0x0A), se redirige a IRQ2 * IRQ10: libre [interfaz de la tarjeta de red (NE2000: io-port=0x300)] * IRQ11: libre [(SB16-SCSI: io-port=0x340, SB16-IDE: io-port=0x1E8,0x3EE)] * IRQ12: ratón PS/2 * IRQ13: libre (era el coprocesador matématico 80287) * IRQ14: controlador IDE primario (`/dev/hda', `/dev/hdb') * IRQ15: controlador IDE secundario (`/dev/hdc', `/dev/hdd') Para antiguas tarjeta ISA que no son del tipo PnP puede que desee configurar IRQ5, IRQ10 y IRQ11 como no-PnP desde la BIOS. Para los dispositivos USB, las clases de dispositivos se encuentran en `/proc/bus/usb/devices' como `Cls=': * Cls=00 : Sin usar * Cls=01 : Audio (parlante, etc.) * Cls=02 : Comunicación (MODEM, NIC, ...) * Cls=03 : HID (Human Interface Device: teclado, ratón, palanca de juegos) * Cls=07 : Impresora * Cls=08 : Almacenamiento (disquetera, lectora CD/DVD, disco duro, Flash, ...) * Cls=09 : Hub (hub USB) * Cls=255 : Específico del vendedor Si la clase del dispositivo es diferente a 255, Linux lo soporta. 3.1.4. Determinando el hardware del PC mediante otros SOs --------------------------------------------------------- La información de hardware se puede también obtener mediante mediante otros SOs: Instale otra distribución Linux comercial. La detección de hardware suele ser mejor que en Debian por el momento (esta situación debería cambiar una vez `debian-installer' forme parte de Sarge). Instale Windows. La configuración del hardware se puede obtener pulsando con el botón derecho del ratón sobre "Mi PC" yendo a Propiedades / Administración de Dispositivos. Anote toda la información disponible, tales como IRQ, direcciones de los puertos de E/S y DMA. Algunas tarjetas ISA antiguas puede necesitar ser configuradas en DOS y usadas en consecuencia. 3.1.5. El mito sobre Lilo ------------------------- "Lilo está limitado a los 1024 cilindros." ¡ INCORRECTO ! El nuevo `lilo' que se usa a partir de Debian Potato tiene soporte lba32. Si la BIOS de su placa madre es lo suficientemente reciente para admitir lba32, `lilo' debería ser capaz de cargarse más allá de la antigua limitación de los 1024 cilindros. Sólo asegúrese de añadir una línea que diga "lba32" en algún lugar cerca del comienzo de su archivo `lilo.conf' si conserva una versión antigua de él. Véase `/usr/share/doc/lilo/Manual.txt.gz' 3.1.6. GRUB ----------- El nuevo cargador `grub' del projecto Hurd GNU se puede instalar en un sistema Woody Debian: # apt-get update # apt-get install grub-doc # mc /usr/share/doc/grub-doc/html/ ... lea los contenidos # apt-get install grub # pager /usr/share/doc/grub/README.Debian ... léalo :) Para modificar el menú de GRUB, edite `/boot/grub/menu.lst'. Véase Sección 8.1.6, `Configurando los parámetros de arranque (GRUB)' para ver cómo configurar los parámetros de arranque durante el proceso de arranque ya que es ligeramente diferente al de la configuración de `lilo'. 3.1.7. Elección de los discos de arranque ----------------------------------------- Para Potato, preferí el conjunto de discos IDEPCI para una instalación normal en una PC de escritorio. Para Woody, prefiero el conjunto de discos bf2.4. Ambos utilizan una versión `boot-floppies' para crear los discos de arranque. Si posee una tarjeta de red PCMCIA, necesita usar el conjunto de discos del arranque estándar (el conjunto más grande de disketes pero con todos los módulos de controladores disponibles) y configurar el NIC en el diálogo PCMCIA; no intente configurarla en el diálogo de configuración de la red estándar. Para sistemas especiales, puede que necesite crear un disco de arranque personalizado. Esto puede realizarse reemplazando la imagen del kernel denominado "linux" en el disco de rescate de Debian por otra imagen del kernel comprimida, compilada en otro lugar de la máquina. Los detalles se encuentran documentados en el archivo `readme.txt' del disco de rescate. El disco de rescate utiliza el sistema de archivos MS-DOS, de modo que puede usar cualquier sistema para leerlo y editarlo. Esto debería facilitar las cosas a las personas con una tarjeta de red particular, etc. Para Sarge, se espera que `debian-installer' y/o `pgi' se usen para crear los disketes de arranque. 3.1.8. Instalación ------------------ Siga las instrucciones oficiales que se encuentran en http://www.debian.org/releases/stable/installmanual o http://www.debian.org/releases/testing/installmanual (en preparación, a veces puede no existir). Si está instalando un sistema usando los `discos de arranque' de la distribución `de prueba', puede que necesite abrir un terminal en la consola durante el proceso de instalación presionando `Alt-F2' y editar manualmente `/etc/apt/sources.list' para reemplazar las entradas "stable" por "testing" para ajustar las fuentes de APT. Tengo la costumbre de instalar `lilo' en lugares como `/dev/hda3', teniendo el `mbr' en `/dev/hda'. Esto minimiza el riesgo de la sobreescritura de la información de arranque. Veamos lo que elegí durante el proceso de instalación. * MD5 passwords "yes" * shadow passwords "yes" * Instalación "advanced" (dselect **) y en la selección * Excluir emacs (si está seleccionado), nvi, tex, telnet, talk(d); * Incluir mc, vim y nano-tiny o elvis-tiny. Véase Sección 6.2.3, ``dselect''. Aún si es un fanático de Emacs, evítelo por el momento y confórmese con nano durante la instalación. Asimismo evite instalar paquetes grandes como TeX en esta etapa (Potato lo hacía). Véase Sección 11.2, `Editores de rescate' para conocer la razón de instalar nano-tiny o elvis-tiny. * A todas las preguntas de configuración = "y" (reemplazar el actual) durante cada diálogo de instalación de cada paquete. * `exim': seleccioné 2 por máquina ya que envío correo mediante el servidor SMTP de mi ISP. Para más información sobre dselect, véase Sección 6.2.3, ``dselect''. 3.1.9. Máquinas IP para usar en una LAN --------------------------------------- Ejemplo de configuración de una LAN (subred Ct: 192.168.1.0/24): Internet | +--- ISP externo brinda servicio POP (que se accede mediante fetchmail) | Punto de acceso al ISP que brinda servicio DHCP y retransmición SMTP | : Cable módem (Conexión telefónica) | : Puerto externo de la puerta de enlace de la LAN: eth0 (IP dado por el DHCP del ISP) utilice una PC portátil antigua (IBM Thinkpad, 486 DX2 50 MHz, 20 MB RAM) ejecute el kernel 2.4 de Linux con sistema de archivos ext3. ejecute el paquete "ipmasq" (con protección, NAT y firewall) ejecute el paquete "dhcp-client" configurado para eth0 (no tiene en cuenta la configuración DNS) ejecute el paquete "dhcp" configurado para eth1 ejecute "exim" como smarthost (modo 2) ejecute "fetchmail" con un intervalo largo (fallback) ejecute "bind" como servidor de nombres en caché para Internet desde la LAN como servidor de nombres oficial para el dominio de la red local ejecute "ssh" en el pueto 22 y 8080 (conexiones de cualquier lugar) ejecutar "squid" como servidor caché para el archivo Debian (para APT) Puerto interno de la puerta de enlace de la LAN: eth1 (IP = 192.168.1.1, fija) | +--Conector para LAN (100 base T)---+ | | Algunos clientes de la LAN con IP fija Algunos clientes DHCP de la LAN (IP = 192.168.1.2-127, fija) (IP = 192.168.1.128-200, dinámica) Véase Capítulo 10, `Configuración de la red' para detalles de cómo configurar una puerta de enlace de una LAN. Véase Sección 10.12, `Configurando una puerta de enlace' para detalles de cómo configurar el servidor encaminador de una LAN. 3.1.10. Cuentas de usuarios --------------------------- A fin de lograr una organización coherente entre todas las máquinas, en mi sistema las primeras cuentas son siempre las mismas. Siempre creo una primer cuenta de usario con un nombre como "admin" (uid=1000). Reenvío todos los mensajes del superusuario a ella. Esta cuenta pertenece al grupo `adm' (véase Sección 9.2.2, `"Por qué el `su' GNU no soporta el grupo `wheel'"'), al que puede darse una buena cantidad de privilegios de superusuario mediante el comando `su' usando PAM o con `sudo'. Véase Sección 4.2.2, `Añadir una cuenta de usuario' para más detalles. 3.1.11. Creando sistema de archivos ----------------------------------- 3.1.11.1. Partición del disco duro ---------------------------------- Prefiero usar diferentes particiones para distintos árboles de directorios para limitar el daño luego de un cuelgue del sistema. Por ejemplo, / == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ con X /usr/local == 100MB El tamaño del directorio `/usr' depende sustancialmente de las aplicaciones X Window y de la documentación. `/usr/' puede ser de unos 300MB si se ejecuta un sólo terminal en la consola, mientras que 2GB--3GB no es un tamaño inusual si se tienen instaladas diversas aplicaciones Gnome. Cuando `/usr/' crece demasiado, mover el directorio `/usr/share/' a otra partición es la cura más efectiva. Con los núcleos 2.4 de Linux preempaquetados, `/' puede requerir de más de 200MB. Por ejemplo, el estado actual de mi puerta de enlace Internet es el siguiente (salida del comando `df -h'): Filesystem Size Used Avail Use% Montado en /dev/hda3 300M 106M 179M 38% / /dev/hda7 100M 12M 82M 13% /home /dev/hda8 596M 53M 513M 10% /var /dev/hda6 100M 834k 94M 1% /var/lib/cvs /dev/hda9 596M 222M 343M 40% /usr /dev/hda10 596M 130M 436M 23% /var/cache/apt/archives /dev/hda11 1.5G 204M 1.2G 14% /var/spool/squid (El gran espacio destinado a `/var/spool/squid' es para el caché de un proxy para la descarga de paquetes) A continuación se muestra la salida de `fdisk -l' que proporciona una idea de la estructura de la partición: # fdisk -l /dev/hda # comentario /dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # (sin usar) /dev/hda3 * 85 126 317520 83 Linux # Principal /dev/hda4 127 629 3802680 5 Extended /dev/hda5 127 143 128488+ 82 Linux swap /dev/hda6 144 157 105808+ 83 Linux /dev/hda7 158 171 105808+ 83 Linux /dev/hda8 172 253 619888+ 83 Linux /dev/hda9 254 335 619888+ 83 Linux /dev/hda10 336 417 619888+ 83 Linux /dev/hda11 418 629 1602688+ 83 Linux Existen algunas pocas particiones sin uso. Éstas están para instalar una segunda distribución de Linux o como espacio para los árboles de directorios en expansión. 3.1.11.2. Montar los sistemas de archivos ----------------------------------------- El montaje correcto de los sistemas de archivos anteriores se lleva a cabo mediante `/etc/fstab': # /etc/fstab: static file system information. # # sistema de punto de tipo opciones dump pass # archivos montaje /dev/hda3 / ext2 defaults,errors=remount-ro 0 1 /dev/hda5 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 # # mantener particiones separadas /dev/hda7 /home ext2 rw 0 2 /dev/hda8 /var ext2 rw 0 2 /dev/hda6 /var/lib/cvs ext2 rw 0 2 /dev/hda9 /usr ext2 rw 0 2 /dev/hda10 /var/cache/apt/archives ext2 rw 0 2 # una partición bien grande para el caché del proxy /dev/hda11 /var/spool/squid ext2 rw 0 2 # respaldo DOS arrancable /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # respaldo Linux arrancable (sin hacer) /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # montajes nfs mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0 goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0 # minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2 Para NFS, utilizo `noauto,intr' combinado con la opción predeterminada `hard'. De esta manera, es posible detener un proceso bloqueado por una desconexión usando Ctrl-C. Para una máquina Windows conectada con Samba (smbfs), `rw,auto,soft,intr' puede ser una buena idea. Véase Sección 3.5, `Configuración de Samba'. Para una disquetera, usar `noauto,rw,sync,user,exec' para preevenir la corrupción de datos tras eyectar el diskette en forma accidental antes de desmontarlo. Esto ralentiza el proceso de escritura. 3.1.11.3. Montaje autofs ------------------------ Puntos claves para el montaje automático: * Cargue el módulo `vfat' para permitir que `/etc/auto.misc' contenga `-fstype=auto': # modprobe vfat # antes de intentar acceder al diskete ... o para automatizar esta configuración, # echo "vfat" >> /etc/modules ... y reinicie el sistema. * Escriba en el archivo `/etc/auto.misc' lo siguiente: floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... donde gid=100 es "users". * Cree los enlaces `cdrom' y `floppy' en `/home/' que apunten a `/var/autofs/misc/cdrom' y `/var/autofs/misc/floppy' respectivamente. * Añada al grupo "users". 3.1.11.4. Montaje NFS --------------------- El servidor Linux NFS externo (goofy) se encuentra detrás de un firewall (puerta de enlace). Tengo una política de seguridad bastante laxa en mi LAN ya que soy el único usuario. Para activar el acceso NFS, del lado del servidor es necesario añadir lo siguiente al `/etc/exports': # /etc/exports: la lista de control de acceso para los sistemas de # archivos que se puede exportar a los clientes NFS. Véase(5). / (rw,no_root_squash) Esto se necesita para activar el servidor NFS además de instalar y activar los paquetes cliente y servidor NFS. Por sencillez, generalmente creo una única partición de 2GB para una instalación experimental o secundaria de Linux. Opcialmente comparto las particiones de intercambio y `/tmp' para estas instalaciones. El esquema de particiones múltiples es demasiado complicado para estos usos. Si se necesita un sistema sencillo de consola, 500MB puede ser más que suficiente. 3.1.12. Lineamientos para la memoria DRAM ----------------------------------------- A continuación se da a grandes rasgos indicaciones para la DRAM. 4 MB: Mínimo suficiente para hacer funcionar el kernel de Linux. 16 MB: Mínimo para un uso razonable de un sistema en modo consola. 32 MB: Mínimo para un sistema X sencillo. 64 MB: Mínimo para un sistema X con GNOME/KDE. 128 MB: Comfortable para un sistema X system con GNOME/KDE. 256 MB (o más): ¿Por qué no disponer de ella? La memoria DRAM es económica. Usando la opción de arranque `mem=4m' (o en lilo `append="mem=4m"') le mostrará como se comportaría el sistema con 4Mb de memoria instalada. Para un sistema con más de 64Mb de memoria con una BIOS antigua es necesario un parámetro de arranque para lilo. 3.1.13. Espacio de intercambio ------------------------------ Uso las siguientes directrices para el espacio de intercambio: * Cada partición de intercambio es < 128 MB (para un núcleo 2.0 antiguo), < 2 GB (para núcleos recientes) * Total = o bien 1 a 2 veces la RAM instalada o 128 MB para 2 GB * Asígnelas en diferentes unidades y móntelas a todas con las opciones `sw,pri=1' en el `/etc/fstab'. Esto asegura que el kernel haga RAID por bandas en las particiones de intercambio y posibilita el máximo rendimiento de las mismas. * En lo posible utilice una porción central del disco duro. Incluso si nunca lo necesita, es conveniente contar con cierto espacio de intercambio (128MB) ya que el sistema se ralentizará antes que se cuelge debido a un programa que le falte memoria. 3.2. Configuración del bash --------------------------- Modifiqué los scripts de inicio del intérprete de comandos en todo el sistema de acuerdo con mis preferencias: /etc/bash.bashrc Reemplazar con una personalizada /etc/profile Conservar la que acompaña a lai distibución ( \w -> \W) /etc/skel/.bashrc Reemplazar con una copia privada /etc/skel/.profile Reemplazar con una copia privada /etc/skel/.bash_profile Reemplazar con una copia privada ~/.bashrc Reemplazar con una copia privada para todas las cuentas ~/.profile Reemplazar con una copia privada para todas las cuentas ~/.bash_profile Reemplazar con una copia privada para todas las cuentas See details in my example scripts (http://www.debian.org/doc/manuals/debian-reference/examples/). Me gusta un sistema transparente, por lo tanto fijé `umask' en 002 o 022. `PATH' viene determinado por los siguientes archivos de configuración en este orden: /etc/login.defs - antes que el intérprete de comandos fije PATH /etc/profile (puede llamar a /etc/bash.bashrc) ~/.bash_profile (puede llamar a ~/.bashrc) 3.3. Configuración del ratón ---------------------------- 3.3.1. Ratón PS/2 ----------------- En el caso de un ratón con conector PS/2 en una placa madre ATX, el flujo de señales sería: mouse -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X En este caso, se crea un enlace simbólico `/dev/mouse' que apunta a `/dev/gpmdata' para dejar conforme a algunas utilidades de configuración y permitir su fácil reconfiguración. (si después de todo no decide usar el demonio `gpm', simplemente apunte el enlace simbólico `/dev/mouse' a `/dev/psaux' luego de haver eliminado el demonio `gpm'.) Este flujo de señales permite al teclado y al ratón ser desconectados y reinicializados lanzando `gpm' tras la reconexión. ¡X permanecerá activa! El protocolo del flujo de señales entre la salida de `gpm' y la entrada de X se puede implementar de alguna de estas dos maneras, como "ms3" (protocolo de los ratones seriales de Microsoft de 3 botones) o como "raw" ( protocolo del ratón conectado) y esta elección impone la elección del protocolo usado en la configuración de X. Veamos a continuación algunos ejemplos de configuración para un ratón PS/2 Logitech de tres botones (ratón tipo UNIX tradicional). Si es uno de los desafortunados cuya tarjeta gráfica no está soportada por la nueva X4 y necesita usar la antigua X3 (algunas tarjetas de 64 bits ATI), instale los paquetes X3 y configure `/etc/X11/X86Config' en vez de `/etc/X11/X86Config-4' en los siguientes ejemplos. 3.3.1.1. Usando el protocolo ms3 -------------------------------- /etc/gpm.conf | /etc/X11/X86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=ms3 | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IntelliMouse" | EndSection Si se utiliza este enfoque, el ajuste del tipo de ratón se realiza simplemente editando el archivo `gpm.conf' y la configuración X se deja sin modificar. Véase my example scripts (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.3.1.2. Usando el protocolo raw -------------------------------- /etc/gpm.conf | /etc/X11/X86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "MouseManPlusPS/2" | EndSection Si se utiliza este enfoque, el ajuste del tipo de ratón se realiza editando el archivo `gpm.conf' y ajustando la configuración de X. 3.3.1.3. Cómo adaptar los diferentes ratones -------------------------------------------- Se supone que el tipo de dispositivo `autops2' de `gpm' autodetecterá la mayoría de los ratones PS/2 del mercado. Lamentablemente no siempre funciona y no se encuentra disponible en versiones anteriores a Woody. En estos casos intentar usar `ps2' o `imps2' en el archivo `gpm.conf' en vez de `autops2'. Para ver los tipos de ratones que reconoce `gpm' escriba: `gpm -t help'. Véase gpm(8). Si se utiliza un ratón PS/2 de dos botones, configure el protocolo X para activar `Emulate3Buttons'. La diferencia de protocolo entre un ratón de 2 botones y otro de 3 botones, es detectado y ajustado automáticamente por `gpm' luego de pulsar una sola vez el botón central. Para el protocolo X con Sección 3.3.1.2, `Usando el protocolo raw' o sin `gpm', use: * `IntelliMouse': puerto serial (repetidor `gpm' con "ms3") * `PS/2': puerto PS/2 (siempre pruebe este primero) * `IMPS/2': cualquier puerto PS/2 (2, 3, or scroll mice, better) * `MouseManPlusPS/2': puerto PS/2 Logitech * `...' Véase más en Mouse Support in XFree86 (http://www.xfree86.org/current/mouse.html). En el caso de los ratones de rueda estándar de Microsoft, se ha informado que funcionan mejor con: /etc/gpm.conf | /etc/X11/X86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Para algunas PC portátiles Toshiba, el activar `gpm' antes de PCMCIA en el script de inicio System-V puede ayudar a prevenir cuelgues del sistema. Extraño pero cierto. 3.3.2. USB mice --------------- Make sure you have all required kernel functions activated through kernel compile time configuration or modules: * Under "Input core support": * "Input core support" (CONFIG_INPUT, `input.o'), * "Mouse support" (CONFIG_INPUT_MOUSEDEV, `mousedev.o'), * Under "USB support": * "Support for USB" (CONFIG_USB, `usbcore.o'), * "Preliminary USB device filesystem" (CONFIG_USB_DEVICEFS), * "UHCI" or "OHCI" (CONFIG_USB_UHCI || CONFIG_USB_UHCI_ALT || CONFIG_USB_OHCI, `usb-uhci.o' || `uhci.o' || `usb-ohci.o'), * "USB Human Interface Device (full HID) support" (CONFIG_USB_HID, `hid.o'), and * "HID input layer support" (CONFIG_USB_HIDINPUT) Here, lower case names are module names. Si no está usando devfs, cree un nodo de dispositivo con `/dev/input/mice' major 13 y minor 63 de la siguiente manera: # cd /dev # mkdir input # mknod input/mice c 13 63 Para un ratón _USB_ típico de tres botones, la configuración podría ser: /etc/gpm.conf | /etc/X11/X86Config-4 =========================+====================================== device=/dev/input/mice | Section "InputDevice" responsiveness= | Identifier "Generic Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "SendCoreEvents" "true" append="" | Option "Device" "/dev/input/mice" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Véase Linux USB Project (http://www.linux-usb.org/) para más información 3.3.3. Touch pad ---------------- Aunque el comportamiento predeterminado del touch pad en una computadora portátil emula un ratón PS/2 de dos botones, el paquete `tpconfig' permite el control absoluto del dispositivo. Por ejemplo, incluyendo `OPTIONS="--tapmode=0"' en `/etc/default/tpconfig' desactivará el comportamiento molesto de "pulsar mediante un golpecito". Configure el `/etc/gpm.conf' de la siguiente manera para usar tanto el touch pad como el control USB externo en la consola: device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate= 3.4. Configuración NFS ---------------------- Configurar NFS en `/etc/exports'. # apt-get install nfs-kernel-server # echo "/ *.domainname-for-lan-hosts(rw,no_root_squash,nohide)" \ >> /etc/exports Véase mi script de ejemplo para más detalles (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.5. Configuración de Samba --------------------------- Referencias: * http://www.samba.org/ * paquete `samba-doc' Configurando Samba en modo "share" resulta más fácil ya que crea unidades compartidas de tipo WfW. Pero es conveniente configurarlo en modo "user". Samba se puede configurar mediante `debconf' o `vi': # dpkg-reconfigure --priority= samba # en Woody # vi /etc/samba/smb.conf Véase mi script de ejemplo para más detalles (http://www.debian.org/doc/manuals/debian-reference/examples/). Añadir un nuevo usuario al archivo smbpasswd puede hacerse mediante `smbpasswd': $su -c "smbpasswd -a nombre_usuario" Para una compatibilidad óptima, asegúrese de usar contraseñas encriptadas. Elija `el nivel del SO' según el siguiente sistema de equivalencias (cuanto más grande es el número, mayor es la prioridad del servidor): 0: Samba con poca potencia (nunca se convertirá en un navegador principal) 1: Wfw 3.1, Win95, Win98, Win/me? 16: Win NT WS 3.51 17: Win NT WS 4.0 32: Win NT SVR 3.51 33: Win NT SVR 4.0 255: Samba con mucha potencia Asegúrese que los usuarios sean miembros del grupo propietario del directorio que brinda acceso compartido y que el bit de ejecución del directorio esté activado. 3.6. Configuración de la impresora ---------------------------------- El método tradicional es mediante `lpr'/`lpd'. Existe un nuevo sistema CUPS(TM) (Common UNIX Printing System). PDQ constituye otro enfoque. Consulte el Linux Printing HOWTO (http://www.tldp.org/HOWTO/Printing-HOWTO.html) para más información. 3.6.1. `lpr'/`lpd' ------------------ Para los spoolers `lpr'/`lpd' (`lpr', `lprng' y `gnulpr'), configure el archivo `/etc/printcap' de la siguiente manera si están conectados a una impresora PostScript o de texto: |:\ :sd=/var/spool/lpd/:\ :mx#0:\ :sh:\ :lp=/dev/lp0: Significado de las líneas anteriores: * Cabecera: --- nombre de la cola, = alias * mx#0 --- tamaño máximo del archivo ilimitado * sh --- supresión de la impresión de la primera página de cabecera * lp=/dev/lp0 --- dispositivo de impresión local o port@host para impresión remota Esto es una buena configuración si está conectado a una impresora PostScript. Asimismo, cuando imprima desde una máquina Windows mediante Samba, resulta ser una buena configuración para cualquier impresora compatible Windows (comunicación bidireccional no soportada). Debe seleccionar la correspondiente configuración de la impresora bajo Windows. Si no posee una impresora PostScript, necesitará configurar un sistema de filtros usando `gs'. Existe diversas herramientas de configuración automáticas para configurar el archivo `/etc/printcap'. Cualquiera de estas combinaciones resulta ser una opción: * `gnulpr', (`lpr-ppd') y `printtool' --- El que utilizo. * `lpr' y `apsfilter' * `lpr' y `magicfilter' * `lprng' y `lprngtool' * `lprng' y `apsfilter' * `lprng' y `magicfilter' Para ejecutar herramientas de configuración gráficas, tales como `printtool', véase Sección 9.4.11, `Adquirir privilegios de superusuario en X' para adquirir derechos de superusuario. Las impresoras creadas con `printtool' usan `gs' y se comportan como impresoras PostScript. Por lo tando al acceder a ellas, utilizan los controladores de impresora PostScript. En lo referente a Windows, la "Apple LaserWriter" es el estándar. 3.6.2. CUPS(TM) --------------- Instale el Common UNIX Printing System (o CUPS(TM)): # apt-get install cupsys cupsys-bsd cupsys-client cupsys-driver-gimpprint # apt-get install foomatic-db-engine foomatic-db-hpijs # apt-get install foomatic-filters-ppds foomatic-gui Luego configure el sistema usando un navegador web: $ http://localhost:631 Por ejemplo, para añadir una impresora en algún puerto usando la lista de impresoras accesibles: * Pulse "Printers" (Impresoras) en la página principal y, a continuación "Add Printer" (Añadir impresora), * escriba "root" como usuario e ingrese su contraseña, * proceda a añadir la impresora siguiendo los indicaciones, * vuelva a la página "Printers" y pulse "Configure Printer" (Configurar impresora) y * proceda a configurar el tamaño del papel, la resolución y otros parámetros. Véase más información en http://localhost:631/documentation.html y http://www.cups.org/cups-help.html. Para el kernel 2.4, ver también Sección 7.2.6, `Soporte puerto paralelo'. 3.7. Otros consejos de instalación ---------------------------------- 3.7.1. Instalación adicional de paquetes ---------------------------------------- Una vez llegado hasta este punto, posee un sistema Debian pequeño pero funcional. Es tiempo de instalar paquetes más grandes. * Ejecute `tasksel'. Veáse Sección 6.2.1, `Instalación de con `tasksel''. Si los necesita, puede elegir los siguientes paquetes: * Usuario final --- sistema X window * Desarrollo --- C y C++ * Desarrollo --- Python * Desarrollo --- Tcl/Tk * Otros --- entorno TeX/LaTeX * Para el resto --- prefiero usar `tasksel' como guía mirando en e instalarlos selectivamente mediante `dselect'. * Ejecute `dselect'. Aquí, lo primero que puede querer hacer es elegir su editor favorito y todos los programas que necesita. Puede instalar diversas variantes de Emacs al mismo tiempo. Véase Sección 6.2.3, ``dselect'' y Sección 11.1, `Editores populares'. También puede reemplazar algunos paquetes predeterminados por otros con más opciones. * lynx-ssh (en vez de lynx) * ... * ... Generalmente edito `/etc/inittab' para apagar con facilidad mi máquina. ... # Qué hacer al presionar CTRL-ALT-DEL ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now ... 3.7.2. Módulos -------------- Los módulos para los controladores de dispositivos se configuran durante la instalación inicial. `modconf' proporciona una interfaz con menús para la configuración posterior de los módulos. Este programa resulta bastante útil cuando se olvida incluir algunos módulos durante la instalación inicial o se instala un nuevo kernel después de realizar la misma. Todos los módulos a cargar se encuentran en el archivo `/etc/modules'. También utilizo `lsmod' y `depmod' para controlarlos manualmente. Asimismo, asegúrese añadir algunas líneas en el `/etc/modules' para administrar el enmascaramiento ip (ftp, etc.) para núcleos 2.4. Véase Sección 7.2, `El kernel modular 2.4' y, en especial, Sección 7.2.3, `Funciones de Red'. 3.7.3. Configuración básica de una grabadora de CDs --------------------------------------------------- Edite los siguientes archivos: /etc/lilo.conf (agregue append="hdc=ide-scsi ignore=hdc", y ejecute lilo para la activación) /dev/cdrom (enlace simbólico # cd /dev; ln -sf scd0 cdrom) /etc/modules (añada "ide-scsi" y "sg". Después de esto "sr" si se necesita.) Véase Sección 9.3, `Grabadora de CDs' para más detalles. 3.7.4. Gran cantidad de memoria y apagado automático ---------------------------------------------------- Edite el `/etc/lilo.conf' de la siguiente manera para grandes cantidades de memoria (para núcleos 2.2) y apagado automático (para apm): append="mem=128M apm=on apm=power-off noapic" Ejecutar `lilo' para reconocer la nueva configuración. `apm=power-off' es necesario para un núcleo SMP y `noapic' es necesario para minimizar los efectos de mi hardware defectuoso. Lo mismo se puede hacer directamente escribiendo las opciones en el indicador de arranque. Véase Sección 8.1.5, `Otros trucos con el indicador de arranque'. Si apm fue compilado como módulo, como ocurre con los núcleos predeterminados 2.4 de Debian, ejecute `# insmod apm power_off=1' después del arranque o configure `/etc/modules' haciendo: # echo "apm power_off=1" >>/etc/modules En forma alternativa, el compilar el soporte ACPI permite alcanzar el mismo objetivo con los núcleos nuevos y para ser más compatible con SMP (esto requiere de una placa madre nueva). El núcleo 2.4 en placas madre deberían detectar grandes cantidades de memoria correctamente. CONFIG_PM=y CONFIG_ACPI=y ... CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m y añada las siguientes líneas en `/etc/modules' respetando el orden: ospm_busmgr ospm_system O recompile el núcleo con todas las opciones anteriores en "y". En cualquier caso, con ACPI no se necesita ninguno de los parámetros del indicador de arranque. 3.7.5. Problemas extraños al acceder a ciertos sitios de Internet ----------------------------------------------------------------- Por defecto, los núcleos recientes de Linux activan ECN, que puede ocasionar problemas de acceso en algunos sitios web situados detrás de un enrutador mal configurado. Para verificar el estado del ECN: # cat /proc/sys/net/ipv4/tcp_ecn ... o # sysctl net.ipv4.tcp_ecn Para desactivarlo, haga: # echo "0" > /proc/sys/net/ipv4/tcp_ecn ... o # sysctl -w net.ipv4.tcp_ecn=0 Para desactivar TCP ECN en cada arranque, edite `/etc/sysctl.conf' y añada: net.ipv4.tcp_ecn = 0 3.7.6. Configuración de una conexión telefónica con PPP ------------------------------------------------------- Instale el paquete `pppconfig' para configurar un acceso telefónico mediante PPP. # apt-get install pppconfig # pppconfig ... siga las indicaciones para configurar PPP # adduser dip ... permite al acceder a Internet mediante PPP El acceso PPP puede ser iniciado por el usuario (): $ pon # inicia el acceso PPP a su ISP ... disfrute Internet $ poff # detiene el acceso PPP, el es opcional Véase `/usr/share/doc/ppp/README.Debian.gz' para más detalles. En forma alternativa, se puede usar el paquete `wvdial' para configurar el acceso telefónico mediante PPP. Todos los marcadores usan el demonio `pppd' que inicia los programas situados en `/etc/ppp/ip-up.d/' o `/etc/ppp/ip-down.d/' tras la conexión o desconexión. Esto se utiliza para obtener y enviar mensajes de correo. 3.7.7. Otros archivos de configuración files para modificar en `/etc' --------------------------------------------------------------------- Puede que quiera añadir un archivo `/etc/cron.deny' que falta en la instalación estándar de Debian (puede copiar `/etc/at.deny'). ------------------------------------------------------------------------------- 4. Tutoriales de Debian ----------------------- Esta sección proporciona una orientación al mundo Linux para aquellos que son realmente novatos. Si ya hace tiempo que usa Linux, considérelo como un repaso. 4.1. Fuentes de información --------------------------- Visite el Proyecto de Documentación Debian (DDP) (http://www.debian.org/doc/) que tiene las referencias más importantes sobre Debian. Muchos de estos documentos se encuentran instalados en `/usr/share/doc/'. También consulte `/usr/share/doc-base/' que proporcionan enlaces a los documentos del sistema. Añada `export CDPATH=.:/usr/share/doc:/usr/src/local' al `~/.bash_profile' para un acceso más cómodo a los directorios de documentación. El Proyecto de documentación Linux (LDP) (http://www.tldp.org/) tiene las referencias más importantes sobre Linux en general. Los contenidos del LDP usualmente están instalados en `/usr/share/doc/HOWTO/'. Navegue por los documentos en forma local y en ftps remotos con la tecla `F9' del Midnight Commander (véase Sección 4.3, `Midnight Commander (MC)'). 4.2. La consola Linux --------------------- 4.2.1. Entrando al sistema -------------------------- En un sistema Linux existen 6 seudo-terminales independientes. Se puede pasar de una a otra presionando simultáneamente la tecla `Alt-izq' con la tecla `F1' - `F6'. Cada seudo-terminal permite el ingreso al sistema en forma independiente a diferentes cuentas. El sistema multi-usuario es una gran característca de los sistemas Unix y resulta muy adictiva. En Unix se considera un buen hábito acceder al sistema como usuario normal para realizar la mayoría de las tareas. Debo reconocer que, por pereza, utilizo la cuenta del superusuario (root) más de lo necesario. Generalmente utilizo una cuenta normal con los comandos `sudo', `super' o `su -c' para obtener accesos limitados de root. 4.2.2. Añadir una cuenta de usuario ----------------------------------- Tras la instalación del sistema, añada un cuenta de usuario normal. Si el nombre de usuario es "penguin", # adduser penguin creará dicha cuenta. Utilice el comando `vigr' para editar el `/etc/group' de la siguiente manera: src:x:40:admin, debian, ... staff:x:50:admin ... Utilizo el grupo `staff' para usuarios que hacen tareas administrativas y tienen el privilegio exclusivo de `su' (véase Sección 9.2.2, `"Por qué el `su' GNU no soporta el grupo `wheel'"') y `src' para CVS (véase Sección 12.1, `Sistema de versiones concurrentes (CVS)'). En la instalación predeterminada del sistema, el grupo `staff' poseé el directorio `/home', de modo que sus miembros pueden estar a cargo de las cuentas de usuario, mientras que el grupo `src' posée el directorio `/usr/src', que se utiliza para compilar el kernel, etc. Consulte `adduser', `addgroup', `vipw', `vipw -s', `vigr' y `vigr -s' para configurar correctamente a usuarios y grupos. 4.2.3. Cómo apagar el sistema ----------------------------- Al igual que muchos sistemas operativos modernos donde los archivos son almacenados en memoria, Linux necesita apagarse correctamentes antes de poder cortar el suministro eléctrico sin ningún peligro. Veamos el comando para el modo multiusuario: # shutdown -h now Y el siguiente para el modo monousuario: # poweroff -i -f Espere a que aparezca el mensaje "System halted" y a continuación apague la máquina. Si apm está habilitado tanto en la BIOS como en Linux, el sistema se apagará por sí solo. Véase Sección 3.7.4, `Gran cantidad de memoria y apagado automático' para más detalles. 4.2.4. Edición en línea de comandos ----------------------------------- El intérprete de comandos por defecto, `bash' tiene la capacidad de navegar por el histórico de comandos. Simplemente utilize la tecla flecha-arriba para entrar en él. Otras combinaciones de teclas importantes para tener en cuenta: Ctrl-C: Finaliza un programa Ctrl-D: Finaliza una entrada Ctrl-S: Detiene la salida por pantalla Ctrl-Q: Reactiva la salida por pantalla Ctrl-Alt-Supr: Reinicia/apaga el sistema (véase /etc/inittab) Lt-pulsar-y-arrastrar-ratón: Selecciona y copia al portapapeles (gpm) Ctrl-pulsar-ratón: Pega el contenido del portapapeles en el lugar donde se encuentra el cursor (gpm) En una consola Linux tipo únicamente funcionan correctamente las teclas `Ctrl' y `Alt' situadas a la izquierda del teclado. 4.2.5. Comandos básicos que se deben tener presente --------------------------------------------------- Los siguientes son comandos básicos de Unix: ls, ls -al, ls -d, pwd, cd, cd ~user, cd -, cat /etc/passwd, less, bg, fg, kill, killall, uname -a, type nombre_comando, sync, netstat, ping, traceroute, top, vi, ps aux, tar, zcat, grep, ifconfig, ... Averigüe su significado escribiendo el comando, usando `man' o `info' seguidos por el nombre del comando. En Linux, muchos comandos muestran una breve ayuda informativa si se los invoca de una de las siguientes maneras: $ nombre_comando --help $ nombre_comando -h `whatis _nombre_comando_' brinda una resumen de cualquier comando del sistema que tenga una entrada en el manual. 4.2.6. Sistema X Window ----------------------- Para iniciar el Sistema X Window desde la consola: # exec startx Pulsando con el botón derecho del ratón sobre la ventana raíz aparecerá un menú desplegable. 4.2.7. Combinaciones de teclas habituales ----------------------------------------- Algunas combinaciones de teclas importantes para tener en cuenta cuando se está en la consola de Linux: Alt-F1/F6: Para cambiar a otra seudo-terminal Ctrl-Alt-F1/ F6: Para cambiar a otra seudo-terminal (desde X-Window, DOSEMU, etc.) Alt-F7: Para volver a X-Window Ctrl-Alt-menos: Cambiar la resolución de la pantalla en X-Window Ctrl-Alt-más: Cambiar la resolución de la pantalla en X-Window en sentido opuesto Ctrl-Alt-Retroceso: Finalizar X-Window Alt-X, Alt-C, Alt-V: En algunos programas como en 'Netscape Composer', las combinaciones de teclas usadas con Ctrl utilizados en Windows/Mac para Cortar, Copiar y Pegar se reemplazan por las mismas combinaciones pero usando la tecla Alt. 4.3. Midnight Commander (MC) ---------------------------- Midnight Commander (MC) es la "navaja suiza" GNU para la consola de Linux y otros entornos de terminales. 4.3.1. Instalar MC ------------------ # apt-get install mc A continuación añada la siguiente función al `~/.bashrc' (o al `/etc/bash.bashrc' que es llamado desde el `.bashrc'). mc () { mkdir -p ~/.mc/tmp 2> /dev/null chmod 700 ~/.mc/tmp MC=~/.mc/tmp/mc-$$ /usr/bin/mc -P "$@" > "$MC" cd "$(cat $MC)" rm -f "$MC" unset MC; } Al salir, esto habilita al MC a cambiar al directorio de trabajo. Si utiliza una terminal como `kon' o `Kterm' para el idioma japonés que emplea determinados caracteres gráficos el agregar la opción `-a' a la línea de comando del MC puede ayudar a evitar problemas. 4.3.2. Iniciar MC ----------------- $ mc MC se encarga de todas las operaciones con archivos mediante menús requiriendo de un mínimo esfuerzo por parte del usuario. 4.3.3. Administrador de archivos -------------------------------- Por defecto, se tienen dos paneles con el listado de archivos de un directorio. Otro modo útil consiste en configurar la ventana derecha para que muestre toda la información referente a los archivos: permisos, tamaño, etc. Los siguientes son algunas teclas esenciales. Con el demonio `gpm' ejecutándose es posible también usar el ratón. Asegúrese de presionar la tecla Mayús para cortar y pegar en el MC. * `F1': Menú de ayuda * `F3': Visor de archivos interno * `F4': Editor interno * `F9': Activar menú desplegable * `F10': Salir del Midnight Commander * `Tab': Moverse entre las dos ventanas * `Insert': Marcar archivo para operaciones con múltiples archivos * `Supr': Borrar archivo (sea cuidadoso---configure MC para el modo de borrado seguro) * Teclas de desplazamiento: No necesita explicación alguna 4.3.4. Trucos para la línea de comandos: ---------------------------------------- * Cualquier comando `cd' cambiará el directorio mostrado en los paneles. * `Control-Enter' o `Alt-Enter' copiará el nombre de un archivo en la línea del comandos. Utilice este atajo con los comandos `cp' o `mv'. * `Alt-Tab' cumple el mismo rol que la tecla TAB en el shell. * Se puede especificar el directorio inicial para ambas ventanas ingresándolos como argumentos del MC; por ejemplo, `mc /etc /root'. * `Esc' + == `Fn' (es decir, `Esc' + `1' = `F1,' etc.; `Esc' + `0' = `F10)' * Tecla `Esc' == tecla `Alt' (= `Meta', `M-'); es decir, escriba `Esc' + `c' para `Alt-c' 4.3.5. Editor ------------- El editor interno sigue un esquema de cortar-y-pegar muy interesante. Con `F3' se marca el comienzo de una selección, un segundo `F3' marca el fin de la misma y resalta el área elegida. A continuación se puede mover el cursor. Si pulsa `F6' el área seleccionada se ubicará donde está el cursor. Presionando `F5' el área se copiará e insertará en dicha posición. `F2' grabará el archivo. Con `F10' se sale del editor. La mayoría de las teclas de desplazamiento funcionan en forma intuitiva. Este editor se puede iniciar directamente junto con un archivo: $ mc -e nombre_archivo_a_editar $ mcedit nombre_archivo_a_editar Si bien no se trata de un editor multiventana se pueden usar múltiples consolas Linux para lograr el mismo efecto. Para copiar entre ventanas, utilice las teclas `Alt-Fn' para alternar entre las consolas virtuales y use "Archivo->Insertar archivo" o "Archivo->Copiar a archivo" para mover una porción de un archivo en otro archivo. El editor interno se puede reemplazar por cualquier editor externo de su preferencia. Asimismo, muchos programas usan las variables de entorno `EDITOR' o `VISUAL' para decidir qué editor usar. Si no se siente cómodo con vim, iguale estas variables a `mcedit' añadiendo las siguientes líneas al `~/.bashrc': ... export EDITOR=mcedit export VISUAL=mcedit ... En lo posible, es recomendable dejarlas en `vim'. Acostumbrarse con los comandos de vi(m) es proceder de forma correcta pués es un editor de uso habitual en el mundo Linux/Unix. 4.3.6. Visor ------------ Es un visor muy sofisticado. Es una excelente herramienta para buscar palabras en un documento. Siempre lo uso para los archivos del directorio `/usr/share/doc'. Esta es la manera más rápida de navegar por la inmensa cantidad de información de Linux. Este visor se puede arrancar directamente de la siguiente manera: $ mc -v nombre_archivo (Obsérvese que algunos paquetes no respetan esta convención y almacenan sus documentos en `/usr/doc') 4.3.7. Inicio automático de programas ------------------------------------- Pulse `Enter' sobre un archivo y el programa apropiado manejará el contenido del archivo. Esta es una característica muy útil del MC. ejecutable: Ejecuta el programa man, archivo html: Deriva el contenido a un visor tar, gz, archivo rpm: Permite ver su contenido incluyendo subdirectorios Para que esto funcione, los archivos no deben ser ejecutables. Cambie su estado usando el comando chmod mediante el menú 'Archivo' del MC si fuese necesario. 4.3.8. Sistema de archivos virtuales FTP ---------------------------------------- Se puede usar el MC para acceder a archivos que se encuentran en Internet via FTP. Vaya al menú presionando `F9,' luego pulse `p' para activar el sistema de archivos virtual FTP. Ingrese la URL de la siguiente manera `nombre_usuario:contraseña@nombre_servidor.nombre_dominio' y se verá al directorio remoto como si fuera local. 4.4. Para saber más ------------------- Existen muy buenas referencias de iniciación Unix sobre el tema. Los libros de O'Reilly son, en general, excelentes guías para prácticamente cualquier tema de informática. El documento del LDP Tips-HOWTO (http://www.tldp.org/HOWTO/Tips-HOWTO.html) es otro recurso a tener en cuenta. Véase Capítulo 15, `Suporte para Debian' para más recursos. ------------------------------------------------------------------------------- 5. Actualizando una distribución -------------------------------- Las notas de versión oficiales para actualizar están en http://www.debian.org/releases/stable/releasenotes y http://www.debian.org/releases/testing/releasenotes (en preparación). Los pasos para actualizar el sistema a la versión `de prueba/inestable' son: * actualizar el APT del sistema a la versión de Woody si su sistema es Potato ya que el APT de Potato no posee las características descriptas en apt_preferences(5) de Woody. * modificar los archivos `/etc/apt/sources.list' y `/etc/apt/preferences', para incluir referencias a la sección "testing" ("de prueba") de los repositorios que utiliza. Si lo desea, también puede incluir referencias a la sección "unstable" ("inestable") * actualizar la lista de paquetes e instalar aquellos paquetes que se pueden actualizar. 5.1. Transición a la versión Woody de APT ----------------------------------------- La actualización a través de la red del sistema APT y de algunos paquetes fundamentales a la versión se puede realizar de la siguiente manera luego de incluir repositorios de la rama `estable' en el `/etc/apt/sources.list' si aún desea usar Potato. # apt-get update # apt-get install libc6 perl libdb2 debconf # apt-get install apt apt-utils dselect dpkg 5.2. Preparación para la transición (`stable' a `testing') ---------------------------------------------------------- Utilizar la versión `de prueba' de Debian tiene como efecto colateral la lenta solución de los fallos de seguridad. Por lo tanto, tenga cuidado. La actualización a la versión `de prueba' (`testing') se puede realizar de la siguiente manera (ejecute el guión go-woody (http://www.debian.org/doc/manuals/debian-reference/examples/) para hacerlo todo mediante un sólo comando): Vacie el archivo `sources.list' actual: # cd /etc/apt # cp -f sources.list sources.anterior # :>sources.list Obtenga una lista reciente de repositorios para la versión `estable' (`stable') # cd / # apt-setup noprobe ... seleccione los repositorios, accesibles mediante HTTP o FTP Añada la sección `testing' a la lista nueva. Las líneas `deb-src' están comentadas. # cd /etc/apt # grep -e "^deb " sources.list >sources.deb # grep -e "^deb-" sources.list >sources.src # sed -e "s/stable/testing/" sources.deb \ >>sources.list # sed -e "s/stable/testing/" sources.src | \ sed -e "s/^deb-/#deb-/" >>sources.list # apt-get update # apt-get install apt apt-utils # cat >preferences <>sources.list # sed -e "s/stable/unstable/" sources.src | \ sed -e "s/^deb-/#deb-/" >>sources.list Véase Sección 6.2, `Fundamentos de la administración de paquetes Debian Debian' configurar inteligentemente `/etc/apt/sources.list' y `/etc/apt/preferences'. Ahora puede actualizar el sistema, usando uno de los métodos de la siguiente sección. 5.3. Actualizar el sistema Debian --------------------------------- Luego de configurar en forma adecuada los archivos `/etc/apt/sources.list' y `/etc/apt/preferences', el sistema se puede actualizar a la versión `de prueba' (testing). Véase Capítulo 6, `Administración de paquetes Debian' para los fundamentos y Sección 6.3.2, `Resolución de problemas al actualizar con APT' si tropieza con problemas. 5.3.1. Mejor método de actualización usando `dselect' ----------------------------------------------------- Si un sistema tiene muchos paquetes que incluye paquetes `-dev', etc., se recomienda el siguiente método usando `dselect' para un control minucioso de paquetes. # dselect update # siempre hacer esto antes de actualizar # dselect select # seleccione los paquetes adicionales Todos los paquetes actuales serán seleccionados al arrancar `dselect'. `dselect' puede proponerle otros paquetes: `dependientes', `sugeridos' y `recomendados'. Si no desea añadir ningún paquete, sólo pulse `Q' para abandonar `dselect'. # dselect install Deberá responder algunas preguntas para la configuración para esta parte del proceso, por lo tanto tome nota y dedique parte de su tiempo a esta parte. Véase Sección 6.2.3, ``dselect''. Use `dselect'. _Siempre funciona :)_ 5.3.2. Método obsoleto de actualización usando `apt-get' -------------------------------------------------------- _El uso de `apt-get' que se describe a continuación está muy extendido pero _no_se recomienda para actualizaciones del sistema._ Si necesita actualizar sin `dselect' a partir de Woody, considere el uso de `aptitude' u otras opciones. Si un sistema no posee muchos paquetes o el archivo Debian no experimentó mayores cambios, lo siguiente puede ser -a veces- suficiente. # apt-get update # siempre hacer esto antes de actualizar ... para actualizar el sistema con selecciones "depends": # apt-get upgrade # siempre hacer esto antes de actualizar ... para actualizar todo el sistema con selecciones "depends": # apt-get -u dist-upgrade ... o para actualizar y conservar la configuración actual de dselect (mejor solución): # apt-get -u dselect-upgrade # utiliza las selecciones de dselect Puesto que este método de actualización utiliza `apt-get', el manejo de los paquetes _recomendados_ y _sugeridos_ es limitado. Véase Sección 2.2.8, `Dependencia entre paquetes'. ------------------------------------------------------------------------------- 6. Administración de paquetes Debian ------------------------------------ Para reducir el tráfico en los repositorios Debian, asegúrese de configurar un proxy HTTP local usando `squid' para los paquetes descargados mediante APT y, de ser necesario, configurar la variable de entorno `hhtp_proxy' o fijar el valor `http' en `/etc/apt/apt.conf'. Esto mejora notablemente el rendimiento de las actualizaciones en una red, en especial en una LAN con una gran cantidad de sistemas Debian. Aunque el método de marcado (pinning) de apt_preferences(5) es poderoso, no resuelve la totalidad de temas sobre dependencias puesto que las definiciones de dependencias tienden a buscar las versiones más nuevas de otros programas fundamentales. El uso del método descripto en Sección 8.6.34, ``chroot'' es útil para asegurar, simultáneamente, tanto la estabilidad del sistema como el acceso a las últimas versiones de los programas. Este capítulo se basa en sistemas Woody pero la mayoría de la información se aplica también a sistemas Potato (con exepción de apt_preferences(5) y lo concerniente al archivo `/etc/apt/preferences'). 6.1. Introducción ----------------- Si el leer toda la documentación del desarrollador es demasiado para Ud., lea primero este capítulo y empiece a disfrutar toda la potencia de Debian con `testing'/`unstable' :-) 6.1.1. Herramientas principales ------------------------------- dselect -- herramienta de administración de paquetes basada en menús (alto nivel) dpkg -- instala paquetes (package-file centric) apt-get -- instala paquetes (package-archive centric, CLI APT) tasksel -- instala tareas (conjunto de paquetes) aptitude -- instala paquetes (paquetes y tareas, interfaz de APT basada en ncurses) deity -- otra interfaz para APT basada en ncurses synaptic, gsynaptic -- otras interfaces gráficas para APT Estas herramientas no están en un mismo nivel. `dselect' se ejecuta encima de APT (`apt-get') y `dpkg'. APT utiliza `/var/lib/apt/lists/*' para el seguimiento de paquetes disponibles, mientras que `dpkg' usa `/var/lib/dpkg/available'. Si instaló paquetes directamente usando `apt-get' o programas similares como, por ejemplo, `aptitude', asegúrese de actualizar el archivo `/var/lib/dpkg/available' mediante la opción `[U]pdate' del menú de `dselect' o desde la línea de comandos "`dselect update'" antes de ejecutar `dselect select', `tasksel' o `dpkg -l'. En cuanto a la dependencia entre paquetes, `apt-get' obtiene automáticamente los paquetes que dependen entre sí (_depends_) pero ignora los paquetes recomendados (_recommends_) y sugeridos (_suggests_). `dselect', en cambio, ofrece un control más avanzado de los paquetes basado en menús que ofrece la posibilidad de elegir paquetes basándose en _depends_, _recommends_ y _suggests_. `aptitude' tiene la opción de descargar todos los paquetes automáticamente basándose en _depends_, _recommends_ y _suggests_. See Sección 2.2.8, `Dependencia entre paquetes'. 6.1.2. Herramientas prácticas ----------------------------- apt-cache - búsqueda de paquetes en el caché local dpkg-reconfigure - vuelve a configurar un paquete ya instalado (si utiliza debconf) dpkg-source - se encarga de los archivos fuentes dpkg-buildpackage - automatiza la creación de un paquete ... 6.2. Fundamentos de la administración de paquetes Debian Debian --------------------------------------------------------------- Puede instalar un conjunto de paquetes denominado _tarea_ o instalar paquetes individuales o actualizar el sistema usando las herramientas de administración de paquetes como se describe a continuación. Also refer to Capítulo 3, `Consejos para la instalación de un sistema Debian', Capítulo 5, `Actualizando una distribución' y Sección 11.2, `Editores de rescate'. 6.2.1. Instalación de con `tasksel' -------------------------------------------- `tasksel' es el _Instalador de Tareas de Debian_ que se ofrece durante la instalación como método de instalación "`sencillo'". Cuando uno necesita instalar una determinada función que requiere de múltiples paquetes, esta es la mejor manera de hacerlo. Asegúrese de ejecutar los comandos en el siguiente orden: # dselect update # tasksel `aptitude' también ofrece acceso a las _tareas_. No sólo permite seleccionar _tareas_ sino que permite eliminar paquetes de una _tarea_ en forma selectiva mediante un menú. 6.2.2. Configurar el sistema APT -------------------------------- Para realizar actualizaciones selectivas desde la distribución `de prueba' el sistema APT (>Woody) debe configurarse como en Sección 5.1, `Transición a la versión Woody de APT' para usar aprovechar las características de apt_preferences(5). Primero añada las fuentes para la versión estable (`stable'), de prueba (`testing') e inestable (`unstable') a su `/etc/apt/sources.list'. A continuación, edite `/etc/apt/preferences' para configurar correctamente el Pin-Priority: Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 600 Package: * Pin: release a=unstable Pin-Priority: 50 6.2.3. `dselect' ---------------- Al arrancar, `dselect' selecciona automáticamente todos los paquetes "Requeridos" ("Required"), "Importantes" ("Important") y "Estándar" ("Standard"). En el sistema Potato, algunos programas muy grandes tales como teTeX y Emacs solían estar aquí y resultaba mejor omitirlos en una instalación inicial deseleccionándolos manualmente (mediante `_'). En Woody, han sido puestos en la categoría de paquetes "Opcionales" ("Optional"). `dselect' tiene una interfaz de usuario algo extraña. Existen cuatro comandos un tanto ambiguos (Mayúsculas, significa ¡MAYÚSCULAS!): Tecla Acción Q Salir. Confirma la selección actual y sale de todas maneras. (no tiene en cuenta las dependencias) R ¡Reestablecer! No quise decir esto. D ¡Maldición! No me importa lo que piensa dselect. ¡Házlo! U Volver todo en el estado sUgerido Con `D' y `Q', puede elegir paquetes en conflicto bajo su entera responsabilidad. Utilice estos comandos con cuidado. Actualmente, `dselect' es una herramienta basada en menús madura que ofrece un control muy preciso sobre los paquetes sugeridos (_suggests_) y recomendados (_recommends_). Añada una línea que contenga la opción "expert" en `/etc/dpkg/dselect.cfg' para reducir la cantidad de información mostrada. Para una máquina más lenta, puede ejecutar `dselect' en otra máquina más rápida para encontrar los paquetes y usar `apt-get install' para instalarlos. `dselect' no ofrece acceso a los paquetes que no han sido favorecidos por la Pin-Priority. 6.2.4. `aptitude' ----------------- `aptitude' es un instalador de paquetes nuevo basado en menús similar a `dselect'. También se puede como alternativa de `apt-get' en la línea de comandos. Véase aptitude(1). `aptitude' acepta comandos de una tecla, que generalmente están en minúsculas. Tecla Acción F10 Menú ? Ayuda u Actualizar la información del archivo de paquetes g Descargar e instalar los paquetes seleccionados q Salir de la pantalla actual y guardar los cambios x Salir de la pantalla actual y descartar los cambios Enter Ver información sobre un paquete `aptitude' ofrece la opción de descargar automáticamente todos los paquetes basándose en _depends_, _recommends_ y _suggests_. Puede alterar este comportamiento eligiendo `F10 -> Optciones -> Manejo de dependencias' de su menú. `aptitude' permite el acceso a todas las versiones de un paquete. 6.2.5. Los comandos `apt-cache' y `apt-get' ------------------------------------------- Con el ejemplo de arriba para trabajar en la versión `de prueba', podemos controlar el sistema usando los siguientes comandos: * `apt-get -u upgrade' Permanece en la distribución `de prueba' y actualiza todos los paquetes del sistema instalando las dependencias desde ella misma. * `apt-get -u dist-upgrade' Permanece en la distribución `de prueba' y actualiza todos los paquetes del sistema resolviendo las dependencias desde ella misma. * `apt-get -u dselect-upgrade' Permanece en la distribución `de prueba' y actualiza todos los paquetes del sistema teniendo en cuenta la selección de `dselect'. * `apt-get -u install ' Instala el y sus dependencias desde la distribución `de prueba'. * `apt-get -u install /unstable' Instala el desde la distribución `inestable' y sus dependencias desde la distribución `de prueba'. * `apt-get -u install -t unstable ' Instala el y sus dependencias desde la distribución `inestable' asignando una Pin-Prioriy igual a 990 a `unstable'. * `apt-cache policy ' Comprueba el estado de los paquetes . * `apt-cache show | less' Comprueba la información referente a los paquetes . * `apt-get install ' Instala una versión particular (<2.2.4-1>) del paquete . * `apt-get -u install ' Instala el paquete y desinstala el paquete * `apt-get remove ' Desinstala el paquete pero conserva intactos los archivos de configuración personalizados. * `apt-get remove --purge ' Desinstala el paquete junto con todos sus archivos de configuración personalizados. En los ejemplos anteriores, el uso de la opción `-u' asegura que `apt-get' muestre la lista de todos los paquetes que van a ser actualizados y pregunte al usuario antes de proceder. Lo siguiente elige la opción `-u' como acción predeterminada: $ cat >> /etc/apt/apt.conf << . // Mostrar siempre los paquetes que van a ser actualizados (-u) APT::Get::Show-Upgraded "true"; . Utilice la opción `-s' para simular la actualización sin llevarla realmente a cabo. 6.2.6. Permanecer en una versión de la distribución Debian ---------------------------------------------------------- Dependiendo de su preferencia por permanecer en una determinada versión de Debian , puede modificar el archivo de ejemplo `/etc/apt/preferences' en Sección 6.2.2, `Configurar el sistema APT' para que se ajuste a sus necesidades: permanecer en stable: poner la Pin-Priority de testing en 50 permanecer en testing: mantener la configuración dada anteriormente permanecer en testing (unstable): poner la Pin-Priority de unstable en 500 permanecer en unstable(testing): poner la Pin-Priority de unstable en 800 Una idea para la elección del Pin-Priority consiste en moverse desde arriba hacia abajo en la tabla anterior conforme transcurre el tiempo entre la fecha inmediatamente posterior a la salida de una distribución y la fecha de congelación de la siguiente versión. Advertencia: el permanecer en la versión `de prueba' de Debian tiene como efecto colateral la lenta solución de los fallos de seguridad. Si mezcla las versiones de Debian, `de prueba' con `estable' o `inestable' con `estable', es muy probable que descarge diversos paquetes importantes de la rama `de prueba' o `inestable' que pueden tener errores. Queda debidamente advertido. Ejemplos de `/etc/apt/preferences' que bloquean algunos paquetes fundamentales en su versión más madura mientras actualizan a una versión menos madura paquetes que no son esenciales, están disponibles en el examples subdirectory (http://www.debian.org/doc/manuals/debian-reference/examples/) como `preferences.testing' y `preferences.unstable'. Por otra parte, `preferences.stable' fuerza a todos los paquetes a volver a su versión `estable'. 6.2.7. Volver todos los paquetes a su versión `estable' ------------------------------------------------------- Para volver todos los paquetes a la versión `estable', edite el `/etc/apt/preferences' de la siguiente manera: Package: * Pin: release a=stable Pin-Priority: 1001 y ejecute "`apt-get upgrade'" que forzará el retorno a la rama estable debido a que Pin-priority > 1000. Tenga cuidado, puede haber algunos inconvenientes con las dependencias. 6.2.8. Repaso de `/etc/apt/preferences' --------------------------------------- En el `/etc/apt/preferences' de ejemplo presentado en Sección 6.2.2, `Configurar el sistema APT', la primera línea `Package: *' significa que esa sección se aplica a todos los paquetes. Puede usar el nombre de un paquete en vez de * para especificar la Pin-Priority del mismo. En el segundo renglón, "Pin: release a=stable" significa que `apt-get' descargará el archivo `Packages.gz' del repositorio que contiene al archivo `Release' con la línea "Archive: stable". En el último renglón "Pin-Priority: 500" indica que la Pin-Priority es 500. Si existen varios paquetes con el mismo nombre, generalmente el que tiene el valor de Pin-Priority más alto es el que se instala.. Los significados de los Pin-Priority son: * 1001 en adelante: prioridades para volver a la versión anterior. Se permite volver a la versión anterior del paquete. * 100 a 1000: prioridades estándar. No se permite volver a la versión anterior del paquete. Algunos valores de Pin-Priority claves: * 990: la prioridad dado por la opción `--target-release' or `-t' of apt-get(8) option. * 500: la prioridad predeterminada de todos los paquetes. * 100: la prioridad de los paquetes recientemente instalados. * 0 a 99: prioridades que no son automáticas (se utilizan únicamente si el paquete no está instalado y no existe otra versión disponible). * menor que 0: la versión nunca es seleccionada. Se puede obtener el mismo efecto que `--target-release' configurando `/etc/apt/apt.conf' de la siguiente manera: # echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf La opción `--target-release' de la línea de comandos y la configuración de `/etc/apt/apt.conf' tienen prioridad sobre la configuración de `/etc/apt/preferences'. Tenga cuidado con estas interferencias cuando juegue con `/etc/apt/preferences'. 6.3. Comandos de supervivencia de Debian ---------------------------------------- Con estos conocimientos, se puede vivir _eternamente_ de "actualizaciones" :-) 6.3.1. Búsqueda de fallos y ayuda en Debian ------------------------------------------- Si tiene problemas con un paquete determinado, asegúrese de consultar los siguientes sitios antes de pedir ayuda o enviar un informe de fallos. (`lynx', `links' y `w3m' funcionan igualmente bien): $ lynx http://bugs.debian.org/ $ lynx http://bugs.debian.org/ # si conoce el nombre del paquete $ lynx http://bugs.debian.org/ # si conoce el número de fallo Busque en Google (www.google.com) incluyendo "site:debian.org" como palabra clave. En caso de duda, recurra a la documentación. Inicialice `CDPATH' de la siguiente manera: export CDPATH=.:/usr/local:/usr/share/doc y escriba $ cd $ mc Más recursos de soporte se encuentran listados en Capítulo 15, `Suporte para Debian'. 6.3.2. Resolución de problemas al actualizar con APT ---------------------------------------------------- Al actualizar desde `unstable'/`testing' pueden surgir problemas entre dependencias como se explicó en Sección 5.3, `Actualizar el sistema Debian'. La mayoría de las veces, es debido a que el paquete que se desea actualizar posee una nueva dependencia que no es satisfecha. Estos problemas se solucionan haciendo # apt-get dist-upgrade Si esto no funciona, entonces repita las siguientes operaciones hasta que el problema se resuelva por sí solo: # apt-get upgrade -f # continue con upgrade a pesar de los errores ... o # apt-get dist-upgrade -f # continue con dist-upgrade a pesar de los errores Algunos scripts de actualización conflictivos pueden provocar inconvenientes en forma recurrente. Generalmente resulta conveniente resolver este tipo de situación inspeccionando los scripts `/var/lib/dpkg/info/.{post,pre}{inst,rm}' del paquete problemático y ejecutando: # dpkg --configure -a # configura todos los paquetes parcialmente # instalados Si algún script se queja sobre un archivo de configuración faltante, busque en `/etc' el archivo de configuración correspondiente. Si existe alguno con extensión `.new' (o algo similar), recurra a `mv' para eliminar el sufijo. Pueden aparecer problemas de dependencias al instalar paquetes de la rama `inestable'/`de prueba'. Existen distintas maneras de burlar las dependencias. # apt-get install -f # no tener en cuenta dependencias no # resueltas Un método alternativo para resolver estas situaciones consiste en usar el paquete `equivs'. Véase `/usr/share/doc/equivs/README.Debian' y Sección 6.5.2, `El paquete `equivs''. 6.3.3. Rescate usando `dpkg' ---------------------------- La recuperación de un `dselect' (APT) que no funciona más en un sistema inutilizado se puede realizar usando `dpkg' sin APT: # cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # hasta que no haya más errores Si falta un paquete, obténgalo de mirror sites (http://www.debian.org/mirror/) mediante: # mc # utilice "FTP link" apuntando a un servidor FTP Debian Los paquetes en el servidor HTTP/FTP pueden no estar localizados en el directorio habitual `/dist' sino en el nuevo directorio `/pool'. (Véase Sección 2.1.10, `El directorio `pool''.) Luego instálelo haciendo: # dpkg -i /var/cache/apt/archives/ Para una dependencia no resuelta, resuelvala o utilice: # dpkg --ignore-depends=,... -i # dpkg --force-depends -i # dpkg --force-depends --purge # dpkg --force-confmiss -i # Instale archivo de # configuración # faltante 6.3.4. Recuperar los datos de la selección de paquetes ------------------------------------------------------ Si por alguna razón se inutiliza `/var/lib/dpkg/status' , el sistema Debian perderá los datos de la selección de paquetes y resultará enormemente afectado.. Busque el archivo `/var/lib/dpkg/status' anterior en `/var/lib/dpkg/status-old' o `/var/backups/dpkg.status.*'. Puede resultar una muy buena idea mantener `/var/backups/' en una partición aparte ya que este directorio contiene una inmensa cantidad de datos importantes del sistema. Si el archivo `/var/lib/dpkg/status' anterior no se encuentra disponible, aún puede recuperar información de los directorios situados `/usr/share/doc/'. # ls /usr/share/doc | \ grep -v [A-Z] | \ grep -v '^texmf$' | \ grep -v '^debian$' | \ awk '{print $1 " install"}' | \ dpkg --set-selections # dselect --expert # reinstale el sistema, use dselect si es necesario 6.3.5. Recuperando un sistema luego de borrar `/var' ---------------------------------------------------- Puesto que el directorio `/var' contiene datos que se actualizan continuamente, como por ejemplo el correo, es suceptible de corromperse. Ubicándolo en una partición independiente disminuye los riesgos. Si ocurre un desastre, puede que deba reconstruir el directorio `/var' para recuperar el sistema Debian. Obtenga la estructura del directorio `/var' de un sistema Debian funcional basada en una versión Debian igual o anterior, por ejemplo `var.tar.gz (http://people.debian.org/~osamu/pub/)', y ubíquela en el directorio raíz del sistema dañado. A continuación, # cd / # mv var var-old # si quedan contenidos útiles # tar xvzf var.tar.gz # utilice la estructura Woody # aptitude # o dselect Esto proporcionará un sistema funcional. Puede recuperar la selección de paquetes, usando el método descripto en Sección 6.3.4, `Recuperar los datos de la selección de paquetes'. ([FIXME]: Este procedimiento necesita de más pruebas.) 6.3.6. Instalar un paquete en un sistema que no arranca ------------------------------------------------------- Arranque Linux usando un diskete/CD de rescate o una partición alternativa en un sistema multi-arranque. See Sección 8.1, `Arrancando el sistema'. Monte el sitema que no arranca en `/target' y utilice el modo de instalación chroot de `dpkg'. # dpkg --root /target -i Luego configure y solucione los problemas. A propósito, si es un `lilo' dañado el que le impide arrancar el sistema, puede usar un disco de rescate estándar de Debian. En el indicador de arranque, suponiendo que la partición raíz de su intalación Linux está en `/dev/hda12' y que desea entrar al nivel de ejecución 3, escriba: boot: rescue root=/dev/ 3 De esta manera arrancará un sistema prácticamente funcional cuyo kernel se encuentra en el diskete (pueden aparecer pequeños problemas debido a la falta de algunas de las características o módulos del kernel) 6.3.7. Qué hacer si el comando `dpkg' se encuentra dañado --------------------------------------------------------- Un `dpkg' dañado puede tornar imposible la instalación de cualquier archivo `.deb'. Un procedimiento similar al siguiente le ayudará a superar esta situación (en la primera línea, puede reemplazar "links" con su navegador de consola favorito) $ links http:///debian/pool/main/d/dpkg/ ... descargue una versión de dpkg__.deb $ ar x dpkg__.deb $ su password: ***** # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz Para una máquina `i386', puede utilizar también la URL `http://packages.debian.org/dpkg'. 6.4. Comandos 'nirvana' de Debian --------------------------------- Bajo la _luz_ de estos comandos una persona se salvará de la lucha kármica eterna contra el infierno de la actualización y le permitirá alcanzar el _nirvana_ Debian. :-) 6.4.1. Información sobre un archivo ----------------------------------- Para averiguar a qué paquete pertenece un archivo determinado: $ dpkg {-S|--search} patrón # busca 'patrón' en los paquetes instalados $ wget http://ftp.us.debian.org/debian/dists// $ zgrep -e pattern # busca 'patrón' en los archivos descargados de Debian O utilice comandos de paquetes especializados: # apt-get install dlocate # entra en conflicto con slocate (versión segura de locate) $ dlocate # alternativa rápida de dpkg -L y dpkg -S ... # apt-get install auto-apt # herramienta de instalación automática de paquetes # bajo demanda # auto-apt update # crea el archivo db para auto-apt $ auto-apt search # busca de 'patrón' en todos los paquetes, instalados o no 6.4.2. Información sobre un paquete ----------------------------------- Buscar y mostrar la información sobre un paquete. Asegúrese de apuntar a un/unos archivo(s) APT adecuado(s) editando `/etc/apt/sources.list'. Si desea ver las diferencias entre un paquete de la rama `de prueba'/`inestable' y uno instalado, utilice `apt-cache policy'. # apt-get check # actualiza el caché y verifica las dependencias $ apt-cache search # busca un paquete a partir del 'patrón' $ apt-cache policy # información sobre la prioridad de un # paquete $ apt-cache show -a # muestra la descripción del paquete en # todas las distribuciones $ apt-cache showsrc # muestra la descripción de un paquete # fuente $ apt-cache showpkg # información de depuración de un paquete # dpkg --audit|-C # busca paquetes parcialmente instalados $ dpkg {-s|--status} # descripción de un paquete instalado $ dpkg -l # estado de un paquete instalado (una # línea) $ dpkg -L # lista los archivos instalados por el # paquete `apt-cache showsrc' no está documentado en el lanzamiento de Woody pero funciona :) Asimismo puede encontrar información de paquetes en (utilizo `mc' para navegar): /var/lib/apt/lists/* /var/lib/dpkg/available La comparación de los siguientes archivos proporciona inoformación sobre lo que ocurrió exactamente durante las últimas instalaciones. /var/lib/dpkg/status /var/backups/dpkg.status* 6.4.3. Instalación automática con APT ------------------------------------- Para una instalación automática, añada la siguiente línea al `/etc/apt/apt.conf': Dpkg::Options {"--force-confold";} Esto equivale a ejecutar `apt-get -q -y '. Puesto que de esta manera se responden con "Sí" todas las preguntas fomuladas, puede causar problemas. Por lo tanto use este truco con cuidado. Véase apt.conf(5) y dpkg(1). Posteriormente puede configurar cualquier paquete siguiendo Sección 6.4.4, `Reconfigurar paquetes instalados'. 6.4.4. Reconfigurar paquetes instalados --------------------------------------- Utilice los siguientes comandos para reconfigurar un paquete ya instalado. # dpkg-reconfigure --priority= [...] # dpkg-reconfigure --all # reconfigura todos los paquetes # dpkg-reconfigure locales # genera los nuevos locales # dpkg-reconfigure --p= xserver-xfree86 # reconfigura el # servidor X Hago lo mismo con `debconf' si necesita cambiar en forma permanente el modo de diálogo de `debconf'. Algunos programas vienen con scripts de configuración especiales. apt-setup - crea el /etc/apt/sources.list install-mbr - instala un administrador del sector de arranque maestro tzconfig - configura el huso horario local gpmconfig - configura el administrador del ratón gpm sambaconfig - configura Samba en Potato (Woody utiliza debconf) eximconfig - configura Exim (MTA) texconfig - configura teTeX apacheconfig - configura Apache (httpd) cvsconfig - configura CVS sndconfig - configura el sistema de sonido ... update-alternatives - configuración del comando predeterminado, por ej. vim por vi update-rc.d - administación de los scripts de arranque System-Vt update-menus - sistema de menús de Debian ... 6.4.5. Desinstalar y purgar paquetes ------------------------------------ Desinstalar un paquete manteniendo su configuración: # apt-get remove ... # dpkg --remove ... Desinstalar un paquete incluyendo su configuración: # apt-get remove --purge ... # dpkg --purge ... 6.4.6. Conservar paquetes antiguos ---------------------------------- Por ejemplo, para conservar `libc6' y `libc6-dev' para `dselect' y `apt-get -u upgrade ' se puede hacer: # echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections `apt-get -u install ' no se verá afectado por esto. Para conservar un paquete forzando una actualización automática a una versión anterior mediante `apt-get -u upgrade ' o `apt-get -u dist-upgrade', añada lo siguiente al `/etc/apt/preferences': Package: libc6 Pin: release a=stable Pin-Priority: 2000 En "`Package:'" no se pueden usar entradas del tipo "`libc6*'". Si necesita conservar todos los paquetes binarios relacionados con el paquete fuente `glibc' en forma conjunta, debe listarlos en forma explícita. El siguiente comando lista todos los paquetes que se desean conservar: dpkg --get-selections "*"|grep -e "hold$" 6.4.7. Sistema mixto `estable'/`de prueba'/`inestable' ------------------------------------------------------ `apt-show-versions' puede mostrar las versiones de los paquetes disponibles en cada distribución. $ apt-show-versions | fgrep /testing | wc ... cantidad de paquetes de la rama de prueba (testing) $ apt-show-versions -u ... lista de paquetes que se pueden actualizar $ apt-get install `apt-show-versions -u -b | fgrep /unstable` ... actualiza todos los paquetes de la rama inestable (unstable) a su versión más reciente 6.4.8. Eliminar paquetes del caché ---------------------------------- La instalación de paquetes con APT guarda los paquetes en `/var/cache/apt/archives'. # apt-get autoclean # elimina únicamente los paquetes inútiles # apt-get clean # elimina la totalidad de los paquetes del caché 6.4.9. Grabar/copiar la configuración del sistema ------------------------------------------------- Para hacer una copia local del estado de la selección de los paquetes: $ dpkg --get-selections "*" > # o usar \* `"*"' incluye también los nombres de los paquetes a purgar en `'. Puede transferir este archivo a otra computadora e instalarlo haciendo: # dselect update # dpkg --set-selections < # apt-get -u dselect-upgrade # dselect install 6.4.10. Portar un paquete a la rama `stable' -------------------------------------------- Para una actualización parcial del sistema `estable', es conveniente reconstruir el paquete para el entorno dado a partir de su código fuente. Esto evita actualizaciones masivas de paquetes debido a las dependencias. Primero, añada las siguientes entradas al `/etc/apt/sources.list': deb-src http://http.us.debian.org/debian testing \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US testing/non-US \ main contrib non-free deb-src http://http.us.debian.org/debian unstable \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US unstable/non-US \ main contrib non-free Cada entrada para `deb-src' está dividida en dos por cuestiones de impresión aunque en realidad las entradas en el `sources.list' deben escribirse en una única línea. A continuación, obtenga el código fuente y cree una copia local del paquete: $ apt-get update # actualiza la lista de paquetes del repositorio $ apt-get source $ dpkg-source -x $ cd ... busque los paquetes requeridos (Build-depends en el archivo .dsc) e instálelos. Necesitará también el paquete "fakeroot". $ dpkg-buildpackage -rfakeroot ...o (sin firma) $ dpkg-buildpackage -rfakeroot -us -uc # utilice luego "debsign" si es necesario ...luego para instalarlo $ su -c "dpkg -i " En general, se necesita instalar algunos paquetes con la opción "-dev" para satisfacer la dependencia entre paquetes. `debsign' pertenece al paquete `devscripts'. `auto-apt' puede fácilmente satisfacer estas dependencias. La utilización de `fakeroot' evita el uso innecesario de la cuenta de superusuario. En Woody, estos temas sobre dependencias pueden simplificarse. Por ejemplo, para compilar el paquete fuente `pine': # apt-get build-dep pine # apt-get source -b pine 6.4.11. Archivo local de paquetes --------------------------------- A fin de crear un archivo local de paquetes que sea compatible con los sistemas APT y `dselect', es necesario crear el archivo `Packages' y archivar los paquetes en un árbol de directorios determinado. Se puede crear un repositorio local `deb' similar al oficial de Debian haciendo: # apt-get install dpkg-dev # cd # install -d # los paquetes se ubicarán físicamente aquí # install -d dists//
/binary- # ls -1 | sed 's/_.*$/ extra /' | uniq > # editor # ajuste # dpkg-scanpackages / \ > dists//
/binary-/Packages # cat > dists//
/Release << EOF Archive: Version: <3.0> Component:
Origin: Label: Architecture: EOF # echo "deb file:
" \ >> /etc/apt/sources.list O bien, rápidamente haciendo: # apt-get install dpkg-dev # mkdir # mv # dpkg-scanpackages /dev/null | \ gzip - > /Packages.gz # echo "deb file: ./" >> /etc/apt/sources.list Se puede acceder en forma remota a estos archivos habilitando el acceso a estos directorios mediante HTTP o FTP y modificando convenientemente las entradas del archivo `/etc/apt/sources.list'. 6.4.12. Convertir o instalar un paquete que no pertenece a Debian ----------------------------------------------------------------- `alien' permite la conversión de paquetes `rpm' de Redhat , `slp' de Stampede , `tgz' de Slackware y `pkg' de Solaris al formato de paquetes `deb' de Debian. Si desea utilizar un paquete de una distribución Linux diferente a la que tiene instalada en su sistema, puede usar `alien' para convertirlo en su formato de paquetes preferido e instalarlo. `alien' soporta también paquetes LSB. 6.4.13. Verificar los paquetes instalados ----------------------------------------- `debsums' permite verificar la integridad de los paquetes instalados usando las sumas de control (checksums) MD5. Algunos paquetes no poseen sumas de control MD5. Veamos una solución provisoria para los administradores de sistema: # cat >>/etc/apt/apt.conf.d/90debsums DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";}; ^D por Joerg Wendland (sin verificar). 6.4.14. `sources.list' optimizado --------------------------------- En pocas palabras, mis esfuerzos por optimizar `sources.list' no produjeron mejoras significativas para mí en los los Estados Unidos. Elegí manualmente un repositorio cercano usando `apt-setup'. `apt-spy' crea automáticamente un `sources.list' basándose en el ancho de bando y el tiempo de latencia. `netselect-apt' crea un `sources.list' mucho más completo, pero usa un método menos efectivo para elegir la mejor réplica (comparación del tiempo de pings). # apt-get install apt-spy # cd /etc/apt ; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt 6.5. Otras particularidades de Debian ------------------------------------- 6.5.1. El comando `dpkg-divert' ------------------------------- _dpkg-divert_ fuerza a `dpkg' a no instalar un archivo en su lugar habitual sino en otro diferente. Estos _desvíos_ se pueden usar en los scripts de los paquetes Debian para quitar un archivo que provoca un conflicto. Los administradores de sistemas también pueden usarlo para no tener en cuenta algunos archivos de configuración o algunos archivos (que no han sido marcados como tales) necesitan preservarse de `dpkg' al instalar una versión nueva de un paquete que los incluya (see Sección 2.2.4, `Preservando la configuración local'). # dpkg-divert [--add] # añade "diversion" # dpkg-divert --remove # elimina "diversion" En general, resulta una buena idea no usar `dpkg-divert' salvo que sea absolutamente necesario hacerlo. 6.5.2. El paquete `equivs' -------------------------- Si compila un programa a partir de su código fuente, resulta conveniente crear un paquete Debian (`*.deb'). Utilice `equivs' como último recurso. Package: equivs Priority: extra Section: admin Description: burlar las dependencias entre paquetes Este es un paquete ficticio que se puede usar para crear paquetes Debian que contienen únicamente información sobre dependencias. 6.5.3. Comandos alternativos ---------------------------- Para utilizar el comando `vim' en lugar de `vi', utilice `update-alternatives': # update-alternatives --display vi ... # update-alternatives --config vi Selection Command ----------------------------------------------- 1 /usr/bin/elvis-tiny 2 /usr/bin/vim *+ 3 /usr/bin/nvi Enter to keep the default[*], or type selection number: 2 Los miembros del sistema de alternativos de Debian se encuentran en `/etc/alternatives' como enlaces simbólicos. Para tener su entorno de ventanas X favorito, aplique `update-alternatives' a `/usr/bin/x-session-manager' y `/usr/bin/x-window-manager'. Para más detalles, véase Sección 9.4.5.1, `Personalizando la sesión en X'. `/bin/sh' es un enlace simbólico a `/bin/bash' o `/bin/dash'. Resulta más seguro utilizar `/bin/bash' para preservar la compatibilidad con scripts antiguos contaminados con comandos del bash aunque resulta más disciplinado usar `/bin/dash' para asegurar compatibilidad POSIX. La actualización al kernel 2.4 Linux kernel tends to set this to `/bin/dash'. 6.5.4. `init' del System-V y niveles de ejecución ------------------------------------------------- El nivel de ejecución predeterminado se puede configurar en el `/etc/inittab'. A diferencia de otras distribuciones, Debian deja la administración de los niveles de ejecución bajo la completa responsabilidad del administrador de sistemas. La administración de `init' en un sistema System-V es llevada a cabo mediante los scripts `update-rc.d'. Arrancar `/etc/init.d/' en los niveles de ejecución 1,2,3 y detenerlo en 4,5 con una prioridad igual a 20 (normal) se puede realizar haciendo: # update-rc.d start 20 1 2 3 . stop 20 4 5 . Si el script existe en `init.d', el enlace simbólico se puede eliminar haciendo: # update-rc.d -f remove Para editar los niveles de ejecución, hago trampa. Edito manualmente las entradas usando el comando `mv' en el indicador del `mc' y copio los enlaces con Alt-Enter. Por ejemplo: # mv S99xdm K99xdm # desactivo xdm (X display manager) Incluso, como atajo rápido, desactivo un demonio escribiendo `exit 0' al comienzo de un script del `init.d'. Después de todo son `archivos de configuración'. 6.5.5. Servicios desactivados ----------------------------- La distribución Debian toma muy en serio la seguridad del sistema y espera que el administrador del sistema sea competente. Por lo tanto, la facilidad de uso a menudo se relega al segundo plano y determinados servicios brindados por los demonios vienen con el nivel de seguridad más alto y pocos servicios (o ninguno) estan disponibles en su estado de instalación predeterminado. Ejecute `ps aux' o consulte el contenido de `/etc/init.d/*' y `/etc/inetd.conf', si posee alguna duda (sobre Exim, DHCP, ...). También consulte el `/etc/hosts.deny' al igual que la sección Sección 9.2.1, `Control de acceso mediante PAM y login'. Asimismo resulta útil el comando `pidof' (véase pidof(8)). En versiones recientes de Debian X11 no permite, por defecto, conexiones TCP/IP (remotas). VéaseSección 9.4.6, `Conexión TCP/IP en X'. El redireccionamiento de X también se encuentra deshabilitado en SSH. Véase Sección 9.4.8, `Conexión X remota: `ssh''. ------------------------------------------------------------------------------- 7. El kernel de Linux en Debian ------------------------------- Debian tiene su propio método de recompilar el kernel y sus módulos asociados. Véase también Sección 2.7, `Debian y el kernel'. 7.1. Recompilación del kernel ----------------------------- La utilización de `gcc', `binutils' y `modutils' de la rama `unstable' de Debian puede resultar de ayuda al compilar el kernel de linux más reciente. Véase `/usr/share/doc/kernel-package/README.gz' de la información oficial (en especial la parte inferior de ésta) Puesto que es un tema dinámico, la compilación del kernel es un asunto difícil que puede confundir incluso a los desarrolladores más admirados: Manoj Srivastava escribió: `--initrd' requiere de un parche cramfs de Debian. Herbert Xu escribió: No, no es así. Para usar un sistema de archivos diferente al CRAMFS hay que configurar MKIMAGE en el `/etc/mkinitrd/mkinitrd.conf'. Sea cuidadoso y consulte siempre el `/usr/share/doc/kernel-package/README.gz' de Manoj y Kent. Asegúrese de obtener la última versión inestable del paquete `kernel-package' si va a compilar la versión más reciente del kernel. `initrd' no es necesario para un kernel compilado para una única máquina. Lo uso porque deseo que mi kernel sea casi el mismo que el proporcionado por los paquetes kernel-image. Si utiliza `initrd', asegúrese de leer mkinitrd(8) y mkinitrd.conf(5). Véase también http://bugs.debian.org/149236. 7.1.1. Método Debian estándar ----------------------------- Preste atención a los informes de fallos de los paquetes `kernel-package', `gcc', `binutils' y `modutils'. Si es necesario utilice las versiones más recientes. Compilar en un sistema Debian un kernel personalizado a partir de los fuentes exige de un cuidado especial. Utilice la nueva opción `--append_to_version' de `make-kpkg' para crear múltiples imágenes del kernel. # apt-get install debhelper modutils kernel-package libncurses5-dev # apt-get install kernel-source-<2.4.18> # utilice la versión más reciente # vi /etc/kernel-pkg.conf # escriba su nombre y dirección # electrónica $ cd /usr/src # cree el directorio $ tar --bzip2 -xvf kernel-source-<2.4.18>.tar.bz2 $ cd kernel-source-<2.4.18> # si este es el código fuente de su # kernel $ rm -rf */pcmcia # [OPCIONAL] si uno desea usar los módulos de pcmcia-cs $ cp /boot/config-<2.4.18-386> .config # tomar configuración actual como predeterminada $ make menuconfig # personalizar a gusto $ make-kpkg clean # indispensable (consultar: man make-kpkg) $ fakeroot make-kpkg --append_to_version -<486> --initrd \ --revision= kernel_image \ modules_image # modules_image para pcmcia-cs* etc. $ cd .. # dpkg -i kernel-image*.deb pcmcia-cs*.deb # instalar En realidad, `make-kpkg kernel_image' ejecuta `make oldconfig' y `make dep'. No utilice `--initrd' si no va a usar initrd. Se puede evitar hacer `rm -fr */pcmcia' seleccionado "General setup --->" en "PCMCIA/CardBus support --->" en `make menuconfig' y tomar como configuración "< > PCMCIA/CardBus support" (es decir, destildando la casilla de verificación). En una máquina SMP, configure CONCURRENCY_LEVEL de acuerdo con el kernel-pkg.conf(5). 7.1.2. Método clásico --------------------- Obtenga los fuentes nuevos de: * Linux: http://www.kernel.org/ * pcmcia-cs: http://pcmcia-cs.sourceforge.net/ o utilice los fuentes de Debian equivalentes y haga lo siguiente: # cd /usr/src # tar xfvz linux-.tar.gz # rm -rf linux # ln -s linux- linux # tar xfvz pcmcia-cs-.tar.gz # ln -s pcmcia-cs- pcmcia # cd linux # rm -rf */pcmcia # [OPCIONAL] si desea usar los módulos de pcmcia-cs # make menuconfig ... lo relativo a la configuración ... # make dep # make bzImage ... edite lilo / grub ... ... mueva /usr/src/linux/arch/i386/boot/bzImage al directorio boot ... ... /sbin/lilo o lo que corresponda si usa grub # make modules; make modules_install # cd ../pcmcia # make config # make all # make install ... añada los nombres de los módulos que se necesitan al /etc/modules # shutdown -r now ... arranque con el nuevo kernel ... 7.1.3. Cabeceras del kernel --------------------------- La mayoría de los programas "normales" no necesitan las cabeceras del núcleo y de hecho pueden corromperse si se las usa directamente; en cambio, deben compilarse usando las cabeceras con las que fueron creadas las _`glibc'_ que en un sistema Debian se encuentran en los directorios `/usr/include/linux' y `/usr/include/asm'. Por lo tanto no cree enlaces simbólicos al directorio `/usr/src/linux' desde `/usr/include/linux' y `/usr/include/asm', como lo sugieren algunos documentos desactualizados. Si _necesita_ las cabeceras del un kernel en particular para algunas aplicaciones específicas que así lo requieran, altere el/los makefile(s) de modo de incluir las rutas correspondientes `/include/linux' y `/include/asm'. 7.2. El kernel modular 2.4 -------------------------- Los nuevos núcleos 2.4 de Debian proporcionados por el paquete `kernel-image-2.4.' están muy modularizados. Debe asegurarse que los módulos estén activados para hacer que el kernel funcione como se pretende. Si bien hay numerosos ejemplos de `/etc/modules' en la siguiente sección, me han dicho que la manera adecuada de corregir los problemas relacionados con los módulos consiste en crear un alias para el dispositivo en un archivo situado en `/etc/modutils/' ya que en los núcleos actuales hay suficientes alias disponibles. Algunos módulos se pueden activar automáticamente por los programas de detección automática de hardware tal como `discover'. Véase también Sección 9.4.2, `Paquetes de detección de hardware para el servidor X'. Véase Sección 2.7.5, `Cuidados especiales para tratar con módulos' y `Documentation/*.txt' en los fuentes de Linux para una información detallada. 7.2.1. PCMCIA ------------- `/etc/modules' necesita incluir lo siguiente para que funcione algunas PCMCIA antiguas: # controlador PnP ISA isa-pnp # Nuevo controlador PCMCIA de bajo nivel # yenta_socket # en mi caso no parece ser necesario Del resto se encarga los scripts PCMCIA (del paquete `pcmcia-cs'), `depmod' y `kmod'. Creo que necesité de `isa-pnp' ya que mi portátil es una antigua ISA-PCMCIA. Las portátiles actuales con CardBus/PCMCIA no necesitan de él. Según las palabras del genio Miquel van Smoorenburg : "Simplemente eliminé todo lo referente a pcmcia de la PC portátil de mi trabajo, incluyendo cardmgr, e instalé el kernel 2.4 con soporte cardbus y el nuevo paquetee `hotplug' de woody. Mientras posea únicamente tarjetas de 32 bits, no necesitará el paquete pcmia; 2.4 incluye servicios incorporados para tarjetas. El controlador estándar tulip debería funcionar correctamente con su tarjeta dlink. ---Mike." Véase Linux PCMCIA HOWTO (http://www.tldp.org/HOWTO/PCMCIA-HOWTO.html) y Sección 10.9.5, `Configuración de la red y PCMCIA'. 7.2.2. SCSI ----------- [SIN PROBAR] `/etc/modules' necesita incluir lo siguiente para que funcione SCSI: # núcleo SCSI scsi_mod # controlador SCSI genérico sg # disco SCSI sd_mod # Todos los módulos necesario para el hardware ... `depmod' puede encargarse de algunos de los módulos anteriores. 7.2.3. Funciones de Red ----------------------- `/etc/modules' debe incluir lo siguiente para funciones de red adicionales: # net/ipv-4 ip_gre ipip # net/ipv-4/netfilter # iptable (en orden) ip_tables ip_conntrack ip_conntrack_ftp iptable_nat iptable_filter iptable_mangle # ip_nat_ftp ip_queue # ipt_LOG ipt_MARK ipt_MASQUERADE ipt_MIRROR ipt_REDIRECT ipt_REJECT ipt_TCPMSS ipt_TOS ipt_limit ipt_mac ipt_mark ipt_multiport ipt_owner ipt_state ipt_tcpmss ipt_tos ipt_unclean # #ipchains #ipfwadm Lo anterior puede no estar optimizado. `depmod' puede encargarse de algunos de los módulos anteriores. 7.2.4. Sistema de archivos EXT3 ( > 2.4.17) ------------------------------------------- Para activar el sistema de archivos transaccional EXT3 usando el paquete precompilado kernel-image ( > 2.4.17) de Debian hay que seguir los siguientes pasos: # cd /etc; mv fstab fstab.antiguo # sed 's/ext2/ext3,ext2/g' fstab # vi /etc/fstab ... fijar el sistema de archivos raíz en "auto" en vez de "ext3,ext2" # cd /etc/mkinitrd # echo jbd >>modules # echo ext3 >>modules # echo ext2 >>modules # cd / # apt-get update; apt-get install kernel-image-<2.4.17-686-smp> ... instale el último kernel y configure el arranque (en este caso se ejecuta lilo) # tune2fs -j -i 0 # tune2fs -j -i 0 ... Para todos los sistemas de archivos EXT2 convertidos en EXT3 # shutdown -r now El sistema transaccional EXT3 se encuentra ahora habilitado. Una entrada "type" `ext3,ext2' en el `fstab' permite una migración segura a EXT2 si el núcleo no soporta EXT3 para particiones diferentes a la partición raíz. Si ya tiene instalado un kernel 2.4 y no desea reinstalarlo, realice los pasos anteriores a los comandos `apt-get', y a continuación: # mkinitrd -o /boot/initrd.img-<2.4.17-686-smp> /lib/modules/<2.4.17-686-smp> # lilo # tune2fs -j -i 0 # tune2fs -j -i 0 ... para todos los sistemas de archivos EXT2 convertidos a EXT3 # shutdown -r now El sistema transaccional EXT3 se encuentra ahora habilitado. Si `/etc/mkinitrd/modules' no ha sido configurado cuando `mkinitrd' fue ejecutado y le gustaría añadir algunos módulos en tiempo de arranque: ... en el indicador de initrd pulse ENTER (5 seg.) para acceder al intérprete de comandos # insmod jbd # insmod ext3 # modprobe ext3 puede hacerse cargo de todo # insmod ext2 # ^D ... continua el arranque En los mensajes del arranque del sistema (`dmesg'), puede aparecer la frase "cramfs: wrong magic" que no acarrea ninguna consecuencia. Este problema se ha resuelto en Sarge (2002/10). Véase http://bugs.debian.org/135537 y el EXT3 File System mini-HOWTO (http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html) o `/usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz' para más información. Se ha informado sobre graves cuelgues del kernel al activar EXT3 pero no he tenido ningún problema (con el 2.4.17). 7.2.5. Soporte Realtek RTL-8139 en el kernel 2.4 ------------------------------------------------ Por alguna razón, el módulo que soporta RTL-8139 ya no se llama rtl8139 sino 8139too. Simplemente edite su `/etc/modules' para reflejar este cambio al pasar del kernel 2.2 al 2.4. 7.2.6. Soporte puerto paralelo ------------------------------ En el `kernel-image-2.4.*', el soporte del puerto paralelo es proporcionado mediante un módulo. Actívelo haciendo: # modprobe lp # echo lp >> /etc/modules Véase `Documentation/parport.txt' del código fuente de Linux. 7.3. Poniendo a punto al kernel mediante el sistema de archivos proc -------------------------------------------------------------------- El comportamiento del kernel de Linux se puede modificar al vuelo usando el sistema de archivos proc. Para información básica para modificar los parámetros del kernel a través del sistema de archivos `/proc', consulte `Documentation/sysctl/*' de los fuentes del kernel. Véase algunos ejemplos de manipulación de los parámetros del kernel en `/etc/init.d/networking' y Sección 3.7.5, `Problemas extraños al acceder a ciertos sitios de Internet'. Véase sysctl.conf(5) para saber cómo configurar el tiempo de arranque en la configuración del kernel mediante el sistema de archivos `/proc' con el script `/etc/init.d/procps.sh' que generalmente se ejecuta desde `/etc/rcS.d/S30procps.sh'. 7.3.1. Demasiado archivos abiertos ---------------------------------- El kernel de Linux puede quejarse diciendo "Too many open files" ("Demasiado archivos abiertos"). Esto es debido al pequeño valor predeterminado (8096) de `file-max'. Para solucionar este problema, ejecute el siguiente comando como superusuario: # echo "65536" > /proc/sys/fs/file-max # para los núcleos 2.2 y 2.4 # echo "131072" > /proc/sys/fs/inode-max # únicamente para el núcleo 2.2 o escriba lo siguiente en el `/etc/sysctl.conf' para que el cambio sea permanente: file-max=65536 # para los núcleos 2.2 y 2.4 inode-max=131072 # únicamente para el núcleo 2.2 7.3.2. Intervalos de vaciado de disco ------------------------------------- Puede modificar los intervalos de vaciado de disco mediante el sistema de archivos proc. Lo siguiente disminuirá el intervalo predeterminado de cinco segundos a un segundo. # echo "40 0 0 0 100 30000 60 0 0" > /proc/sys/vm/bdflush Esto puede influir negativamente en el rendimiento de la E/S del archivo. Pero asegura los contenidos del mismo salvo durante el último segundo que es inferior a los 5 segundos predeterminados. Esto es así incluso para el sistema de archivos transaccional. 7.3.3. Máquinas con memoria extremadamente lenta ------------------------------------------------ Para algunos sistemas antiguos con memoria extremadamente lenta, puede resultar útil activar la siguiente opción usando el sistema de archivos proc: # echo 1 > /proc/sys/vm/overcommit_memory ------------------------------------------------------------------------------- 8. Trucos para Debian --------------------- 8.1. Arrancando el sistema -------------------------- Véase el BootPrompt-HOWTO (http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html) para información detallada sobre el indicador de arranque. 8.1.1. "¡Olvidé la contraseña de superusuario!" (1) --------------------------------------------------- Es posible arrancar el sistema y acceder a la cuenta de superusuario sin conocer la contraseña siempre y cuando se tenga acceso al teclado de la consola (esto supone que ni la BIOS ni un cargador de arranque como `lilo' solicitan una contraseña para evitar el arranque del sistema) Este es un procedimiento que no requiere de discos de arranque externos ni cambios en los parámetros de arranque de la BIOS. Aquí, "Linux" hace referencia al kernel de Linux de la instalación predeterminada de Debian. En el pantalla de arranque de `lilo', cuando aparece `boot:' (en algunos sistemas debe presionar la tecla Mayús para evitar el arranque automático y cuando `lilo' utiliza el framebuffer tiene que pulsar TAB para ver las opciones), escriba: boot: Linux init=/bin/sh Esto hará que el sistema arranque el kernel y ejecute el `/bin/sh' en vez del estándar `init'. Ahora tenemos privilegios de superusuario y acceso al intérprete de comandos. Puesto que `/' generalmente está montado en modo sólo lectura y aún no han sido montadas las distintas particiones, debe hacer lo siguiente para tener un sistema que funcione razonablemente. init-2.03# mount -n -t remount,rw / init-2.03# mount -avt nonfs,noproc,nosmbfs init-2.03# cd /etc init-2.03# vi passwd init-2.03# vi shadow (si el segundo campo de datos en el `/etc/passwd' es una "x" para cada nombre de usuario, su sistema utiliza contraseñas ocultas y debe editar el archivo `/etc/shadow') Para desactivar la contraseña de root, edite el segundo campo de datos en el archivo de contraseñas de modo que quede vacío. Ahora se puede reiniciar el sistema y entrar como root sin contraseña. A diferencia de algunas distribuciones Linux antiguas, la Debian actual (Potato) requiere de contraseña sólo cuando arranca en el nivel de ejecución 1. Resulta una buena idea tener un editor mínimo en `/bin' en el caso que `/usr' no sea accesible (véase Sección 11.2, `Editores de rescate'). También considere instalar el paquete `sash'. Cuando no pueda arrancar el sistema, haga: boot: Linux init=/bin/sash `sash' sirve como un sustituto interactivo de `sh' incluso cuando `/bin/sh' no se puede usar. Está enlazado estáticamente e incluye diversas utilidades estándar incorporadas (teclee "help" en el indicador de comandos para una lista de referencia). 8.1.2. "¡Olvidé la contraseña de superusuario!" (2) --------------------------------------------------- Arranque desde un disco de emergencia. Si `/dev/hda3' es la partición raíz original, lo siguiente le permitirá editar el archivo de contraseñas tan fácilmente como antes. # mkdir fixit # mount /dev/hda3 fixit # cd fixit/etc # vi shadow # vi passwd La ventaja de este enfoque sobre el anterior es que no se necesita conocer la contraseña de `lilo' (si existe). Pero para usarlo uno debe ser capaz de poder acceder a la configuración de la BIOS para permitir arrancar el sistema desde un disquete o CD si es que ya no está configurada como tal. 8.1.3. No puedo arrancar el sistema ----------------------------------- Si se tomó la molestia de crear un disco de arranque durante la instalación, no habrá ningún problema. Si `lilo' se encuentra dañado, grabe el disco de arranque desde el disco de instalación de debian y arranque el sistema con él. En el indicador de arranque, suponiendo que la partición raíz de su instalación Linux es `' y que desea entrar al nivel de ejecución 3, escriba: boot: rescue root= 3 De esta manera arrancará con un sistema prácticamente funcional usando el kernel del disquete (pueden existir pequeños inconvenientes debido a la falta de algunas características o módulos del kernel). Véase también Sección 6.3.6, `Instalar un paquete en un sistema que no arranca' si su sistema está dañado. Si necesita un disquete de arranque personalizado, consulte el `readme.txt' del disco de rescate. 8.1.4. "¡Permítanme desactivar X al arrancar!" ---------------------------------------------- Chasing `unstable/sid' is fun, but buggy `xdm', `gdm', `kdm', and `wdm' started during the boot process can bite you bad. Primero acceda al shell del superusuario escribiendo lo siguiente en el indicador de arranque: boot: vga=normal s En este caso, es la etiqueta de la imagen del kernel que está arrancando. "vga=normal" nos asegurará que `lilo' se ejecute en una pantalla VGA normal y "s" (o "S") es el parámetro que se pasa a `init' para invocar el modo monousuario. Escriba la contraseña del superusuario en el símbolo de espera. Existen distintas maneras de desactivar todos los demonios que arrancan con X: * ejecute `update-rc.d dm stop 99 1 2 3 4 5 6 .' * escriba "exit 0" al comienzo de todos los archivos `/etc/init.d/dm'. * renombre todos los archivos `/etc/rc<2>.d/S99dm' como `/etc/rc2.d/K99dm'. * elimine todos los archivos `/etc/rc<2>.d/S99dm'. * ejecute `:>/etc/X11/default-display-manager' Aquí, el número en `rc<2>.d' se debe corresponder al nivel de ejecución especificado en el `/etc/inittab'. Asimismo `dm' significa que necesita ejecutar el comando múltiples veces sustituyéndolo con `xdm', `gdm', `kdm' o `wdm'. La primera de la lista es "la única manera verdadera" en Debian. La última es fácil pero sólo funciona en Debian y exige que que se configure el administrador de pantalla nuevamente usando `dpkg-reconfigure'. Los otros son métodos genéricos para deshabilitar demonios. Aún puede continuar arrancando X mediante el comando `startx' desde cualquier consola de shell. 8.1.5. Otros trucos con el indicador de arranque ------------------------------------------------ El sistema se puede arrancar en un nivel de ejecución particular y con una configuración determinada usando el indicador de arranque de `lilo'. Para más detalles consulte el BootPrompt-HOWTO (http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html) (LDP). Si desea arrancar el sistema en el nivel de ejecución cuatro, use la siguiente entrada para el indicador de arranque de `lilo'. boot: Linux 4 Si desea arrancar el sistema en modo monousuario y conoce la contraseña de superusuario, algunos de los siguientes ejemplos funcionará usando el indicador de arranque de `lilo'. boot: Linux S boot: Linux 1 boot: Linux -s Si desea arrancar el sistema con menos memoria de la que realmente posee el sistema (por ejemplo, 48MB en un sistema con 64MB), use la siguiente entrada para el indicador de arranque de `lilo': boot: Linux mem=48M Asegúrese de no especificar un valor mayor al tamaño de memoria real ya que si es así el kernel se colgará. Los núcleos antiguos y/o las placas madres con una BIOS antigua no usan la memoria por encima de los 64 MB, salvo que uno escriba `mem=128M' en el indicador de arranque o incluya una línea similar en el `/etc/lilo.conf'. 8.1.6. Configurando los parámetros de arranque (GRUB) ----------------------------------------------------- GRUB es un nuevo administrador de arranque del projecto Hurd y es mucho más flexible que lilo pero con un manejo ligeramente diferente de los parámetros de arranque. grub> find /vmlinuz grub> root (hd0,0) grub> kernel /vmlinuz root=/dev/hda1 grub> initrd /initrd grub> boot Aquí, debe tener presente los nombres de dispositivos que utiliza Hurd: Hurd/GRUB Linux MSDOS/Windows (fd0) /dev/fd0 A: (hd0,0) /dev/hda1 C: (en general) (hd0,3) /dev/hda4 F: (en general) (hd1,3) /dev/hdb4 ? Véase `/usr/share/doc/grub/README.Debian' y `/usr/share/doc/grub-doc/html/' para más detalles. 8.2. Registro de actividades ---------------------------- 8.2.1. Registrando las actividades del intérprete de comandos ------------------------------------------------------------- La administración del sistema implica tareas mucho más elaboradas en un entorno Unix que un entorno común de una computadora personal. Asegúrese de saber lo básico sobre configuración por si acaso necesita recuperar el sistema de algún problema. Las herramientas gráficas de configuración basadas en X11 son agradables y convenientes pero a menudo inapropiadas en situaciones de emergencia. En este contexto, el registro de las actividades del intérprete de comandos resulta ser una buena práctica especialmente como superusuario. Emacs: utilice M-x `shell' para empezar a grabar en el búfer y C-x C-w para escribir el contenido del mismo en un archivo. Intérprete de comandos: utilice el comando `screen' con "^A H" como se detalla en Sección 8.6.27, `Intercambiando consolas con `screen'' o el comando `script'. $ script Script started, file is typescript ... hacer cualquier cosa ... Ctrl-D $ col -bx savefile $ vi savefile Se puede utilizar lo siguiente en vez del comando `script': $ bash -i 2>&1 | tee typescript 8.2.2. Registrando las actividades en X --------------------------------------- Si necesita registrar la imagen de una aplicación X, incluyendo una terminal `xterm', utilice `gimp' (GUI). Puede capturar cada ventana o la totalidad de la pantalla. Otras alternativas son `xwd' (`xbase-clients'), `import' (`imagemagick') y `scrot' (`scrot'). 8.3. Copiar y archivar un subdirectorio entero ---------------------------------------------- 8.3.1. Comandos básicos para copiar un subdirectorio entero ----------------------------------------------------------- Si necesita reordenar la estructura de archivos, mueva el contenido incluyendo los enlaces a archivos mediante: Método estándar: # cp -a /directorio/fuente /directorio/destino # debe ser GNU # (cd /directorio/fuente && tar cf - . ) | \ (cd /directorio/destino && tar xvfp - ) Si existen enlaces duros, se necesita un método más elaborado: # cd /ruta/al/directorio/original # find . -depth -print0 | afio -p -xv -0a # /punto/de/montaje/del/nuevo/directorio En el caso de una conexión remota: # (cd /directorio/fuente && tar cf - . ) | \ ssh usuario@host.dom (cd /directorio/destino && tar xvfp - ) Si no hay archivos enlazados: # scp -pr usuario1@host1.dom:/directorio fuente \ usuario2@host2.dom:/directorio/destino En este caso, `scp' <==> `rcp' y `ssh' <==> `rsh'. El método para copiar un subdirectorio entero está basado en la información proporcionada por Manoj Srivastava de la lista debian-user@lists.debian.org. 8.3.2. `cp' ----------- Inicialmente, `cp' no resultaba ser el candidato correcto ya que no desreferenciaba enlaces simbólicos ni tampoco preservaba enlaces duros. Otra cosa a considerar eran los archivos de tamaño muy pequeño. GNU `cp' ha superado estas limitaciones. No obstante en sistemas que no son GNU cp puede aún tener problemas. Asimismo, no se pueden generar archivos portables pequeños usando `cp'. % cp -a . directorio_nuevo 8.3.3. `tar' ------------ Tar soluciona algunos de los problemas que tenía cp con los enlaces simbólicos. Sin embargo, `cpio' maneja archivos especiales que el `tar' tradicional no puede manejar. `tar' maneja múltiples enlaces duros colocando una única copia de un enlace en la cinta. El nombre asignado a dicha copia es el _único_ que se puede usar para recuperar el archivo. En cambio, `cpio' coloca una copia de cada enlace de manera que para recuperar el archivo se puede utilizar el nombre de cualquiera de ellas. El comando `tar' ha cambiado sus opciones para los archivos `.bz2' al pasar de Potato a Woody, por lo tanto, use `--bzip2' en los scripts en vez de su forma reducida `-I' (Potato) o `-j' (Woody). 8.3.4. `pax' ------------ Es la nueva utilidad para archivar, portable y compatible POSIX (IEEE Std 1003.2-1992, páginas 380-388 (sección 4.48) y páginas 936-940 (sección E.4.48)). `pax' lee, escribe y lista los componentes de un directorio y copia la jerarquía de los mismos. La operación pax es independiente del formato específico del archivo y admite una amplia variedad de formatos. Las implementaciones de `pax' son aún nuevas y están en pleno desarrollo. # apt-get install pax $ pax -rw -p e . directorio_nuevo o $ find . -depth | pax -rw -p e directorio_nuevo 8.3.5. `cpio' ------------- `cpio' almacena o extrae archivos en o de un archivo `tar' o `cpio'. El archivo puede ser otro archivo del disco, una cinta magnética o una tubería. $ find . -depth -print0 | cpio --null --sparse -pvd new-dir 8.3.6. `afio' ------------- `afio' es una mejor forma de tratar con archivos con formato cpio. Generalmente es más rápido que `cpio', proporciona más opciones para utilizar con cintas magnéticas y maneja mejor la corrupción de los datos de entrada. Admite archivos multi-volumen durante su operación interactiva. Afio puede crear archivos empaquetados que son mucho más seguros que los empaquetados con `tar' o `cpio'. En un script, para realizar una copia de seguridad, afio tiene un comportamiento óptimo como 'motor para archivar'. $ find . -depth -print0 | afio -px -0a directorio_nuevo Para crear todas mis copias de respaldo en una cinta uso `afio'. 8.4. Respaldos diferenciales y sincronización de datos ------------------------------------------------------ Los respaldos diferenciales y la sincronización de datos se pueden implementar mediante diversos métodos: * `rcs': copia de respaldo e historial, sólo texto * `rdiff-backup': copia de respaldo e historial. Se respetan enlaces simbólicos. * `pdumpfs': copia de respaldo e historial en un sistema de archivos. Se respetan los enlaces simbólicos. * `rsync': sincronización en un sólo sentido * `unison': sincronización en ambos sentidos * `cvs': sincronización en múltiples sentidos con un servidor e historial, sólo texto, maduro. Véase Sección 12.1, `Sistema de versiones concurrentes (CVS)'. * `arch': sincronización en múltiples sentidos con un servidor, copias de respaldo e historial, sin "directorio de trabajo". * `subversion': sincronización en múltiples sentidos con un servidor, copias de respaldo e historial, Apache. La combinación con uno de los métodos descriptos en Sección 8.3, `Copiar y archivar un subdirectorio entero' y la automatización de tareas descripta en Sección 8.6.26, `Planificar una actividad (`cron', `at')' permitirán crear un buen sistema de respaldo. Explicaré tres herramientas fáciles de usar. 8.4.1. Respaldos diferenciales con rdiff ---------------------------------------- `rdiff-backup' ofrece respaldos buenos y sencillos con historial diferencial para cualquier tipo de archivos incluyendo enlaces simbólicos. Para hacer una copia de respaldo de la mayor parte de `~/' en `/mnt/respaldo': $ rdiff-backup --include ~/tmp/conservar --exclude ~/tmp ~/ /mnt/respaldo Para restaurar los datos de hace tres días de este archivo en `~/antiguo': $ rdiff-backup -r 3D /mnt/respaldo ~/antiguo Véase rdiff-backup(1). 8.4.2. Copias de respaldo diarias con `pdumpfs' ----------------------------------------------- `pdumpfs' es un sencillo sistema para realizar copias de respaldo diarias similar al `dumpfs' de Plan9 que preserva cada réplica diaria del sistema. Es posible acceder en cualquier momento a réplicas antiguas para obtener un archivo de un día determinado. ¡ Hagamos una copia de respaldo de nuestro directorio personal con `pdumpfs' y `cron'! `pdumpfs' crea la réplica `AAAA/MM/DD' en el directorio de destino. Todos los archivos originales se copian al directorio réplica cuando `pdumpfs' se ejecuta por primera vez. A partir de la segunda vez y en adelante, `pdumpfs' copia sólamente archivos nuevos o actualizados y almacena los archivos sin modificar como enlaces duros a los archivos de la réplica del día previo para ahorrar espacio en disco. $ pdumpfs [] Véase pdumpfs(8). 8.4.3. Respaldos diferenciales con RCS -------------------------------------- `Changetrack' registrará en forma regular los cambios de los archivos de configuración en archivos RCS. Véase changetrack(1). # apt-get install changetrack # vi changetrack.conf 8.5. Recuperar al sistema de un cuelgue --------------------------------------- 8.5.1. Mate el procesoi ----------------------- Ejecute `top' para ver cuál es el proceso que está actuando de manera extraña. Pulse `P' para ordenar por tiempo de CPU, `M' para ordenar por uso de memoria y "k" para matar un proceso. En forma aternativa, se puede usar el estilo BSD `ps aux | less' o el System V `ps -efH | less'. La sintaxis del estilo System V muestra los ID de los procesos padres (`PPID') que se pueden utilizar para matar un proceso hijo zombie (malfuncionamiento). Utilice `kill' junto el ID del proceso para matar (o enviar una señal a) un proceso, `killall' para hacer lo mismo pero usando el nombre del comando. Señales de uso habitual: 1: HUP, reiniciar demonio 15: TERM, terminar un proceso en forma normal 9: KILL, matar un proceso sin contemplaciones 8.5.2. Alt-SysRq ---------------- La opción de compilación del kernel "Magic SysRq key" proporciona una protección contra el mal funcionamiento del sistema. Pulsando Alt-SysRq en una i386 y a continuación una de las teclas `r 0 k e i s u b' se obtiene el pase mágico. Un`r'aw restaura el teclado tras el cuelgue de X. Modifique el nivel de registro de la consola con `0' para reducir los mensajes de error. sa`k' (tecla de atención del sistema) mata a todos los procesos en la consola virtual actual. t`E'rminate mata a todos los procesos de la terminal actual salvo `init'. k`i'll mata a todos los procesos incluyendo a `init'. `s'ync (sincronizar), `u'mount (desmontar), y re`b'oot (reiniciar) a menudo se utilizan en el caso de situaciones realmente complicadas. En el momento de escribir este documento, los núcleos que vienen con la instalación predeterminada de Debian no han sido compilados con esta opción. Recompile el kernel para activarla. Se puede encontrar información detallada en: `/usr/share/doc/kernel-doc-/Documentation/sysrq.txt.gz'. 8.6. Algunos pequeños comandos útiles para tener en cuenta ---------------------------------------------------------- 8.6.1. Paginador ---------------- `less' es el paginador predeterminado (navegador del contenido de un archivo). Pulse `h' para obtener ayuda. Puede hacer muchas más cosas que `more'. `less' can be supercharged by executing `eval $(lesspipe)' or `eval $(lessfile)' in the shell start-up script. Véase más en `/usr/share/doc/lessf/LESSOPEN'. La opción `-R' permite la salida de caractéres raw y activa las secuencias de escape en color ANSI. Véase less(1). `w3m'puede ser un paginador alternativo útil para algunos sistemas de código (EUC). 8.6.2. Memoria disponible ------------------------- `free' y `top' brindan una buena información sobre los recursos de memoria disponibles. No se preocupe por el tamaño que figura bajo "used" de la línea "Mem:" sino por el valor que se encuentra justo debajo de él (38792 en el siguiente ejemplo). $ free -k # para una máquina con 256MB total used free shared buffers cached Mem: 257136 230456 26680 45736 116136 75528 -/+ buffers/cache: 38792 218344 Swap: 264996 0 264996 La cantidad de memoria física exacta se puede confirmar haciendo `grep '^Memory' /var/log/dmesg'. En este caso arroja el siguiente resultado: "Memory: 256984k/262144k available (1652k kernel code, 412k reserved, 2944k data, 152k init)". Total = 262144k = 256M (1k=1024, 1M=1024k) Free to dmesg = 256984k = Total - kernel - reserved - data - init Free to shell = 257136k = Total - kernel - reserved - data El sistema no puede usar cerca de 5MB ya que lo utiliza el propio kernel. 8.6.3. Configurar fecha y hora (BIOS) ------------------------------------- # date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show Esto fijará la fecha y hora del sistema y del hardware en MM/DD hh:mm, CCYY. La hora se muestra según el huso horario local pero el hardware utiliza el UTC.. 8.6.4. Configurar hora (NTP) ---------------------------- Referencia: Managing Accurate Date and Time HOWTO (http://www.tldp.org/HOWTO/TimePrecision-HOWTO/index.html). 8.6.4.1. Configurar la fecha y hora con una conexión a Internet permanente -------------------------------------------------------------------------- Configure el reloj del sistema para corregir la fecha y hora en forma automática mediante un servidor remoto: # ntpdate Si su sistema posee una conexión a Internet permanente, resulta interesante incluirlo en `/etc/cron.daily/'. 8.6.4.2. Configurar la hora y fecha con una conexión a Internet no permanente ---------------------------------------------------------------------------- Use el paquete `chrony'. 8.6.5. Como controlar características de la consola tales como el protector de pantalla ---------------------------------------------------------------------------- Para descativar el protector de pantalla, utilice los siguientes comandos: En la consola de Linux: # setterm -powersave off Ejecute la consola kon2 (kanji) con: # kon -SaveTime 0 Cuando esté ejecutando X: # xset s off o # xset -dpms o # xscreensaver-command -prefs Consulte las correspondientes páginas del manual para controlar otras características de la consola. Véase también stty(1) for changing and printing 8.6.6. Búsqueda en la base de datos administrativa -------------------------------------------------- Glibc ofrece getent(1) para buscar entradas en la base de datos administrativa (passwd, group, hosts, services, protocols o networks). getent database [clave ...] 8.6.7. Desactivar el sonido (bip) --------------------------------- Uno siempre puede desenchufar el parlante del PC ;-). Para el intérprete de comandos: echo "set bell-style none">> ~/.inputrc: 8.6.8. Mensajes de error por pantalla ------------------------------------- Para hacer desaparecer los mensajes de error por pantalla, el primer lugar a verificar es `/etc/init.d/klogd'. Fije `KLOGD="-c <3>"' en este script y ejecute `/etc/init.d/klogd restart'. Un método alternativo consiste en ejecutar `dmesg -n<3>'. Veamos el significado de los niveles de error: * 0: KERN_EMERG, sistema inutilizado * 1: KERN_ALERT, deben tomarse acciones de inmediato * 2: KERN_CRIT, condiciones críticas * 3: KERN_ERR, condiciones de error * 4: KERN_WARNING, condiciones de precaución * 5: KERN_NOTICE, condiciones normales pero significativas * 6: KERN_INFO, mensajes informativos * 7: KERN_DEBUG, mensajes a nivel depuración Si un mensaje de error inútil lo molesta continuamente, considere crear un parche para el kernel sencillo tal como `shutup-abit-bp6' (disponible en el subdirectorio de ejemplos (http://www.debian.org/doc/manuals/debian-reference/examples/)). Otro lugar que hay que ver es el `/etc/syslog.conf'; verifique si los mensajes de error se envían a la consola. 8.6.9. Configurar la consola ---------------------------- En sistemas tipo UNIX se accede a las pantallas de la consola mediantes rutinas de la biblioteca (n)curses. Éstas brindadn al usuario un método independiente del terminal de actualizar las pantallas de caracteres con una optimización razonable. Véase ncurses(3X) y terminfo(5). En un sistema Debian, existe una infinidad de entradas predefinidas: $ toe | less # todas las entradas $ toe /etc/terminfo/ | less # entradas reconfigurables por el usuario Exporte su elección mediante la variable de entorno `TERM'. Si la entrada terminfo para `xterm' no funciona con una `xterm' no-Debian, cuando acceda a un sistema Debian en forma remota cambie el tipo de su terminal de "xterm" a una de las versiones con menos características como, por ejemplo, "xterm-r6". Véase `/usr/share/doc/libncurses5/FAQ' para más información. 8.6.10. Volver la consola a su estado normal -------------------------------------------- Si la pantalla se enloquece después de hacer `cat ' (quizás no pueda ver el comando que ingresa mientras escribe) haga: $ reset 8.6.11. Convertir un archivo de texto en formato DOS a formato Unix ------------------------------------------------------------------- Convertir un archivo de texto en formato DOS (fin-de-línea=^M^J) en un archivo Unix (^J). # apt-get install sysutils $ dos2unix dosfile 8.6.12. Sustitución de expresiones regulares -------------------------------------------- Para reemplazar todas las instancias por en todos los archivos ...: $ perl -i -p -e 's///g;' .... `-i' es para "editar en el lugar", `-p' significa "bucle implícito sobre los archivos FILES ...". Si la sustitución es compleja, la recuperación ante posibles errores resulta más fácil usando el parámetro `-i.bak' en vez de `-i'. De esta manera se conservará una copia de los archivos originales a los que se les agregará la extensión `.bak'. 8.6.13. Editar un archivo con un script --------------------------------------- El siguiente script eliminará las líneas de la 5 a la 10 y desde la 16 a la 20. #!/bin/bash ed $1 < o según la ubicación del archivo: $ diff -u > $ diff -u > El archivo diff (llamado también parche) se utiliza para enviar actualizaciones de programas. La parte recibida aplicará esta actualización a otro mediante: $ patch -p0 < $ patch -p1 < Si tiene tres versiones del código fuente, puede combinarlos efectivamente usando `diff3': $ diff3 -m > 8.6.15. Convertir un archivo grande en archivos más pequeños ------------------------------------------------------------ $ split -b 650m # dividir el archivo en partes de 650 MB $ cat x* > # unir los archivos en un archivo grande 8.6.16. Extraer datos de una tabla contenida en un archivo de texto ------------------------------------------------------------------- Consideremos un archivo de texto llamado `DPL' en donde todos los nombres de los líderes del proyecto Debian y el día de su asunción están listados separados entre sí mediante espacios. Ian Murdock Agosto 1993 Bruce Perens Abril 1996 Ian Jackson Enero 1998 Wichert Akkerman Enero 1999 Ben Collins Abril 2001 Bdale Garbee Abril 2002 Martin Michlmayr Marzo 2003 A menudo, se utiliza Awk para extraer datos de este tipo de archivos. $ awk '{ print $3 }' , y combinados. Sea cuidadoso al usar estos trucos con el IFS del intérprete de comandos. Pueden ocurrir cosas extrañas cuando el shell interpreta parte de un script como si se fuese su _entrada_. $ IFS=":," # utiliza ":" y "," como IFS $ echo IFS=$IFS, IFS="$IFS" # echo es un comando del Bash IFS= , IFS=:, $ date -R # simplemente la salida de un comando Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # subshell --> entrada al shell principal Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # volver al IFS predeterminado $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200 8.6.17. Pequeños scripts que incluyen tuberías ---------------------------------------------- Los siguientes scripts realizan tareas útiles utilizando tuberías. find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local" # encontrar todos los archivos en /usr # excluyendo algunos archivos xargs -n 1 # ejecutar comando para todos los ítems de la stdin xargs -n 1 echo| # escribir ítems separados por espacios en blanco # en renglones grep -e | # extraer líneas con un determinado cut -d: -f3 -| # extraer el tercer campo separado por : # (archivo passwd, etc.) awk '{ print $3 }' | # extraer el tercer campo separado por espacios en blanco awk -F'\t' '{ print $3 }' | # extaer el tercer campo separado por tabulaciones col -bx | # eliminar retrocesos y convertir tabulaciones en # espacios expand -| # transformar las tabulaciones sort -u| # ordenar y eliminar duplicados tr '\n' ' '| # concatenar líneas en una sola línea tr '\r' ''| # eliminar CR (retornos de carro) tr 'A-Z' 'a-z'| # convertir mayúsculas en minúsculas sed 's/^/# /'| # transformar cada línea en un comentario sed 's/\<.ext>//g'| # eliminar <.ext> sed -n -e 2p| # mostrar la segunda línea head -n 2 -| # mostrar las primeras 2 líneas tail -n 2 -| # mostrar las últimas 2 líneas 8.6.18. Pequeños scripts para recorrer distintos archivos --------------------------------------------------------- Las siguientes maneras de recorrer distintos archivos que coincidan con `*.' asegura un correcto manejo de nombres de archivos extraños -como los que incluyen espacios- y realizan la misma tarea: * Bucle del shell (esta es una entrada de múltiples líneas con `PS2="> "') [1]: for in *.; do if test -f "$"; then "$" fi done * Combinación de `find' y `xargs': find . -type f -maxdepth 1 -name '*.' -print0 | \ xargs -0 -n 1 * `find' con la opción `-exec' y un comando: find . -type f -maxdepth 1 -name '*.' \ -exec '{}' \; * `find' con la opción `-exec' y un script de shell breve: find . -type f -maxdepth 1 -name '*.' \ -exec sh -c " '{}' && echo 'exitoso'" \; [1] Si la escribe en una sóla línea, necesita añadir algunos punto y comas, "`;'", para marcar el final de los comandos del shell. 8.6.19. La locura de los script cortos en Perl ---------------------------------------------- Aunque todos los scripts en Awk se pueden reescribir automáticamente en Perl usando a2p(1), los scripts Awk de una sola línea en Awk se convierten mejor en scripts en perl de una línea en forma manual. Por ejemplo awk '($2=="1957") { print $3 }' | es equivalente a cualquiera de las siguientes líneas: perl -ne '@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}' | perl -ne 'if ((@f=split)[1] eq "1957") { print "$f[2]\n"}' | perl -ne '@f=split; print $f[2] if ( $f[1]==1957 )' | perl -lane 'print $F[2] if $F[1] eq "1957"' | Se pueden eliminar todos los espacios en los argumentos de `perl' de la línea anterior y tomar ventaja de la conversión automática entre números y cadena de caracteres que existe en Perl: perl -lane 'print$F[2]if$F[1]eq+1957' | Véase perlrun(1) para las opciones de la línea de comandos. Para más scripts delirantes en Perl, puede resultar interesante http://perlgolf.sourceforge.net. 8.6.20. Obtener el texto de una página web o del archivo de una lista de correos ---------------------------------------------------------------------------- Lo siguiente leerá una página web como un archivo de texto. Resulta muy útil cuando se desea copiar configuraciones que se obtienen de la red. $ lynx -dump http:// > Aquí también se pueden usar `links' y `w3m', con ligeras diferencias en el renderizado. Si se trata de un archivo de una lista de correo, use `munpack' para obtener los contenidos mime del texto. 8.6.21. Impresión de una página web ----------------------------------- Lo siguiente imprimirá una página web en una impresora/archivo PostScript. $ apt-get install html2ps $ html2ps | lpr Véase Sección 3.6.1, ``lpr'/`lpd''. También tenga en cuenta los paquetes `a2ps' y `mpage' para crear archivos PostScript. 8.6.22. Impresión de la página una página del manual ---------------------------------------------------- Lo siguiente imprimirá una página manual en una impresora/archivo PostScript. $ man -Tps | lpr $ man -Tps | mpage -2 | lpr 8.6.23. Combinar dos archivos PostScript o PDF ---------------------------------------------- Es posible combinar dos archivos PostScript o PDF. $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite \ -sOutputFile= -f \ $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \ -sOutputFile= -f \ 8.6.24. El tiempo de un comando ------------------------------- Mostrar el tiempo empleado por un proceso. # time >/dev/null real 0m0.035s # tiempo de reloj (tiempo real transcurrido) user 0m0.000s # tiempo en modo usuario sys 0m0.020s # tiempo en modo kernel 8.6.25. El comando `nice' ------------------------- Use `nice' (del paquete GNU `shellutils') para fijar el valor "nice" de un comando al ejecutarlo. `renice' (`bsdutils') y `top' puede modificar el valor "nice" de un proceso. El proceso más lento tiene el valor 19 (prioridad más baja); los valores negativos son "not-nice". El valor -20 lo tiene el proceso más veloz (prioridad alta). Sólo el superusuario puede fijar valores "nice" negativos. # nice -19 top # muy lento # nice --20 cdrecord -v -eject speed=2 dev=0,0 disk.img # muy rápido A veces un valor extremo de nice hace más daño que bien al sistema. Utilice este comando con cuidado. 8.6.26. Planificar una actividad (`cron', `at') ----------------------------------------------- Use `cron' y `at' para planificar tareas en Linux. Véase at(1), crontab(5), crontab(8). Ejecute el comando `crontab -e' para crear o editar el archivo crontab para configurar eventos planificados. Ejemplo de un archivo crontab: # utilice /bin/sh para ejecutar los comandos sin importar lo que dice el # /etc/passwd SHELL=/bin/sh # envíe un mensaje a `pablo' sin importar a quien pertenece el crontab MAILTO=pablo # Minuto Hora Día_del_mes Mes Día_de_la_semana comando # ejecutar todos los días a las 00:05 5 0 * * * $HOME/bin/tarea.diaria >> $HOME/tmp/salida 2>&1 # ejecutar a las 14:15 el primer día de cada mes -- enviar salida a Pablo 15 14 1 * * $HOME/bin/mensual # ejecutar a las 22:00 todos los días hábiles (1-5), molestar a José. # % para nueva línea, el último % para cc: 0 22 * * 1-5 mail -s "Son las 10 de la noche" josé%José:%%¿Dónde están los chicos?%.%% 23 */2 1 2 * echo "ejecutar el 1 de febrero a los 23 minutos después de 0am, 2am, 4am ..." 5 4 * * sun echo "ejecutar todos los domingos a las 04:05" # ejecutar a las 03:40 el primer lunes de cada mes 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && comando -args Ejecutar el comando `at' para planificar una tarea una sola vez: $ echo 'command -args'| at 3:40 monday 8.6.27. Intercambiando consolas con `screen' -------------------------------------------- El programa `screen' permite ejecutar _múltiples_ terminales virtuales, cada una con su intérprete de comandos interactivo, en una _única_ terminal física o ventana que emule un terminal. Incluso si utiliza consolas virtuales Linux o múltiples ventanas `xterm', merece la pena experimentar con `screen' por sus _amplias funcionalidades_ que incluye: * navegación por el histórico de comandos, * copiar y pegar, * registro de accesos al sistema, * entrada de caracteres especiales y * la capacidad de _separar_ una sesión entera de `screen' del terminal para recuperarla posteriormente. 8.6.27.1. Acceso remoto ----------------------- Si frecuentemente se conecta a una máquina Linux desde un terminal remoto o usando el terminal VT100, `screen' le facilitará muchísimo las cosas. 1. Supongamos que estamos conectado a la red mediante una conexión telefónica ejecutando una sesión compleja de `screen' con editores y otros programas abiertos en diversas ventanas. 2. De repente necesita abandonar su terminal, pero no deseamos perder nuestro trabajo al colgar la línea. 3. Simplemente teclee `^A d' para _separar_ las sesión y desconéctese (o aún más rápido, teclee `^A DD' para que `screen' se separe y se desconecte por sí misma) 4. Cuando se conecte nuevamente, escriba el comando `screen -r' y `screen' mágicamente automáticamente _recuperará_ todas las ventanas que había abierto. 8.6.27.2. Comandos de `screen' típicos -------------------------------------- Una vez que arranca `screen' toda la entrada de datos que se hace a través del teclado se envía a la ventana actual excepto la combinación de teclas de comando, por defecto `^A'. Todos los comandos de `screen' se ingresan escribiendo `^A' seguido de una sola tecla [y eventualmente algunos parámetros]. Algunos comandos útiles: ^A ? mostrar ventana de ayuda (muestra las asociaciones de teclas) ^A c crear una nueva ventana y cambiar a ella ^A n ir a la siguiente ventana ^A p ir a la ventana anterior ^A 0 ir a la ventana número 0 ^A w mostrar la lista de ventanas ^A a enviar un Ctrl-A a la ventana actual como entrada del teclado ^A h grabar una copia de la ventana actual a un archivo ^A H comenzar/finalizar la grabación de ventana actual en un archivo ^A ^X bloquear la terminal (protegida con contraseña) ^A d separar una sesión del terminal ^A DD separar una sesión y salir Éste es sólo una pequeña muestra de los comandos y características de `screen'. Si hay algo que desea que `screen' haga, ¡existe una gran posibilidad que pueda hacerlo!. screen(1) para más detalles. 8.6.27.3. Tecla de retroceso y/o Ctrl-H en un sesión de `screen' ---------------------------------------------------------------- Si comprueba que la tecla de retroceso y/o Ctrl-H no funciona correctamente cuando ejecuta `screen', edite el archivo `/etc/screenrc,' localice la línea bindkey -k kb stuff "\177" y coméntela (es decir, agréguele el carácter "#" al principio). 8.6.27.4. Programa para X equivalente a `screen' ------------------------------------------------ Consulte `xmove'. Véase xmove(1). 8.6.28. Probando la red ----------------------- Instale `netkit-ping', `traceroute', `dnsutils', `ipchains' (para el kernel 2.2), `iptables' (para el kernel 2.4 ) y el paquete `net-tools': $ ping # verificar la conexión a Internet $ traceroute yahoo.com # rastrear paquetes IP $ ifconfig # verificar la configuración del # anfitrión (host) $ route -n # verificar la configuración de la ruta $ dig [@dns-server.com] host.dom [{a|mx|any}] |less # verificar registros host.dom DNS [@ dns-server.com] para # un registro <{a|mx|any}> $ ichains -L -n |less # verificar filtrado de paquetes (kernel 2.2) $ iptables -L -n |less # verificar filtrado de paquetes (kernel 2.4) $ netstat -a # mostrar todos los puertos abiertos $ netstat -l --inet # mostrar los puertos en escucha $ netstat -ln --tcp # mostrar puertos tcp en escucha (numérico) 8.6.29. Eliminar mensajes de la cola local ------------------------------------------ Para eliminar los mensajes de la cola local: # exim -q # eliminar mensajes en espera # exim -qf # eliminar todos los mensajes # exim -qff # eliminar incluso mensajes bloqueados "-qff" puede resultar mejor para el script /etc/ppp/ip-up.d/exim. Para Sarge, reemplace `exim' con `exim4'. 8.6.30. Eliminar mensajes bloqueados de la cola local ----------------------------------------------------- Para eliminar mensajes de correo bloqueados de la cola local reenviando el mensaje de error: # exim -Mg `mailq | grep frozen | awk '{ print $3 }'` Para Sarge, reemplace `exim' por `exim4' 8.6.31. Redistribuir los contenidos de `mbox' --------------------------------------------- Si se llenó su directorio personal y `procmail' falló necesitará distribuir en forma manual sus mensajes de `/var/mail/' a los buzones de correo situados en su directorio personal. Luego de hacer espacio en el mismo, haga: # /etc/init.d/exim stop # formail -s procmail # /etc/init.d/exim start Para Sarge, reemplace `exim' por `exim4'. 8.6.32. Borrar el contenido de un archivo ----------------------------------------- Para borrar el contenido de un archivo (un archivo log, por ej.) no utilice `rm' para eliminarlo y `mkdir' para crealo nuevamente, ya que el archivo puede estar siendo consultado en el intervalo comprendido entre la ejecución de ambos comandos. Lo siguiente es la manera más segura de borrar el contenido de un archivo. $ :> 8.6.33. Archivos fantasma ------------------------- Los siguientes comandos creará archivos fantasmas (archivos vacíos): $ dd if=/dev/zero of= bs=1k count=5 # 5KB de # contenido # cero $ dd if=/dev/urandom of= bs=1m count=7 # 7MB de # contenido # al azar $ touch # crear un archivo de 0B (si el archivo # existe actualizar mtime) Por ejemplo, los siguientes comandos ejecutados desde el shell de un disco de arranque Debian borrará íntegramente el contenido del disco duro `/dev/hda'. # dd if=/dev/urandom of=/dev/hda ; dd if=/dev/zero of=/dev/hda 8.6.34. `chroot' ---------------- El programa `chroot', chroot(8), nos permite ejecutar diferentes instancias de un entorno GNU/Linux en un único sistema, simultáneamente y sin reiniciar. Asimismo, uno puede ejecutar un programa que insuma gran cantidad de recursos (por ejemplo, `apt-get' o `dselect') bajo el chroot de una máquina anfitrión veloz, montando en ella una máquina auxiliar lenta (máquina satélite) mediante NFS en modo lectura/escritura, siendo el punto de montaje el directorio chroot. 8.6.34.1. Ejecutar distintas versiones de Debian mediante `chroot' ------------------------------------------------------------------ Un entorno chroot Debian se puede crear en Woody fácilmente mediante el comando `debootstrap'. Por ejemplo, para crear un chroot Sid en con una conexión de Internet rápida: main # cd / ; mkdir main # debootstrap sid ... observe descargar todo el sistema main # echo "proc-sid /proc proc none 0 0" >> /etc/fstab main # mount proc-sid /proc -t proc main # cp /etc/hosts /etc/hosts main # chroot /bin/bash chroot # apt-setup # configurar /etc/apt/sources.list chroot # vi /etc/apt/sources.list # apuntar a la rama inestable chroot # dselect # puede usar aptitude, instalar mc y vim :-) A esta altura, debería tener un sistema Debian totalmente funcional, donde podrá jugar sin temor de afectar su instalación Debian principal. Este truco con `debootstrap' se puede utilizar para instalar Debian en un sistema sin usar Debian install disk but using one for another GNU/Linux distribution. Véase http://www.debian.org/releases/stable/i386/ch-preparing#s-linux-upgrade. 8.6.34.2. Configurar el acceso para `chroot' -------------------------------------------- Escribir `chroot /bin/bash' es fácil, pero conserva toda clase de variables de entorno que quizás no desee y acarrea otros problemas. Un mejor enfoque consiste en ejecutar otro proceso login en una terminal virtual aparte donde pueda entrar al sistema chroot directamente. Puesto que, en los sistemas Debian predeterminados, las consolas Linux se ejecutan desde `tty1' hasta `tty6' y el sistema X Window se ejecuta en `tty7', configuremos, como ejemplo, una consola chroot en `tty8'. Luego de crear un sistema chroot como se explicó en Sección 8.6.34.1, `Ejecutar distintas versiones de Debian mediante `chroot'', escriba desde el shell del superusuario en el sistema principal: main # echo "8:23:respawn:/usr/sbin/chroot "\ "/sbin/getty 38400 tty8" >> /etc/inittab main # init q # vuelve a cargar init 8.6.34.3. Configurando X para `chroot' -------------------------------------- ¿Desea ejecutar la última versión de X y Gnome en forma segura en su chroot? ¡Es perfectamente posible! El siguiente ejemplo hará que GDM se ejecute en un terminal virtual `vt9'. Primero instale el sistema chroot usando el método descripto en Sección 8.6.34.1, `Ejecutar distintas versiones de Debian mediante `chroot''. Siendo superusuario en el sistema principal, copie los archivos de configuración claves en el sistema chroot. main # cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4 main # chroot # o utilice la consola chroot chroot # apt-get install gdm gnome x-window-system chroot # vi /etc/gdm/gdm.conf # haga s/vt7/vt9/ en la sección [servers] chroot # /etc/init.d/gdm start En este caso, se editó `/etc/gdm/gdm.conf' para que la consola virtual inicial sea `vt9' en vez de `vt7'. A partir de ahora, puede fácilmente alternar entre el entorno X del chroot y su sistema principal simplemente cambiando de terminal virtual; por ejemplo, usando Ctrl-Alt-F7 y Ctrl-Alt-F9. ¡Que se diviertan! [FIXME] Añadir un comentario y enlace al script init del `gdm' del chroot. 8.6.34.4. Ejecutar otra distribución con `chroot' ------------------------------------------------- Se puede crear fácilmente un entorno chroot para otra distribución Linux. Instale un sistema en una partición aparte usando el instalador de otra distribución. Si su partición raíz se encuentra en `': main # cd / ; mkdir main # mount -t ext3 main # chroot /bin/bash Luego proceda como en Sección 8.6.34.1, `Ejecutar distintas versiones de Debian mediante `chroot'', Sección 8.6.34.2, `Configurar el acceso para `chroot'' y Sección 8.6.34.3, `Configurando X para `chroot''. 8.6.34.5. Compilar un paquete con `chroot' ------------------------------------------ Existe un paquete chroot más sofisticado, `pbuilder', que crea un sistema chroot y compila un paquete dentro de él. Es un sistema ideal para verificar que las dependencias de compilación de un paquete sean correctas y para estar seguros que no existan dependencias innecesarias o erróneas en el paquete resultante. 8.6.35. Cómo verificar los enlaces duros ---------------------------------------- Puede ver si dos archivos son uno solo con dos enlaces duros, haciendo: $ ls -li 8.6.36. Montar una imagen del disco duro ---------------------------------------- Si `' contiene una imagen de los contenidos de un disco duro y el disco original tenía una configuración = (bytes/sector) * (sectores/cilindro), entonces lo siguiente la montará en `/mnt': # mount -o loop,offset= /mnt Obsérvese que la mayoría de los discos duros tienen 512 bytes/sector. 8.6.37. Samba ------------- Lo básico para obtener archivos desde Windows: # mount -t smbfs -o \ # monta un directorio Windows en Linux # smbmount \ -o "" # smbclient -L <192.168.1.2> # lista los archivos compartidos de una # máquina Los vecinos de Samba se pueden localizar desde Linux haciendo: # smbclient -N -L | less # nmblookup -T "*" 8.6.38. Utilidades para otros sistemas de archivos -------------------------------------------------- El kernel de Linux soporta diversos sistemas de archivos. Por lo tanto, se puede acceder a ellos montando los dispositivos que los contienen. Para determinados sistemas de archivos, existen algunas herramientas especializadas para acceder a ellos sin tener que montar los correspondientes dispositivos. Estas operaciones se realizan por programas del espacio del usuario, con lo cual no se necesita el soporte de sistemas de archivos del kernel. * `mtools': para sistemas de archivos MSDOS (MS-DOS, Windows) * `cpmtools': para sistemas de archivos CP-M * `hfsutils': para sistemas de archivos HFS (Macintosh nativo) * `hfsplus': para sistema de archivos HFS+ (Macintosh moderno) `dosfstools' resulta útil para crear y verificar sistemas de archivos FAT MS-DOS.. 8.7. Errores típicos a tener presente ------------------------------------- Veamos algunos ejemplos de acciones peligrosas. El impacto negativo será mayor si utiliza la cuenta con privilegios de `superusuario'. 8.7.1. `rm -rf .*' ------------------ En "`rm -rf .*'", el "`.*'" se expande para incluir "`.'" y "`..'", y si por casualidad tiene privilegios para escribir en el directorio padre, terminará por eliminar todos los directorios _next_ to your current directory as well. * "`rm -rf .'" : borra todo lo que se encuentra en el directorio actual incluyendo el propio directorio. * "`rm -rf *'" : borra todos los archivos y directorios del directorio actual (excluyendo los que comienzan con un punto) * "`rm -rf .[^.]*'" : borra todos los archivos punto y los directorios normales del directorio actual. * "`rm -rf .*'" : borra todo del directorio padre y al propio directorio. 8.7.2. `rm /etc/passwd' ----------------------- Es difícil la pérdida de algunos archivos importantes como `/etc/passwd' por descuido. El sistema Debian realiza copias de seguridad regulares de ellos en `/var/backups/'. Al restaurar estos archivos, tiene que configurar manualmente los permisos adecuados. # cp /var/backups/passwd /etc/passwd # chmod 644 /etc/passwd Véase también Sección 6.3.4, `Recuperar los datos de la selección de paquetes'. ------------------------------------------------------------------------------- 9. Puesta a punto del sistema Debian ------------------------------------ Este capítulo describe solamente lo básico de la configuración del sistema mediante interfaces basada en textos. Como prerrequisito de este capítulo léase Capítulo 3, `Consejos para la instalación de un sistema Debian'. Para aquellos interesados en la seguridad, es altamente recomendables leer Securing Debian Manual (http://www.debian.org/doc/manuals/securing-debian-howto/) que se también se puede encontrar en el paquete `harden-doc'. 9.1. Trucos para la inicialización del sistema ---------------------------------------------- Véase Sección 2.4.1, `El programa `init'' para los fundamentos del script init de Debian. 9.1.1. Personalizando los scripts init -------------------------------------- Debian utiliza el sistema de scripts sys-V. Aunque todos los scripts init en `/etc/init.d/*' están marcados como archivos de configuración y el administrador del sistema tiene la libertad de modificarlos, es preferible personalizarlos editando los archivos `/etc/default/*'. Por ejemplo, `/etc/init.d/rcS' se puede usar para personalizar los valores predeterminados de arranque de `motd', `sulogin', etc. 9.1.2. Personalizando el sistema de registro -------------------------------------------- El modo de registro del sistema se puede configurar usando `/etc/syslog.conf'. Utilice el paquete `colorize' para dar distintos colores a los archivos de registro del sistema. Véase también syslogd(8) y syslog.conf(5). 9.1.3. Optimización del acceso al hardware ------------------------------------------ Existen algunas pocas configuraciones de optimización del hardware que Debian deja a cargo del administrador del sistema. * `hdparm' * Optimización del acceso al disco. Muy efectivo. * Peligroso. Primero debe leer hdparm(8). * `hdparm -tT ' to test disk access speed. * `hdparm -c1 -d1 -u1 -m16 -A ' para acelerar un sistema IDE moderno (puede resultar peligroso). * `setcd' * Optimización del acceso a la unidad de CDs. * `setcd -x <2>' para disminuir la velocidad a <2>x. * Véase setcd(1). * `setserial' * Conjunto de herramienta para la administración del puerto serie. * `scsitools' * Conjunto de herramientas para la administración de hardware SCSI. * `memtest86' * Conjunto de herramientas para la administración de la memoria. * `hwtools' * Conjunto de herramientas para la administración de hardware de bajo nivel. * irqtune: modifica la prioridad del IRQ de los dispositivos para que aquellos que requieran de una prioridad alta y un servicio rápido lo puedan conseguir (por ejemplo, puertos serie, módems) Es posible incrementar el rendimiento de un módem/puerto serie en un factor 3X. * scanport: analiza el espacio I/O de 0x100 a 0x3ff buscando dispositivos ISA instalados. * inb: un pequeño programa que lee un puerto I/O y vuelca el valor en hexadecimal o binario. * `schedutils' * Utilidades de planificación de Linux. * se incluyen `taskset', `irqset', `lsrt', y `rt'. * Junto con `nice' y `renice' (no incluídos), permiten el control absoluto de los parámetros de la planificación de procesos. También resulta muy efectivo montar un sistema de archivos con la opción noatime para incrementar el acceso de lectura a los archivos. Véase fstab(5) y mount(8). Algunos dispositivos se pueden poner a punto directamente mediante el kernel de Linux por medio del sistema de archivos proc. Véase Sección 7.3, `Poniendo a punto al kernel mediante el sistema de archivos proc'. Existen diversas utilidades para la configuración de hardware específico en Debian. La mayoría de ellas tienen en cuenta los requerimientos específicos de las PC portátiles. Veamos algunos paquetes interesantes en Derbian: * `tpconfig' - Programa para configurar el touch pad * `apmd' - Utilidades para la Administración Avanzada de Energía (APM) * `acpi' - Muestra información sobre dispositivos ACPI * `acpid' - Utilidades para usar ACPI * `lphdisk' - Prepara una partición para hibernación para Phoenix NoteBIOS * `sleepd' - Hace "dormir" una portátil durante su inactividad. * `noflushd' - Permite disminuir la velocidad de rotación de los discos duros ociosos * `big-cursor' - Cursores del ratón más grandes para X * `acme' - Activa las "teclas multimedias" de los ordenadores portátiles * `tpctl' - Herramientas de configuración de hardware para la IBM ThinkPad * `mwavem' - Soporte del módem Mwave/ACP * `toshset' - Acceso a la mayoría de la interfaz de hardware de la pc portátil Toshiba * `toshutils' - Utilidades para la pc portátil Toshiba * `sjog' - Un programa para usar el "Jog Dial" de las pc portátiles Sony Vaio * `spicctrl' - Programa para configurar el brillo de fondo de la pantalla LCD de la Sony Vaio ACPI es un estándar para la administración de la energía del sistema más nuevo que APM. Algunos de estos paquetes necesitan módulos especiales del kernel. En muchos casos ya han sido incluido en las últimas funentes del mismo. En caso de problemas, puede aplicar el último parche para el kernel por su propia cuenta. 9.2. Control de acceso ---------------------- 9.2.1. Control de acceso mediante PAM y login --------------------------------------------- PAM (Módulos de Autenticación Conectables, con sus siglas en inglés) proporciona el control del acceso. /etc/pam.d/* # archivos de control de PAM /etc/pam.d/login # archivo de control PAM para el acceso /etc/security/* # parámetros del módulo de PAM /etc/securetty # controla el acceso del superusuario en consola (login) /etc/login.defs # controla el comportamiento de login Si desea acceder a consolas sin necesidad de contraseña modifique, bajo su entera responsabilidad, el contenido del archivo `/etc/pam.d/login' de la siguiente manera #auth required pam_unix.so nullok auth required pam_permit.so Un truco similar se puede aplicar para `xdm', `gdm', ... , para conseguir una consola X sin contraseña. Por otra parte, si desea reforzar su política de contraseñas, instale `cracklib2' y añada lo siguiente a su `/etc/pam.d/passwd'. password required pam_cracklib.so retry=3 minlen=6 difok=3 Para la activación de una cuenta puede ayudar una contraseña temporaria. Para ello, use el comando passwd con la opción `-e' passwd(1). En bash se puede configurar el número máximo de procesos con `ulimit -u 1000' o desde PAM con la configuración de `/etc/security/limits.conf'. De igual manera se pueden configurar otros parámetros como, por ejemplo, `core'. El valor inicial de `PATH' se puede fijar mediante el archivo `/etc/login.defs' antes de script de arranque del shell. La documentación de PAM se encuentra en el paquete `libpam-doc'. La Guía del Administrador de un Sistema Linux-PAM explica la configuración de PAM, los módulos que hay disponibles, etc. La documentación también incluye la Guía para Desarrolladores de Aplicaciones Linux-PAM y la Guía de Desarrolladores de Módulos Linux-PAM. 9.2.2. "Por qué el `su' GNU no soporta el grupo `wheel'" -------------------------------------------------------- Esta es la famosa frase de Richard M. Stallman al final de la antigua página info de `su'. No se preocupe: el `su' actual en Debian utiliza PAM, de modo que uno puede restringir la posibilidad de usar `su' a cualquier grupo usando `pam_wheel.so' en `/etc/pam.d/su'. Lo siguiente configurará al grupo `adm' en un sistema Debian en forma equivalente al grupo BSD `wheel' y permitirá a sus miembros hacer `su' sin contraseña. # configuración anti-RMS en /etc/pam.d/su auth required pam_wheel.so group=adm # permitir a los miembros de wheel hacer su sin contraseña auth sufficient pam_wheel.so trust group=adm 9.2.3. Significado de los distitos grupos ----------------------------------------- Algunos grupos interesantes: * el grupo `root' es el grupo wheel predeterminado para `su' si se usa `pam_wheel.so' sin el argumento `group='. * el grupo `adm' puede leer los archivos de registro. * el grupo `cdrom' se puede usar en forma local para dar a un conjunto de usuarios acceso a la unidad de CD. * el grupo `floppy' se puede usar en forma local para dar a un conjunto de usuarios acceso a la unidad de disquete. * el grupo `audio' se puede usar en forma local para dar a un conjunto de usuarios acceso al dispositivo de audio. * el grupo `src' administra el código fuente, incluyendo los archivos de `/usr/src'. Se puede usar localmente para dar a un usuario la posibilidad de administrar el código fuente del sistema. * el grupo `staff' es útil para administradores de sistemas junior, dándoles la posibilidad de hacer cosas en `/usr/local' y crear directorios en `/home'. Para una lista completa, véase la sección "FAQ" en el Securing Debian Manual (http://www.debian.org/doc/manuals/securing-debian-howto/), que también se puede encontrar en el paquete `harden-doc'. 9.2.4. `sudo' -- un entorno de trabajo más seguro ------------------------------------------------- Utilizo `sudo' principalmente como protección contra mi propia estupidez. Considero que usar `sudo' es una mejor alternativa que usar el sistema siendo superusuario. YMMV. Instale `sudo' y actívelo configurando /etc/sudoers (http://www.debian.org/doc/manuals/debian-reference/examples/). También consulte las posibilidades de `sudo' para los grupos en `/usr/share/doc/sudo/OPTIONS'. La configuración de ejemplo brinda a los miembros del grupo "staff" el acceso a todos los comandos ejecutados como superusuario bajo `sudo' y también proporciona a los miembros del grupo "src" a determinados comandos ejecutados como superusuario bajo `sudo'. La ventaja de `sudo' radica en que sólo requiere de la contraseña de un usuario normal y que su actividad es monitoreada. Esta es una buena manera de dar cierta autoridad a un administrador principiante. Por ejemplo: $ sudo chown -R : . Por supuesto, si conoce la contraseña de superusuario (como la mayoría de los usuarios domésticos), cualquier comando se puede ejecutar como superusuario desde una cuenta de usuario normal: $ su -c "shutdown -h now" Password: (Soy conciente que debería limitar los privilegios de la cuenta del administrador con `sudo'. Pero puesto que se trata de mi servidor personal, aún no me he molestado en hacerlo) Otro programa que permite a los usuarios normales ejecutar comandos con privilegios de superusuario, véase el paquete `super'. 9.2.5. Control de accesos a los demonios ---------------------------------------- El _superservidor_ de Internet, `inetd', es ejecutado durante el arranque por `/etc/rc2.d/S20inetd' (para el nivel de ejecución 2), que es un enlace simbólico a `/etc/init.d/inetd'. Básicamente, `inetd' permite ejecutar un único demonio para invocar otros, reduciendo la carga del sistema. Cada vez que llega la petición a un servicio, se identifica el protocolo y el servicio mirando las bases de datos situadas en `/etc/protocols' y `/etc/services'. Para un servicio de internet normal, `inetd'l consulta la base de datos `/etc/inetd.conf' o la si el servicio se basa en Sun-RPC. Para seguridad del sistema, asegúrese desactivar los servicios sin utilizar del archivo `/etc/inetd.conf'. Los servicios Sun-RPC necesitan estar activos para NFS y otros programas basados en RPC. A veces, `inetd' no arranca el servidor solicitado directamente sino el programa envoltorio del demonio TCP/IP `tcpd' con el nombre del servidor pedido como argumento en el `/etc/inetd.conf'. En este caso, `tcpd' ejecuta el programa servidor adecuado luego de haber registrado la solicitud y haber realizado algunas comprobaciones adicionales usando `/etc/hosts.deny' y `/etc/hosts.allow'. Si tiene problemas con el acceso remoto sobre un sistema Debian reciente, comente la línea "ALL: PARANOID" si es que existe en el archivo `/etc/hosts.deny'. Para más detalles, consulte inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5) y hosts_options(5). Para más información sobre Sun-RPC, véase rpcinfo(8) , portmap(8) y `/usr/share/doc/portmap/portmapper.txt.gz'. 9.2.6. Lightweight Directory Access Protocol -------------------------------------------- Referencias: * OpenLDAP (http://www.openldap.org/) * OpenLDAP Admin Guide del paquete `openldap-guide' * LDP: LDAP Linux HOWTO (http://www.tldp.org/HOWTO/LDAP-HOWTO/index.html) * LDP: Implementación de LDAP HOWTO (http://www.tldp.org/HOWTO/LDAP-Implementation-HOWTO/index.html) * OpenLDAP, uso de informes (http://portal.aphroland.org/~aphro/ldap-docs/ldap.html) * Open LDAP con IMAP y Postfix (http://alinux.washcoll.edu/docs/plc/postfix-courier-howto.html) 9.3. Grabadora de CDs --------------------- Las grabadoras de CDs con interfaz IDE/ATAPI se han convertido en periféricos muy populares. Es un medio conveniente para un usuario doméstico que necesite < 640 MB de capacidad para hacer copias de respaldos o archivar documentos. Para información más autorizada, consulte el CD-Writing-HOWTO (http://www.tldp.org/HOWTO/CD-Writing-HOWTO.html) del LDP. 9.3.1. Introducción ------------------- Antes que todo, cualquier interrupción de los datos enviados a la grabadora provocará un daño irreparable al CD. Consiga una grabadora con un búfer tan grande como le sea posible. Si el dinero no es importante, no se moleste con una grabadora IDE/ATAPI y adquiera una SCSI. Si tiene la posibilidad de elegir la interfaz IDE a la cual va a conectar la grabadora, prefiera el bus PCI antes que el ISA (tarjeta SB16, etc.). Cuando una grabadora de CDs se conecta al canal IDE, debe utilizarse el controlador IDE-SCSI en vez del IDE común. Asimismo, es necesario activar el controlador genérico SCSI. Suponiendo la utilización de un kernel usado por las distribuciones modernas (posteriores a marzo del 2001), existen dos formas posibles de hacerlo. 9.3.2. Primer enfoque: módulos + `lilo' --------------------------------------- Añada la siguiente línea al `/etc/lilo.conf' si utiliza el núcleo que distribuye Debian. Si utiliza múltiples opciones, lístelas separadas mediante espacios: append="hdx=ide-scsi ignore=hdx" Aquí la ubicación de la grabadora, a la que se accede mediante el controlador ide-scsi, se indica mediante `hdx' con el siguiente significado: hda maestro en el primer puerto IDE hdb esclavo en el primer puerto IDE hdc maestro en el segundo puerto IDE hdd esclavo en el segundo puerto IDE hde ... hdh para una unidad en un puerto IDE externo o puerto IDE ATA66/100 Siendo superusuario, escriba los siguientes comandos para activar las opciones luego de haber terminado con la configuración: # lilo # shutdown -h now 9.3.3. Segundo enfoque 2: recompile el kernel --------------------------------------------- Para crear el kernel, Debian utiliza `make-kpkg'. Use la nueva opción `--append_to_version' de make-kpkg para crear múltiples imágenes del kernel. Veáse Capítulo 7, `El kernel de Linux en Debian'. Utilice la siguiente configuración con `make menuconfig': * bzImage * Excluir el controlador CD IDE (no es fundamental, pero simplifica las cosas) * Compilar ide-scsi y sg, o compílelos como módulos. 9.3.4. Etapas post-configuración -------------------------------- El soporte para la grabadora se puede activar durante el arranque mediante lo siguiente: # echo ide-scsi >>/etc/modules # echo sg >>/etc/modules # cd /dev; ln -sf scd0 cdrom La activación manual se puede realizar haciendo: # modprobe ide-scsi # modprobe sg Tras el arranque, puede comprobar la instalación haciendo: $ dmesg|less # apt-get install cdrecord # cdrecord -scanbus [Por Warren Dodge] A veces, pueden existir conflictos entre `ide-scsi' y `ide-cd' si el sistema cuenta con una lectora de CD y una grabadora. Pruebe añadir la siguiente línea a su `/etc/modutils/aliases', ejecute `update-modules' y vuelva a arrancar el sistema. pre-install ide-scsi modprobe ide-cd Esto hará que el controlador IDE se cargue antes que el `ide-scsi'. El controlador IDE `ide-cd' tomará el control de la lectora de CD --- de todo lo que no se le pidió _ignorar_. Esto deja únicamente a los dispositivos no tenidos en cuenta bajo el control del `ide-scsi'. 9.3.5. Imagen en CD (arrancable) -------------------------------- Para grabar un CD-ROM con los archivos contenidos en el `directorio-objetivo/' como `imagen-cd.raw' (arrancable, con formato Joliet TRANS.TBL activado; para un CD no arrancable, no incluir las opciones `-b' y `-c'), inserte un disquete de arranque en la primera unidad de disquetes y haga: # dd if= # mkisofs -r -V -b -c \ -J -T -o \ Como aplicación interesante se puede crear un CD-ROM DOS de arranque. Si `' contiene la imagen de un disquete de arranque DOS, el CD-ROM arrancará como si hubiese un disquete DOS en la unidad (A:). Hacer esto con freeDOS puede ser aún más interesante. El archivo imagen se puede inspeccionar montándolo en un dispositivo loop. # mount -t iso9660 -o ro,loop /cdrom # cd /cdrom # mc # umount /cdrom 9.3.6. Grabar un CD (R, R/W): ----------------------------- Primero pruebe con (suponiendo una velocidad 2x) # nice --10 cdrecord -dummy speed=2 dev=0,0 Si no hay problemas, grabe el CD-R haciendo # nice --10 cdrecord -v -eject speed=2 dev=0,0 O grabe un CD-RW mediante # nice --10 cdrecord -v -eject blank=fast speed=2 dev=0,0 Algunas grabadoras de CD funcionan mejor con # nice --10 cdrecord -v blank=all speed=2 dev=0,0 seguido de # nice --10 cdrecord -v -eject speed=2 dev=0,0 Se necesitan dos etapas para evitar que los tiempos de espera durante la etapa de formateo no interfieran con la etadpa de grabación. El valor del argumento de `nice' puede requerir de algunos ajustes. 9.3.7. Crear la imagen de un CD ------------------------------- Algunos CD-Rs y CDs comerciales tienen sectores parásitos al final que torna imposible su copia mediante `dd' (el CD de Windows 98 es uno de ellos). El paquete `cdrecord' viene con el comando `readcd'. Utilícelo para copiar el contenido de cualquier CD en un archivo imagen. Si se trata de un disco de datos, móntelo y use `du' para ver su tamaño verdadero. Divida por dos el número que se muestra (en bloques, = 1024 bytes) para obtener el número de sectores del CD (2048 bytes). Ejecute `readcd' con las opciones correspondientes y utilice la imagen para grabar el CD-R/RW. # readcd # elija la función 11 En la mayoría de los casos, elija aquí los 3 parámetros de la línea de comandos iguales a cero. A veces, el números de sectores proporcionado por `readcd' es demasiado grande. Utilice el valor dado por mount para obtener mejores resultados. It should be noted that the use of `dd' has few problems if used on CD-ROM. The first run of `dd' command may cause error message and may yield a shorter disk image with the lost tail-end. The second run of `dd' command may yield a larger disk image with garbage data attached at the end on some systems if the data size is not specified. Only the second run of `dd' command with the correct data size specified without ejecting CD after error message seems to avoid these problems. If the image size displayed by `df' is `46301184' blocks , use the following command twice to get right image (this is my empirical information): # dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2)) 9.3.8. Imágenes de CD Debian ---------------------------- Para obtener la información más actual sobre los CDs de Debian, visite el sitio de CDs Debian (http://www.debian.org/CD/). Si posee una conexión de Internet veloz, considere realizar la instalación a través de la red usando: * algunas imágenes en disquetes (http://www.debian.org/distrib/floppyinst). * una imagen de CD mínima (http://www.debian.org/CD/netinst/). Si no posee una conexión de Internet veloz, considere adquirir los CDs de los distribuidores de CDs (http://www.debian.org/CD/vendors/). Por favor no desperdicie ancho de banda descargando las imágenes de los CDs estándar a menos que sea un tester de imágenes de CDs (incluso con el nuevo método jigdo). Una imagen de CD que vale la pena mencionar es KNOPPIX - Sistema de archivos Linux en CD (http://www.knopper.net/knoppix/index-en.html). Este CD arrancará un sistema Debian funcional sin instalarlo en el disco duro. 9.3.9. Hacer una copia de respaldo del sistema en un CD-R --------------------------------------------------------- Para copiar los archivos de configuración y datos importantes a un CD-R, use el script de ejemplo backup (http://www.debian.org/doc/manuals/debian-reference/examples/). También véase Sección 8.4, `Respaldos diferenciales y sincronización de datos'. 9.3.10. Grabar un CD de música a un CD-R ---------------------------------------- No he comprobado lo siguiente personalmente: # apt-get install cdrecord cdparanoia # cdparanoia -s -B # cdrecord dev=0,0,0 speed=2 -v -dao -eject defpregap=1 -audio *.wav o # apt-get install cdrdao #sin multisesión # cdrdao read-cd --device /dev/cdrom --paranoia-mode 3 mi_cd # leer el CD # cdrdao write --device /dev/cdrom --speed 8 mi_cd # grabar un CD nuevo `cdrdao' realiza una copia verdadera (sin interrupciones, etc...) 9.4. El programa X ------------------ El entorno X es proporcionado por Xfree86 (http://www.xfree86.org/). Existen 2 versiones del servidor X disponibles en un sistema Debian: V3.x y V4.x. Xfree86 Version 3.3 (XF3) and XFree86 Version 4.x series (XF4) both based on X11R6 specifications by X.ORG (http://www.x.org/). Para los fundamentos de a X(7), al XWindow-User-HOWTO (http://www.tldp.org/HOWTO/XWindow-User-HOWTO.html) del LDP y el Remote X Apps mini-HOWTO (http://www.tldp.org/HOWTO/mini/Remote-X-Apps.html). Para una guía específica para el usuario Debian, lea la `/usr/share/doc/xfree86-common/FAQ.gz' proporcionada por el paquete `xfree86-common'. Ésta contiene un análisis autorizado e interesante de Branden Robinson de temas relacionados con combinaciones de teclas. Sección 9.4.3, `El servidor X' un programa en la máquina local que muestra una ventana X y/o un escritorio en el monitor del usuario (CRT, LCD) y acepta la entrada del teclado y del ratón. Sección 9.4.4, `El cliente X' un programa en una máquina (local o remota) que ejecuta una aplicación compatible con X-Window. Esto invierte el significado de los términos "servidor" y "cliente" usado en otros contextos. Existen distintas maneras de lograr que el "servidor X" acepte conexiones remotas de un "cliente X": * `xhost' * el mecanismo de la lista de hosts (muy inseguro). * protocolo sin cifrado (propenso a ataques de intervención de línea telefónica). * En lo posible, no la utilice. * Véase Sección 9.4.7, `Conexión X remota: `xhost'' y xhost(1x). * `xauth' * el mecanismo de la cookie mágica del MIT (inseguro pero mejor que `xhost'). * protocolo sin cifrado (propenso a ataques de intervención de línea telefónica). * utilícelo únicamente en una conexión local ya que requiere menos CPU que `ssh -X'. * Véase Sección 9.4.11, `Adquirir privilegios de superusuario en X' y xauth(1x). * `xdm', `wdm', `gdm', `kdm', ...métodos: * el mecanismo de la cookie mágica del MIT (inseguro al igual que `xauth'). * Véase xdm(1x) y Xsecurity(7) para los fundamentos de la pantalla de acceso a X. * Véase wdm(1x), gdm(8), y kdm.options(5) para más información, si se encuentran instalados. * Véase Sección 6.5.4, ``init' del System-V y niveles de ejecución' para saber cómo desactivar `xdm' para tener acceso a la consola de Linux sin tener que eliminar el paquete `xdm'. * _`ssh -X'_ * el mecanismo de reenvío de puertos a través de un shell seguro (_seguro_). * protocolo con cifrado (una pérdida de recursos si se usa en forma local). * úselo para conexiones remotas. * Véase Sección 9.4.8, `Conexión X remota: `ssh''. Todos los métodos para conexiones remotas, excepto `ssh', requieren que esté activada la conexión TCP/IP en el servidor X. Véase Sección 9.4.6, `Conexión TCP/IP en X'. 9.4.1. Paquetes del sistema X ----------------------------- En Woody existen algunos (meta)paquetes que facilitan la instalación de X. `x-window-system-core' Este metapaquete provee los componentes esenciales para ejecutar el sistema X-Window en una estación de trabajo. Proporciona las bibliotecas X, un servidor X `xserver-xfree86', un conjunto de fuentes, clientes y utilidades X básicas. `x-window-system' Este metapaquete proporciona todos los componentes del sistema X-window desarrollado por el Proyecto XFree86, así como un conjunto de programas accesorios muy populares (en particular, depende de `x-window-system-core', `twm' y `xdm', es decir, si lo instala no necesitará el paquete `x-window-system-core') `xserver-common-v3' Archivos y utilidades comunes a todos los servidores X de XFree86 3.x (X3) `xserver-*' Paquetes de servidores X3 adicionales para soportar hardware que por algún motivo no es portado por el nuevo servidor X4. Algunas tarjetas ATI mach64 antiguas no son soportadas por X4, algunas tarjetas de video se cuelgan en forma abrupta en la versión Woody de X4, etc. (para ver los paquetes disponibles, haga `apt-cache search xserver-|less'. Todos estos servidores de X3 dependen del paquete `xserver-common-v3'.) En la mayoría de los casos, `x-window-system' es el paquete que se deberá instalar (si desea la consola de acceso, asegúrese de desactivar `xdm' como se explica en Sección 8.1.4, `"¡Permítanme desactivar X al arrancar!"'.) 9.4.2. Paquetes de detección de hardware para el servidor X ----------------------------------------------------------- Para activar la detección de hardware durante la etapa de configuración de X, instale los siguientes paquetes antes de instalar el sistema X: * `discover' --- sistema de identificación de hardware. * `mdetect' --- herramienta de autodetección de ratones. * `read-edid' --- herramienta para obtener información de los monitores PnP VESA. 9.4.3. El servidor X -------------------- Véase XFree86(1x) para información sobre el servidor X. Invoque el servidor X desde una consola local: $ startx -- : e.g.: $ startx -- :1 vt8 -bpp 16 ... ejecución en una terminal vt8 conectada a localhost:1 with 16 bpp mode Los argumentos a continuación de `--' son para el servidor X. Observación: al usar el script `~/.xserverrc' para personalizar el proceso de arranque del servidor X asegúrese de usar `exec' con el servidor real. Caso contrario el servidor será lento al arrancar o al salir. Por ejemplo: #!/bin/sh exec /usr/bin/X11/X -dpi 100 -nolisten tcp 9.4.3.1. Configurar el servidor X4 ---------------------------------- Para volver a configurar el servidor X4, # dpkg-reconfigure --priority=low xserver-common # dpkg-reconfigure --priority=low xserver-xfree86 generará el archivo `/etc/X11/XF86Config-4' y configurará X usando el script `dexconf'. 9.4.3.2. Configurar el servidor X3 ---------------------------------- Para volver a configurar el servidor X3, # dpkg-reconfigure --priority=low xserver-common-v3 # dpkg-reconfigure --priority=low xserver-mach64 generará el archivo `/etc/X11/XF86Config' y configurará X usando el script `xf86config-v3'. 9.4.3.3. Configurar el servidor X4 en forma manual -------------------------------------------------- Para añadir personalizaciones, _no edite el archivo de configuración en medio del texto_ (válido para X4): ### BEGIN DEBCONF SECTION [snip] ### END DEBCONF SECTION En cambio, _añada las personalizaciones antes del mismo_. Por ejemplo, para usar un dispositivo de video personalizado, añada algo similar a lo siguiente _al principio_ del archivo: Section "Device" Identifier "Custom Device" Driver "ati" Option "NoAccel" EndSection Section "Screen" Identifier "Custom Screen" Device "Custom Device" Monitor "Generic Monitor" DefaultDepth 24 Subsection "Display" Depth 8 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 16 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 24 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection EndSection Section "ServerLayout" Identifier "Custom" Screen "Custom Screen" InputDevice "Generic Keyboard" "CoreKeyboard" InputDevice "Configured Mouse" "CorePointer" EndSection 9.4.4. El cliente X ------------------- La mayoría de los clientes X se pueden arrancar con un comando similar a éste: client $ xterm -geometry 80x24+30+200 -fn 6x10 -display :0 & los argumentos opcionales de la línea de comando tienen el siguiente significado: * `-geometry x++': ubicación y tamaño de la ventana inicial. * `-fn ': fuente utilizada para mostrar el texto. `' puede ser: * a14: fuente de tamaño normal * a24: fuente de tamaño grande * ... (vea las fuentes disponibles mediante `xlsfont'.) * `-display ': el nombre del servidor X a usar. `' puede ser: * `:' significa pantalla `' en terminal `' de la máquina `'; el servidor X para este terminal está escuchando en el puerto TCP 6000+D. * `/unix:' significa pantalla `' en el terminal de la máquina `'; el servidor X para este terminal está escuchando en el socket UNIX `/tmp/.X11-unix/XD' (por lo tanto, solamente accesible desde `'). * `<:D.S>' es equivalente a `/unix:', donde `' es el nombre de la máquina local. El `' predeterminado para el programa X cliente puede configurarase mediante la variable de entorno DISPLAY. Por ejemplo, antes de ejecutar un programa X cliente, se puede ejecutar uno de los siguientes comandos para alcanzar este objetivo: $ export DISPLAY=:0 # el predeterminado, máquina local usando la primer pantalla X $ export DISPLAY=:0.2 $ export DISPLAY=localhost:0 El arranque puede ser personalizado con `~/.xinitrc'. Por ejemplo: xrdb -load $HOME/.Xresources xsetroot -solid gray & xclock -g 50x50-0+0 -bw 0 & xload -g 50x50-50+0 -bw 0 & xterm -g 80x24+0+0 & xterm -g 80x24+0-0 & twm Como se explicó en Sección 9.4.5.1, `Personalizando la sesión en X', esto ethis overrides todo lo que una ejecución normal de Xsession hace cuando se arranca desde `startx'. Utilice este enfoque sólo como último recurso. 9.4.5. Sesión X --------------- Una sesión X (servidor X + cliente X) puede arrancarse mediante: * `startx': script para `initx' que arranca el cliente y el servidor X desde la consola de Linux. Si `~/.xinitrc' no existe, `/etc/X11/Xsession' se ejecuta a través de `/etc/X11/xinit/xinitrc'. * `xdm', `gdm', `kdm' o `wdm': administradores de pantalla X que arrancan el cliente y el servidor X y que controlan el acceso desde un interfaz gráfica (GUI). `/etc/X11/Xsession' se ejecuta directamente. Se puede disponer de la consola leyendo Sección 8.1.4, `"¡Permítanme desactivar X al arrancar!"'. 9.4.5.1. Personalizando la sesión en X -------------------------------------- El script de arranque `/etc/X11/Xsession' es en realidad una combinación de `/etc/X11/Xsession.d/50xfree86-common_determine-startup' y `/etc/X11/Xsession.d/99xfree86-common_start'. La ejecución de `/etc/X11/Xsession' se ve afectada por `/etc/X11/Xsession.options' que consiste esencialmente en la ejecución de un programa mediante el comando `exec' teniendo en cuenta el siguiente orden: 1. `~/.xsession' o `~/.Xsession', si está definida 2. `/usr/bin/x-session-manager',si está definida 3. `/usr/bin/x-window-manager', si está definida 4. `/usr/bin/x-terminal-emulator', si está definida El significado exacto de estos comandos viene determinado por el sistema de alternativos explicado en Sección 6.5.3, `Comandos alternativos'. Por ejemplo: # update-alternatives --config x-session-manager ... o # update-alternatives --config x-window-manager A fin de que cualquier administrador de ventanas sea el predeterminado, dejando instalados los administradores de sesiones GNOME y KDE reemplace `/etc/X11/Xsession.d/50xfree86-common_determine-startup' con el adjuntado al segundo informe de fallos dado a conocer en http://bugs.debian.org/168347 (espero que sea incluido pronto) y edite de la siguiente manera el `/etc/X11/Xsession.options' para desactivar el administrador de sesiones X: # /etc/X11/Xsession.options # # opciones de configuración para /etc/X11/Xsession # Véase Xsession.options(5) para una explicación de las opciones disponibles. # predeterminados activados allow-failsafe allow-user-resources allow-user-xsession use-ssh-agent # predeterminados desactivados (actívelos descomentándolos) do-not-use-x-session-manager #do-not-use-x-window-manager Sin la modificación anterior, `gnome-session' y `kdebase' son los paquetes que contienen los administradores de sesión X. Al eliminarlos el administrador de ventanas X pasa a ser el predeterminado. (Hmm, ¿alguna mejor idea?) En un sistema donde `/etc/X11/Xsession.options' incluye una línea `allow-user-xsession' sin ningún caracter precediéndola, cualquier usuario podrá personalizar el comportamiento del `/etc/X11/Xsession'. mediante `~/.xsession' o `~/.Xsession' El último comando del archivo `~/.xsession' debe ser de la forma `exec ' para arrancar su administrador de sesiones/ventanas X favorito. Un buen ejemplo de script `~/.xsession' se encuentra en `/usr/share/doc/xfree86-common/examples/xsession.gz'. Lo utilizo para definir el administrador de ventanas y el idioma para cada cuenta de usuario. Véase Sección 9.4.5.2, `Arrancar un administrador de sesiones/ventanas determinado', Sección 9.4.11, `Adquirir privilegios de superusuario en X' y Sección 9.7.8, `Ejemplo para un sistema bilingüe (EUC japonés e ISO-8859-1)'. Los recursos X específicos para cada usuario se pueden almacenar en `~/.Xresources', mientras que los recursos X para todo el sistema en `/etc/X11/Xresources/*'. Véase xrdb(1x). En X, los teclados personalizados y las asociaciones de los botones del ratón se pueden especificar en `~/.xmodmaprc'. Véase xmodmap(1x). 9.4.5.2. Arrancar un administrador de sesiones/ventanas determinado ------------------------------------------------------------------- Siguiendo los pasos explicados en Sección 9.4.5.1, `Personalizando la sesión en X', se puede activar un administrador de ventanas/sesiones X específico para cada usuario instalando el paquete indicado y configurando el archivo `~/.xsession' de la siguiente manera (me gusta blackbox por su estilo simple y por ser veloz): * administración de sesión X predeterminada. * Véase Sección 6.5.3, `Comandos alternativos'. * `exec /usr/bin/x-session-manager' * administrador de ventanas X predeterminado. * See Sección 6.5.3, `Comandos alternativos'. * `exec /usr/bin/x-window-manager' * Administrador de sesión de GNOME (consume muchos recursos) * Instale el paquete: `gnome-session' * `exec /usr/bin/gnome-session' * Administrador de sesión de KDE (consume muchos recursos) * Instale el paquete: `kdebase' (o `kdebase3' para KDE3) * `exec /usr/bin/kde2' * Administrador de ventanas Blackbox (consume pocos recursos). * Instale el paquete: `blackbox' * `exec /usr/bin/blackbox' * Administrador de ventanas Fluxbox (consume pocos recursos, el nuevo blackbox) * Install package: `fluxbox' * `exec /usr/bin/fluxbox' * Adminitstrador de ventanas Xfce (Mac OS-X, aspecto similar al CDE de SUN). * Install package: `xfce' * `exec /usr/bin/xfwm' * Administrador de ventanas IceWM (consume pocos recursos, alternativa de GNOME) * Install package: `icewm' * `exec /usr/bin/X11/icewm' * Administrador de ventanas virtual FVWM2 (consume pocos recursos, aspecto similar a Win95). * Instalar el paquete: `fvwm' * `exec /usr/bin/fvwm2' * Administrador de ventanas Windowmaker (aspecto similar a NexT) * Instale el paquete: `wmaker' * `exec /usr/bin/wmaker' * Administrador de ventanas Enlightenment (consume muchos recursos). * Install package: `enlightenment' * `exec /usr/bin/enlightenment' Véase Administradores de ventanas para X (http://www.xwinman.org). 9.4.5.3. Configuración del entorno KDE/GNOME -------------------------------------------- Para configurar plenamente el entorno KDE/GNOME, resultan de utilidad los siguiente metapaquetes: * KDE: instale el paquete `kde' * GNOME: instale el paquete `gnome' Instalar estos paquetes con herramientas que tengan en cuenta los `recomendados', como `dselect' y `aptitude', le permitirá una elección más variada de programas que hacerlo con `apt-get'. Si desea ingresar al sistema por consola, asegúrese de deshabilitar el administrador de pantallas X, como `kdm', `gdm' y `wdm', que pueden ser instalados por el sistema de dependencias, como se explica en Sección 8.1.4, `"¡Permítanme desactivar X al arrancar!"'. Si desea tener a GNOME como sistema predeterminado en vez de KDE, asegúrese de configurar `x-session-manager' como se detalla en Sección 6.5.3, `Comandos alternativos'. 9.4.6. Conexión TCP/IP en X --------------------------- Puesto que las conexiones TCP/IP remotas sin cifrado son propensas a ataques de intervención de línea telefónica, la configuración predeterminada de X en versiones recientes de Debian viene con los sockets TCP/IP desactivados. Para una conexión X remota piense en usar `ssh' (véase Sección 9.4.8, `Conexión X remota: `ssh''). No se recomienda el método recién explicado a menos que uno esté en un entorno muy seguro, detrás de un buen firewall y con usuarios confiables. Use el siguiente comando para verificar la configuración actual de su socket TCP/IP de su servidor X: # find /etc/X11 -type f -print0 | xargs -0 grep nolisten /etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp Eliminar `-nolisten' para restaurar la escucha TCP/IP en el servidor X. 9.4.7. Conexión X remota: `xhost' --------------------------------- `xhost' permite el acceso basándose en los nombres de host. Esto resulta ser muy inseguro. Los comandos siguientes desactivarán la verificación del host y permitirán conexiones desde cualquier lugar si las conexiones TCP/IP están autorizadas (véase Sección 9.4.6, `Conexión TCP/IP en X'): $ xhost + Se puede volver a habilitar la verificación del host haciendo: $ xhost - `xhost' no distingue entre diferentes usuarios en la máquina remota. Además, los nombres de las máquinas (en realidad, sus direcciones) pueden ser falseadas. Si se encuentra en una red que no es confiable (por ejemplo, con un acceso a Internet mediante una línea telefónica a través de PPP) debe evitar este método incluso si se consideran criterios más restrictivos sobre los hosts. Véase xhost(1x). 9.4.8. Conexión X remota: `ssh' ------------------------------- El uso de `ssh' permite una conexión segura desde un servidor X local a una aplicación servidora remota. * en el archivo `/etc/ssh/sshd_config' de la máquina remota. Asigne a las entradas `X11Forwarding' y `AllowTcpForwarding' el valor `yes' * Arranque el servidor X en la máquina local. * Abra una `xterm' en la máquina local. * Ejecute `ssh' para establecer una conexión con la máquina distante. nombre_local @ máquina_local $ ssh -q -X -l nombre_usuario máquina_remota.dominio Password: ..... * Ejecute una aplicación X en el sitio remoto. nombre_usuario @ máquina_remota $ gimp & Este método permite la visualización de la salida del cliente X remoto como si estuviera conectado a un socket UNIX local. 9.4.9. `xterm' -------------- Aprenda todo sobre `xterm' en la dirección http://dickey.his.com/xterm/xterm.faq.html. 9.4.10. Base de datos de recursos de X -------------------------------------- Algunos programas X antiguos, como xterm, usan la base de datos de recursos de X para configurar su apariencia. El archivo `~/.Xresources' se utiliza para almacenar las especificaciones de los recursos del usuario. Al autenticarse, este archivo automáticamente se anexa a los recursos predeterminados de X. Veamos algunos parámetros interesantes para añadir a su archivo `~/.Xresources': ! Usar una fuente más legible 9x15 XTerm*font: 9x15 ! Mostrar barra de desplazamiento XTerm*scrollBar: true ! Fijar el tamño del búfer en 1000 líneas XTerm*saveLines: 1000 Para que estas configuraciones tengan efecto inmediatamente, añádalas a la base de datos mediante el comando: xrdb -merge ~/.Xresources 9.4.11. Adquirir privilegios de superusuario en X ------------------------------------------------- Si una aplicación gráfica mecesita ejecutarse con privilegios de superusuario, use el siguiente procedimiento para visualizar la salida del programa en el servidor X del usuario. Con objeto de evitar posibles riesgos de seguridad _nunca intente iniciar un servidor X directamente desde la cuenta de superusuario_. Inicie el servidor X como usuario normal y abra una consola `xterm'. Then: $ XAUTHORITY=$HOME/.Xauthority $ export XAUTHORITY $ su root Password:***** # printtool & Cuando utilice este truco para hacer `su' a un usuario normal, asegúrese que el archivo `~/.Xauthority' tenga permiso de lectura para el grupo al que pertenece dicho usuario. Para automatizar esta secuencia de comandos, cree un archivo `~/.xsession' desde la cuenta del usuario, que contenga las siguientes líneas: # Esto permite arrancar X cuando hago su para ser superusuario. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi unset XSTARTUP # Si desea un administrador de sesiones/ventanas particular descomente # lo siguiente y edítelo según sus necesidades. # XSTARTUP=/usr/bin/blackbox # Esto inicia el administrador de sesiones/ventanas de X if [ -z "$XSTARTUP" ]; then if [ -x /usr/bin/x-session-manager ]; then XSTARTUP=x-session-manager elif [ -x /usr/bin/x-window-manager ]; then XSTARTUP=x-window-manager elif [ -x /usr/bin/x-terminal-emulator ]; then XSTARTUP=x-terminal-emulator fi fi # ejecuta el administrador de sesiones/ventanas seleccionado exec $XSTARTUP A continuación ejecute `su' (no `su -') en una ventana `xterm' de usuario. A partir de ahora, es posible ejecutar aplicaciones gráficas con privilegios de superusuario en una pantalla X de superusuario. Este truco funciona siempre y cuando se ejecute la `/etc/X11/Xsession' predeterminada. Si un usuario personaliza `~/.xinit' o `~/.xsession', la variable `XAUTHORITY' mencionada anteriormente necesita ser inicializada de manera similar en estos scripts. Otro método, consiste en usar `sudo' para automatizar la secuencia de comandos: $ sudo xterm ... o $ sudo -H -s En este casp `/root/.bashrc' debe contener: if [ $SUDO_USER ]; then sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge - fi Esto funciona correctamente incluso si el directorio personal del usuario se encuentra en una partición NFS, ya que el superusuario no lee el archivo `.Xauthority'. Existen también diversos paquetes específicos para este fin: `kdesu', `gksu', `gksudo', `gnome-sudo' y `xsu'. Se pueden usar otro métodos para alcanzar resultados similares: crear un enlace simbólico del `/root/.Xauthority' al correspondiente al usuario; utilizar el script sux (http://fgouget.free.fr/sux/sux-readme.shtml); o incluir "`xauth merge ~/.Xauthority'" en el script de inicialización del root. Véase más en la lista de correos debian-devel (http://lists.debian.org/debian-devel/2002/debian-devel-200207/msg00259.html). 9.4.12. Fuentes trueType en X ----------------------------- El `xfs' estándar de XFree86-4 funciona correctamente con fuentes TrueType. Si está usando XFree86-3 debe instalar algún servidor de terceros como, por ejemplo, `xfs-xtt'. Sólo necesita asegurarse que las aplicaciones que desee usar con las fuentes TrueType hayan sido enlazadas con libXft o libfreetype (es muy probable que no tenga ni siquiera que preocuparse por ello si usa .debs precompilados). Recuerde instalar las fuentes y generar los archivos `fonts.{scale,dir}' para que puedan ser indexadas y utilizadas. Puesto que hay pocas fuentes _libres_, los usuarios de Debian pueden instalar fuentes TrueType comerciales o shareware. A fin de facilitar este proceso al usuario, han sido creado algunos paquetes muy prácticos: * `ttf-commercial' * `msttcorefonts (>1.1.0)' (el paquete en Woody no funciona desde el of 8/2002 debido a los cambios que experimentó el sitio web de Microsoft) De esta manera tendrá una buena colección de fuentes TT a expensas de contaminar su sistema _libre_ con fuentes propietarias. 9.4.13. Navegador web (gráfico) ------------------------------- Existe algunos paquetes de navegadores web disponibles con el lanzamiento de Woody : * `mozilla' el navegador Mozilla (nuevo) * `galeon' navegador basado en Mozilla con una interfaz Gnome (nuevo) * `konqueror' navegador KDE * `dillo' navegador GTK * `amaya-gtk' navegador de referencia de la W3C * `amaya-lesstif' navegador de referencia de la W3C * `netscape-...' (muchos, antiguos) * `communicator-...' (muchos, antiguos) * ... La versión de `mozilla' debe coincidir con la versión correspondiente de `galeon'. Aunque difieren en su interfaz, ambos programas conparten el mismo motor de renderizado de HTML Gecko. Los añadidos (plug-ins) para los navegadores tales como `mozilla' y `galeon' se pueden activar instalando manualmente los archivos "`*.so'" en el directorio de añadidos y reiniciando el navegador. Recursos: * Java: instale el binario "J2SE" de http://java.sun.com. * Flash: instale el binario "Macromedia Flash Player 5" de http://www.macromedia.com/software/flashplayer/. * `freewrl': navegador VRML y añadido de Netscape * ... 9.5. SSH -------- SSH (Secure SHell) es la manera segura de comunicarse a través de Internet. Una versión libre de SSH llamada OpenSSH se encuentra disponible en el paquete Debian `ssh'. 9.5.1. Fundamentos ------------------ Primero instale el cliente y el servidor OpenSSH. # apt-get update && apt-get install ssh La entrada non-US debe figurar en el `/etc/apt/source.list'. `/etc/ssh/sshd_not_to_be_run' no debe estar presente si desea ejecutar el servidor OpenSSH. SSH tiene dos protocolos de autenticación: * Protocolo SSH versión 1: * la versión que viene con Potato admite únicamente este protocolo. * métodos de autenticación disponibles: * RSAAuthentication: autenticación del usuario basada en una clave RSA * RhostsAuthentication: autenticación basada en .rhosts (insegura, desactivada) * RhostsRSAAuthentication: autenticación basada en .rhosts combinada con una clave RSA (desactivada) * ChallengeResponseAuthentication: autenticación basada en challenge-response RSA * PasswordAuthentication: autenticación basada en contraseña * Protocolo SSH versión 2: * versiones posteriores a Woody usan este protocolo como protocolo principal. * métodos de autenticación disponibles: * PubkeyAuthentication: autenticación del usuario basada en una clave pública * HostbasedAuthentication: autenticación basada en`.rhosts' o `/etc/hosts.equiv' combinada con la autenticación de la clave pública de la máquina cliente (desactivada) * ChallengeResponseAuthentication: autenticación basada en challenge-response * PasswordAuthentication: autenticación basada en contraseña Tenga cuidado con estas diferencias si está migrando hacia Woody o usando un sitema que no es Debian. Véase `/usr/share/doc/ssh/README.Debian.gz', ssh(1), sshd(8), ssh-agent(1) y ssh-keygen(1) para más detalles. Los siguientes son los archivos de configuración más importantes: * `/etc/ssh/ssh_config': valores predeterminados del cliente SSH . Véase ssh(1). Las entradas más importantes son: * `Host': Restricts the following declarations (up to the next Host keyword) to be only for those hosts that match one of the patterns given after the keyword. * `Protocol': especifica la versión del protocolo SSH. Valor predeterminado "2,1". * `PreferredAuthentications': especifica el método de autenticación para el cliente SSH2. Por defecto: "hostbased,publickey,keyboard-interactive,password". * `ForwardX11': desactivado por defecto. Se puede no tener en cuenta mediante la opción "`-X'" de la línea de comandos. * `/etc/ssh/sshd_config': valores predeterminados del servidor SSH. Véase sshd(8). Las entradas más importantes son: * `ListenAddress': especifica las direcciones locales que `sshd' debe escuchar. Se permiten múltiples opciones. * `AllowTcpForwarding': desactivado por defecto. * `X11Forwarding': desactivado por defecto. * `$HOME/.ssh/authorized_keys': la lista de las claves públicas predeterminadas que los clientes usan para conectarse con la cuenta en este host. Véase ssh-keygen(1). * `$HOME/.ssh/identity': Véase ssh-add(1) y ssh-agent(1). Lo siguiente iniciará una conexión `ssh' desde un cliente. $ ssh nombre_usuario@nombre_máquina.dominio.ext $ ssh -1 nombre_usuario@nombre_máquina.dominio.ext # Fuerza la versión 1 de SSH $ ssh -1 -o RSAAuthentication=no -l username foo.host # force password on SSH1 $ ssh -o PreferredAuthentications=password -l username foo.host # force password on SSH2 Para el usuario, las funciones de `ssh' son mejores y más seguras que las de `telnet' (no lo bombardearán con ^]). 9.5.2. Reenvío de puertos -- túnel SMTP/POP3 -------------------------------------------- Para establecer un túnel para conectarse al puerto 25 del desde el puerto 4025 de la máquina local y al puerto 110 del desde el puerto 4110 de la máquina local mediante `ssh', ejecute lo siguiente en la máquina local: # ssh -q -L 4025:servidor-remoto:25 4110:servidor-remoto:110 \ nombre_usuario@servidor-remoto Es una manera segura de conectarse a servidores SMTP/POP3 a través de Internet. En el `/etc/ssh/sshd_config' de la máquina remota, asigne a la entrada `AllowTcpForwarding' el valor `yes'. 9.5.3. Conectarse con pocas contraseñas --------------------------------------- Uno puede evitar recordar la contraseña para cada sistema remoto usando RSAAuthentication (protocolo SSH1) o PubkeyAuthentication (protocolo SSH2). En el `/etc/ssh/sshd_config' del sistema remoto debe figurar "RSAAuthentication yes" o "PubkeyAuthentication yes". A continuación genere las claves de autenticación en forma local e instale la clave pública en el sistema remoto: $ ssh-keygen # RSAAuthentication: clave RSA1 para SSH1 $ cat .ssh/identity.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t rsa # PubkeyAuthentication: clave RSA para SSH2 $ cat .ssh/id_rsa.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t dsa # PubkeyAuthentication: clave DSA para SSH2 $ cat .ssh/id_dsa.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys" Uno puede cambiar la frase de contraseña posteriormente haciendo "`ssh-keygen -p'". Asegúrese de verificar la configuración probando la conexión. En caso de problemas, haga "`ssh -v'". Puede añadir opciones a las entradas en `authorized_keys' para limitar los hosts y ejecutar comandos específicos. Véase sshd(8) para más detalles. Observe que SSH2 realiza una autenticación del tipo `HostbasedAuthentication'. Para que esto funcione, debe asignar a la entrada `HostbasedAuthentication' el valor `yes' tanto en el `/etc/ssh/sshd_config' de la máquina servidor como en el `/etc/ssh/ssh_config' o el `$HOME/.ssh/config' de la máquina cliente. 9.5.4. Otro clientes SSH ------------------------ Existen algunos clientes SSH libres disponibles para plataformas que no son UNIX. Windows puTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/) (GPL) Windows (cygwin) SSH en cygwin (http://www.cygwin.com/) (GPL) Macintosh Clásico macSSH (http://www.macssh.com/) (GPL) [Obsérvese que Mac OS X incluye OpenSSH; utilice `ssh' en el terminal] Recurra también al sitio de documentación de SourceForge.net (http://www.sourceforge.net/docman/?group_id=1): "6. CVS Instructions". 9.5.5. Agente SSH ----------------- Resulta más seguro proteger su clave de autenticación SSH con una frase de contraseña. Si no ha sido configurada, use `ssh-keygen -p' para hacerlo. Ubique su clave pública (por ejemplo, `~/.ssh/id_rsa.pub') en el `~/.ssh/authorized_keys' de una máquina remota usando la conexión basada en contraseñas como se explica en Sección 9.5.3, `Conectarse con pocas contraseñas'. $ ssh-agent bash # o ejecute en cambio el programa zsh/tcsh/pdksh. $ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/osamu/.ssh/id_rsa: Identity added: /home/osamu/.ssh/id_rsa (/home/osamu/.ssh/id_rsa) $ scp ... de ahora en adelante no se necesita frase de contraseña :-) $^D ... terminating ssh-agent session Para el servidor X, los scripts de arranque normales de Debian ejecutan al `ssh-agent' como proceso padre. Por lo tanto, necesitará ejecutar `ssh-add' una sola vez. Para más información , consulte ssh-agent(1) y ssh-add(1). 9.5.6. Resolución de problemas ------------------------------ Si tiene problemas, controle los permisos de los archivos de configuración y ejecute `ssh' con la opción "`-v'". Utilice la opción "`-P'" si no es superusuario y tiene problemas con un firewall; esto evita el uso de los puertos 1--1023 del servidor. Si las conexiones `ssh' con un sitio remoto dejan de funcionar repentinamente, puede ser debido a modificaciones hechas por el administrador de sistema, muy probablemente debido a un cambio de `host_key' durante el mantenimiento del sistema. Tras asegurarse que este es el caso y que nadie está haciéndose pasar por la máquina remota mediante algún artilugio ingenioso, es posible recuperar la conexión eliminando la entrada `host_key' del archivo `$HOME/.ssh/known_hosts' de la máquina local. 9.6. Programas de correo ------------------------ La configuración del correo comprende tres partes: * un agente de transferencia de correo (MTA): `exim' * utilidades de correo: `procmail', `fetchmail', `mailx', ... * agente de usuario de correo (MUA): `mutt', `emacs'+`gnus' 9.6.1. Agente de transporte de correo (MTAs) -------------------------------------------- Para un MTA con un sinnúmero de posibilidades, utilice `exim'. Referencias: * paquetes `exim-doc' y `exim-doc-html' * http://www.exim.org/ Si le preocupa el tema de la seguridad, el único MTA alternativo razonable es `postfix'. Tanto `sendmail' como `qmail' se encuentran disponibles como paquetes Debian pero no se recomiendan. Si no necesita de la función de reenvío del MTA como en el caso de un sistema satélite como puede ser una PC portátil, considere usar uno de estos paquetes pequeñosl: * `ssmtp': necesita una conexión SMTP y permite alias, o * `nullmailer': no permite alias. Por el momento, considero a que `exim' es más conveniente incluso para mi estación de trabajo que es una PC portátil.. Necesitará eliminar `exim' para la instalación de estos paquetes que entran en conflicto: # dpkg -P --force-depends exim # apt-get install nullmailer # o ssmtp 9.6.1.1. Configuración básica de Exim ------------------------------------- Para usar `exim' como MTA, configure lo siguiente: /etc/exim/exim.conf "eximconfig" para crearlo o editarlo /etc/inetd.conf descomente smtp para ejecutar exim como demonio /etc/email-addresses edítelo si su nombre de usuario y máquina no es una dirección de correo válida en Internet verifique los filtros usando exim -brw, -bf, -bF, -bV, ... etc. 9.6.1.2. Direcciones de correo electrónico inexistentes (Exim) -------------------------------------------------------------- En la parte DIRECTORS del archivo `/etc/exim/exim.conf' (Woody o posterior), añada una directiva "catchall" al final (a continuación de localuser: director) que corresponda a todas las direcciones que la directiva anterior no pudo resolver (por Miquel van Smoorenburg): catchall: driver = smartuser new_address = Si desea una receta más detallada para cada dominio virtual, añada lo siguiente al final del archivo `/etc/exim/exim.conf' (para mí, no muy probado): *@su_dominio.com ${lookup{$1}lsearch*{/etc/email-addresses} \ {$value}fail} T y añada una entrada "*" al `/etc/email-addresses'. 9.6.1.3. Reescritura selectiva de direcciones del correo saliente (Exim) ------------------------------------------------------------------------ En `exim' la reescritura selectiva de direcciones del correo saliente para que los encabezados "From:" se muestren correctamente se puede realizar modificando el final del archivo `/etc/exim/exim.conf': *@host1.algo.dyndns.org \ "${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1} \ {$0}{$1@algo.dyndns.org}}" frFs Esto reescribe todas las direcciones coincidentes con `*@host1.algo.dyndns.org'. 1. busca en `/etc/password' para ver si la parte local ($1) es un usuario local o no. 2. si se trata de un usuario local, reescribe la dirección con lo mismo que estaba en primer lugar ($0). 3. si no se trata de un usuario local, reescribe la parte del dominio. 9.6.1.4. Autenticación SMTP con Exim ------------------------------------ Algunos servicios SMTP tales como yahoo.com requieren de autenticación SMTP. Configure `/etc/exim/exim.conf' de la siguiente manera: remote_smtp: driver = smtp authenticate_hosts = smtp.mail.yahoo.com ... smarthost: driver = domainlist transport = remote_smtp route_list = "* smtp.mail.yahoo.com bydns_a" ... plain: driver = plaintext public_name = PLAIN client_send = "^cmatheson3^esta_es_mi_contraseña" No se olvide entrecomillar la última líneas. 9.6.2. Utilidad de correo (Fetchmail) ------------------------------------- `fetchmail' se ejecuta en modo demonio para transferir los mensajes de correo de una cuenta POP3 de un ISP al sistema de correo local. Configure: /etc/init.d/fetchmail /etc/rc?.d/???fetchmail ejecute update-rc.d fetchmail default priority 30 /etc/fetchmailrc archivo de configuración (chown 600) La información para arrancar fetchmail como demonio desde un script de `init.d' en Potato es confusa (Woody corrigió esta situación). Véase los archivos de ejemplo `/etc/init.d/fetchmail' y `/etc/fetchmailrc' en los scripts de ejemplo (http://www.debian.org/doc/manuals/debian-reference/examples/). Si los encabezados de sus mensajes de correo están contaminados con ^M debido al programa de correo de su ISP, añada "stripcr" a sus opciones en `$HOME/.fetchmailrc': options fetchall no keep stripcr 9.6.3. Utilidad de correo (Procmail) ------------------------------------ `procmail' es un programa de filtrado y distribución de correo local. Se necesita crear un `$HOME/.procmailrc' para cada cuenta que se utiliza. Ejemplo: _procmailrc (http://www.debian.org/doc/manuals/debian-reference/examples/) 9.6.4. Agente de usuario de correo (Mutt) ----------------------------------------- Utilice `mutt' como agente de usuario de correo (MUA) en combinación con `vim'. Personalícelo mediante `~/.muttrc'; por ejemplo: # use el modo visual y "gq" para reformatear citas set editor="vim -c 'set tw=72 et ft=mail'" # # selección de encabezados tomada del manual (Sven's Draconian header weeding) # ignore * unignore from: date subject to cc unignore user-agent x-mailer hdr_order from subject to cc date user-agent x-mailer auto_view application/msword .... Añada lo siguiente al `/etc/mailcap' o `$HOME/.mailcap' para visualizar correo en HTML y documentos adjuntos en MS Word: text/html; lynx -force_html %s; needsterminal; application/msword; /usr/bin/antiword '%s'; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc 9.7. Localización y soporte de idiomas -------------------------------------- Debian se encuentra internacionalizado y admite el uso de un número creciente de idiomas y convenciones de uso local. Las siguientes subseccines discuten la _localización_, es decir, el proceso de personalización de un entorno de trabajo para permitir la entrada y salida de el/los idioma(s) elegido(s), convenciones para las fechas, formatos numéricos y monetarios y otros aspectos de un sistema que difiere de región en región. 9.7.1. Personalización básica ----------------------------- Existen algunos aspectos de la personalización para la localización y el soporte de un idioma. 9.7.1.1. Teclado ---------------- Debian se distribuye con los mapas de caracteres de casi dos docenas de teclados. En Woody, el teclado se reconfigura así: * `dpkg-reconfigure --priority=low console-data # consola' * `dpkg-reconfigure --priority=low xserver-xfree86 # X4' * `dpkg-reconfigure --priority=low xserver-common-v3 # X3' 9.7.1.2. Datos -------------- La gran mayoría de los paquetes Debian soporta el manejo de datos en caracteres no US-ASCII a través de la variable de entorno LC_CTYPE brindada por la tecnología _locale_ de glibc * en 8-bits puro: prácticamente todos los programas * otros conjuntos de caracteres latinos (por ejemplo ISO-8859-1 o ISO-8859-2): la mayoría de los programas * idiomas de múltiples bytes tales como el chino, el japonés o el coreano: muchas aplicaciones recientes 9.7.1.3. Visualización ---------------------- X puede mostrar cualquier codificación -incluyendo UTF-8- y soporta todas las fuentes. La lista incluye no sólo las fuentes de 8 bits sino las de 16 bits que aparecen en el idioma chino, japonés o coreano. El método de entrada de los caracteres de múltiples bytes es soportado por el mecanismo XIM. Véase Sección 9.7.8, `Ejemplo para un sistema bilingüe (EUC japonés e ISO-8859-1)'. La visualización del código japonés EUC se encuentra también disponible en la consola gráfica (S)VGA mediante el paquete `kon2'. Existe una terminal alternativa nueva en japonés llamada `jfbterm' que usa la consola FB. En estos entornos de consola, la aplicación debe proporcionar el método de entrada del japonés. Utilice el paquete `egg' para el paquete Emacs y el paquete `jvim' para el entorno Vim. 9.7.1.4. Traducción ------------------- Existen traducciones para diversos mensajes y documentos que se muestran en un sistema Debian, como mensajes de errores, salida estándar de programas, menús y páginas del manual. Actualmente, hay soporte para las páginas del manual en alemán, español, finlandés, francés, italiano, japonés, coreano y polaco proporcionados por los paquetes `manpages-' (donde son dos letras ISO del código del país. Utilice `apt-cache search manpages-|less' para obtener la lista de manuales unix disponibles) Para acceder a la página de un manual NLS, el usuario debe configurar la variable de entorno LC_MESSAGES apropiadamente. Por ejemplo, para las páginas del manual en el idioma italiano, LC_MESSAGES debe ser igual a `it'. El programa `man' buscará entonces las páginas del manual en italiano en `/usr/share/man/it/'. 9.7.2. Locales -------------- Debian soporta la tecnología _locale_. Locale es un mecanismo que permite a los programas brindar una salida adecuada y una funcionalidad conforme a las convenciones locales tales como el conjunto de caracteres, el formato del tiempo y de la fecha, los símbolos monetarios, etc. Utiliza las variables de entorno para determinar el comportamiento apropiado. Por ejemplo, suponiendo que tiene instalado en su sistema tanto el local para el francés como para el inglés americano, los mensajes de error de varios programas se pueden mostran en uno u otro idioma: $ LANG="en_US" cat foo cat: foo: No such file or directory $ LANG="fr_FR" cat foo cat: foo: Aucun fichier ou répertoire de ce type Glibc brinda soporte a esta funcionalidad. Véase locale(7). 9.7.3. Activar el soporte de locales ------------------------------------ Debian _no_ viene con todos los locales disponibles precompilados. Vaya a `/usr/lib/locale' para ver qué locales (además del predeterminado "C") han sido compilados para su sistema. Si no encuentra el que necesita, tiene dos opciones: * Editar el `/etc/locale.gen' para añadir el local que necesita y luego ejecutar `locale-gen' siendo superusuario para compilarlo. Véase locale-gen(8) y las páginas del manual listadas en su "VER TAMBIÉN". * Ejecute `dpkg-reconfigure locales' para volver a configurar el paquete `locales'. Al hacerlo aparecerá una interfaz debconf para que pueda elegir los locales y así compilarlos. 9.7.4. Activar un local determinado ----------------------------------- Las siguientes variables de entorno se evalúan en el siguiente orden para proporcionar a los programas los valores de un local determinado: 1. LANGUAGE: esta variable de entorno consiste en una lista de locales separados por dos puntos en orden de prioridad. Es utilizado sólo si el local POSIX tiene un valor diferente de "C" [en Woody; en Potato tiene siempre prioridad sobre el local POSIX]. (extensión GNU) 2. LC_ALL: si no es nulo, su valor se utiliza para todas las categorías del local. (POSIX.1) Generalmente "" (nulo). 3. LC_*: si no es nulo, su valor se utiliza para la categoría correspondiente (POSIX.1). Generalmente "C". Las variables LC_* son las siguientes: * LC_CTYPE: juego de caracteres. * LC_COLLATE: ordenación del alfabeto. * LC_TIME: formatos del tiempo y fechas. * LC_NUMERIC: formatos numéricos no monetarios. * LC_MONETARY: formatos monetarios. * LC_MESSAGES: formatos de los mensajes informativos, de diagnóstico y respuestas interactivas. * LC_PAPER: tamaño del papel. * LC_NAME: formatos de los nombres * LC_ADDRESS: formatos de las direcciones e información sobre lugares. * LC_TELEPHONE: formatos de los números telefónicos. * LC_MEASUREMENT: unidades de medida (sistema métrico u otro). * LC_IDENTIFICATION: metadatos referente a información del local. 4. LANG: si es no nulo y LC_ALL está indefinido, el valor se utiliza para todas las categorías LC_* si valores definidos. (POSIX.1) Generalmente "C". Obsérvese que algunas aplicaciones (por ejemplo, Netscape 4) ignora los valores de LC_*. El programa `locale' pude mostrar la configuración local activa y los locales disponibles; véase locale(1). (OBSERVACIÓN: `locale -a' lista todos los locales que su sistema reconoce; eso _no_ significa que la totalidad de ellos hayan sido compilados. Véase Sección 9.7.3, `Activar el soporte de locales'.) 9.7.5. Formato de la fecha del local ISO 8601 --------------------------------------------- El soporte de local para el estándar internacional de la fecha `yyyy-mm-dd' (formato de fecha ISO 8601) es proporcionado por el local denominado `en_DK', --- _Inglés en Dinamarca_ lo cual es una broma :-) Parece ser que sólo funciona en la consola para `ls'. 9.7.6. Ejemplo para los Estados Unidos (ISO-8859-1) --------------------------------------------------- Añada las siguientes líneas a su `~/.bash_profile': LC_CTYPE=en_US.ISO-8859-1 export LC_CTYPE 9.7.7. Ejemplo para Francia con el signo euro (ISO-8859-15) ----------------------------------------------------------- Añada las siguientes líneas a su `~/.bash_profile': LANG=fr_FR@euro export LANG LC_CTYPE=fr_FR@euro export LC_CTYPE Configure el teclado francés "AZERTY" como se explica en Sección 9.7.1.1, `Teclado'. y añada las páginas del manual en francés instalando `manpages-fr'. Alt-derecho en el teclado estadounidense se llama al Alt-Gr en Europa. Pulsándola simultáneamente junto con otras teclas se obtienen numerosos caracteres acentuados, etc. Por ejemplo, Alt-Gr+E da el signo euro. La mayoría de las lenguas europeas occidentales se pueden configurar de una manera similar. Véase Debian Euro HOWTO (http://www.debian.org/doc/manuals/debian-euro-support/) para añadir soporte para el nuevo signo monetario y Utilizar y configurar Debian para el idioma francés (http://www.debian.org/doc/manuals/fr/debian-fr-howto/) para más detalles en francés. 9.7.8. Ejemplo para un sistema bilingüe (EUC japonés e ISO-8859-1) ------------------------------------------------------------------ Configuremos un sistema bilingüe: ja_JP.eucJP (EUC japonés, entorno tradicional japonés para UNIX) en X con mensajes en inglés y fecha tipo ISO y en_US.ISO-8859-1 (ASCII con soporte de la mayoría de los caracteres con acento) en la consola Linux. * añada el soporte del local para el japonés ja_JP.eucJP usando el método descripto en Sección 9.7, `Localización y soporte de idiomas'. * instale el sistema de conversión y el diccionario Kana-a-Kanji: * `canna' --- servidor local (licencia gratuita) o * `freewnn-jserver' --- servidor extensible de red (Dominio Público) * instale el sistema de entrada para el japonés: * `kinput2-canna' --- para X o * `kinput2-canna-wnn' --- para X y * `egg' --- que funciona directamente con Emacsen incluso en consola (opcional) * terminal compatible con el japonés: * `kterm' --- X (clásico), * `mlterm' --- X (muy bueno, con tamaño de fuente variable) y * agregue todos los paquetes de fuentes japonesas. * Configure como se explica en Sección 9.4.5.1, `Personalizando la sesión en X'. Esto permite al usuario utilizar un entorno X específico independiente de los métodos de arranque de X (`startx', `xdm', ...) * cree `~/.xsession' que configura el entorno X del usuario específico: #!/bin/sh # This makes X work when I su to root. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi # local japonés predeterminado, local C en caso de problemas # export LANG=ja_JP.eucJP # asegúrese de sobreescribir en_US.ISO-8859-1 usado en consola # export LC_CTYPE=ja_JP.eucJP # quiero los mensajes en inglés ASCII :-) export LC_MESSAGES=C # activar método de entrada kinput2 & XMODIFIERS=@im=kinput2 export XMODIFIERS # administrador de ventanas blackbox (consume pocos recursos) exec /usr/bin/blackbox * agregar las siguientes líneas al `~/.bashrc': # Change language environment depending on the console program # X-shells only execute .bashrc (They are not login shell) # General environment for X is set by .xsession if [ $TERM = kterm ] || [ $TERM = mlterm ]; then unset LC_ALL export LANG=C #export LANG=ja_JP.eucJP # para mostrar fecha ISO en formato yyyy-mm-dd date display más natural para # los japoneses :-) export LC_TIME=en_DK.ISO-8859-1 export LC_MESSAGES=C export LANGUAGE=ja_JP.eucJP:en_US.ISO-8859-1:C export LC_CTYPE=ja_JP.eucJP else unset LC_ALL export LANG=C export LC_TIME=en_DK.ISO-8859-1 export LANGUAGE=en_US.ISO-8859-1:C export LC_CTYPE=en_US.ISO-8859-1 fi * añada las siguientes líneas a su `~/.muttrc': # El soporte UTF-8 no es popular en el entrono EMACS japonés # La codificación de 7 bits de la iso-2022-jp resulta ser más fácil para todo # el mundo # orden predeterminado codificación = us-ascii --> iso-8859-1 --> utf-8 #set send_charset="us-ascii:iso-8859-1:utf-8" #set allow_8bit=yes set send_charset="us-ascii:iso-8859-1:iso-2022-jp" set allow_8bit=no * activar XIM `kinput2' para las aplicaciones X * añada `*inputMethod: kinput2' a su archivo de recursos X `.~/Xresources' (a primera vista Debian lo tiene en cuenta automáticamente). * Algunas aplicaciones (como `mlterm') también permiten configurar el `*inputMethod:' y otra información en forma dinámica en tiempo de ejecución (presione _Ctrl-tercer-botón-ratón_ en `mlterm'). * arranque X escribiendo `startx' o desde un administrador de pantalla (xdm, gdm, kdm, wdm, ...) * arranque una aplicación compatible con el japonés: VIM6, (x)emacs21, mc-4.5, mutt-1.4, ... (Parece ser que Emacs es la plataforma más popular, aunque personalmente no la utilizo) * presione "_Mayús+Espacio_" para activar/desactivar la entrada de caracteres japoneses. Véase también las páginas de SuSE para CJK (http://www.suse.de/~mfabian/suse-cjk/suse-cjk.html). 9.7.9. Ejemplo de UTF-8 en X ---------------------------- Lo necesitará todo el mundo en un futuro. Véase The Unicode HOWTO (http://www.tldp.org/HOWTO/Unicode-HOWTO.html). 9.7.10. Ejemplo de UTF-8 en una consola FB ------------------------------------------ El soporte UTF-8 para la consola FB es proporcionada por `bterm' utilizado en `debian-installer'. 9.7.11. Más allá de los locales ------------------------------- Cuando vaya a configurar por primera vez un _entorno de idioma_, por favor considere usar `tasksel' o `aptitude' para averiguar qué paquetes han sido seleccionados al elegir la tarea correspondiente a dicho entorno. La elección del idioma es útil incluso para la configuración de un entorno multilingüe. Si encuentra problemas de dependencia durante la instalación en su sistema configurado, evite instalar los programas que causan conflicto. Puede recurrir a `update-alternative' para recuperar el estado original de algunos comandos ya que los nuevos instalados pueden tener una prioridad mayor sobre los ya existentes. La gran mayoría de los programas usan glibc 2.2 y en gran parte están internacionalizados. Por lo tanto versiones localizadas tales como `jvim' para VIM puede que no sean necesarias y su funcionalidad es ofrecida por la versión 6.0 para X de `vim'. En realidad, aún es difícil de usar. Puesto que `jvim' posee una versión compilada con soporte nativo de caracteres japoneses (`canna') incluso en consola y soluciona diversos problemas específicos del japonés puede que aún la quiera usar :-) Puede que se necesite configurar los programas más allá de la configuración del `local' para lograr un entorno de trabajo agradable. El paquete `language-env' y su comando `set-language-env' facilita notablemente este proceso. Asimismo consulte el documento sobre internalización Introducción a la i18n (http://www.debian.org/doc/manuals/intro-i18n/). Está dirigido a los desarrolladores pero también resulta útil para los administradores de sistemas. ------------------------------------------------------------------------------- 10. Configuración de la red --------------------------- Este capítulo se centra en la administración de redes en Debian. Para una introducción general sobre redes en GNU/Linux lea el Net-HOWTO (http://www.tldp.org/HOWTO/Net-HOWTO/index.html). Para que un equipo Debian sea capaz de acceder a Internet sus interfaces de red necesitan ser soportadas por el kernel y configuradas apropiadamente. El primer requisito es el soporte del kernel para los dispositivos de interfaz de red tales como las tarjetas Ethernet, tarjetas Wi-Fi y módems. Para obtener este soporte es posible que necesite recompilar el kernel o añadirle módulos como se describe en Capítulo 7, `El kernel de Linux en Debian'. La configuración de los dispositivos de red se explica a continuación. La información en este capítulo ha sido actualizada para Sarge. Mucho de todo esto no se aplica a versiones anteriores. 10.1. Fundamentos de redes IP ----------------------------- Un equipo Debian puede tener diversas interfaces con una diferente dirección IP. Las interfaces pueden ser de diversos tipos diferentes, incluyendo: * Loopback: `lo' * Ethernet: `eth0', `eth1', ... * Wi-Fi: `wlan0', `wlan1', ... [1] * Token Ring: `tr0', `tr1', ... * PPP: `ppp0', `ppp1', ... Existe un amplio rango de otros dispositivos de red disponibles, incluyendo SLIP, PLIP (línea IP serie y paralelo), dispositivos "shaper" para controlar el tráfico de ciertas interfaces, conmutación de tramas, AX.25, X.25, ARCnet y LocalTalk. Cada interfaz de red conectada directamente a Internet (o a cualquier red basada en IP) es identificada por una única dirección IP de 32 bits. [2] La dirección IP se puede dividir en la parte relativa a la red y la parte relativa a la máquina. Si se considera una dirección IP, se ponen 1 en los bits que son parte de la dirección de red y ceros en la parte de la dirección de la máquina se obtiene la máscara de red. Tradicionalmente, las redes IP fueron agrupadas en clases cuyas direcciones de red componentes eran de 8, 16 o 24 bits de tamaño. [3] direcciones IP máscara de red longitud Clase A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8 Clase B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16 Clase C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24 Las direcciones IP que no se encuentran en estos rangos se utilizan para propósitos especiales. En cada clase existen rangos de direcciones reservados para su uso en redes de área local (LANs). Se garantiza que estas direcciones no entren en conflicto con las direcciones propias de Internet (en consecuencia, si una de estas direcciones se asigna a un equipo éste no podrá acceder a Internet directamente sino a través de una puerta de enlace que actúe como proxy para los servicios individuales o hacer la traducción de direcciones de red -- NAT) Estos rangos de direcciones se dan en la siguiente tabla junto con el número de rangos en cada clase. direcciones de red longitud cantidad Clase A 10.x.x.x /8 1 Clase B 172.16.x.x - 172.31.x.x /16 16 Clase C 192.168.0.x - 192.168.255.x /24 256 La primera dirección en una red IP es la dirección de la propia red. La última dirección es la dirección de difusión de la red. [4] Todas las otras direcciones se pueden asignar a máquinas de la red. De éstas, la primera o la última dirección generalmente se asigna a la puerta de enlace para Internet. La tabla de rutas contiene información sobre cómo enviar paquetes IP a sus destinos. Veamos una impresión de ejemplo de la tabla de rutas para una máquina Debian de una red de área local (LAN) con dirección IP 192.168.50.x/24. La máquina 192.168.50.1 (también en la LAN) es un router para la red corporativa 172.20.x.x/16 y la máquina 192.168.50.254 (también en la LAN) es un router para Internet. # route Kernel IP routing table Destination Gateway Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 * 255.0.0.0 U 0 0 2 lo 192.168.50.0 * 255.255.255.0 U 0 0 137 eth0 172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0 default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0 * La primera línea después del encabezado dice que el tráfico destinado a la red `127.x.x.x' será encaminado hacia la interfaz de retorno (loopback) `lo'. * La segunda línea dice que el tráfico destinado para las máquinas de la LAN será encaminado a través de `eth0'. * La tercer línea dice que el tráfico destinado a la red corporativa será encaminado a la puerta de enlace `192.168.50.1' y también a través de `eth0'. * La cuarta línea dice que el tráfico destinado a Internet será encaminado a la puerta de enlace `192.168.50.254' también a través de `eth0'. Las direcciones IP en la tabla también pueden aparecer como nombres que se obtienen observando las direcciones en `/etc/networks' o usando la biblioteca C resolver. Ademas de encaminar, el kernel puede realizar la traducción de las direcciones de red, la modulación del tráfico y su filtrado. Véase el Net-HOWTO (http://www.tldp.org/HOWTO/Net-HOWTO/index.html) y other networking HOWTOs (http://www.tldp.org/HOWTO/Networking-Overview-HOWTO.html) para más información. [1] Observe que una interfaz Wi-Fi es en realidad un alias para una interfaz Ethernet que brinda acceso a los parámetros de configuración propios de Wi-Fi. Estos parámetros se controlan usando el programa `iwconfig'. [2] Esto es así si se se utiliza la versión 4 de IP. En IPv6 las direcciones son de 128 bits. Véase http://www.ipv6.org/. [3] Este sistema no era flexible y desperdiciaba muchas direcciones IP, por lo tanto actualmente las redes IPv4 permiten direcciones de red componentes de longitud variable. [4] La dirección de la red se puede obtener haciendo un AND bit a bit entre una dirección de la red y la máscara de red. La dirección de difusión se puede obtener haciendo un OR bit a bit entre la dirección de red y el complemento de uno de la máscara de red. 10.2. Configuración de la red a bajo nivel ------------------------------------------ Las herramientas tradicionales de configuración de red a bajo nivel en sistemas GNU/Linux son los programas `ifconfig' y `route' que vienen en el paquete `net-tools'. Estas herramientas han sido oficialmente reemplazadas por `ip' que viene en el paquete `iproute'. El programa `ip' funciona con Linux 2.2 y superior y es más poderoso que las herramientas anteriores. Sin embargo, las herramientas anteriores aún funcionan y resultan más familiares para muchos usuarios. 10.2.1. Configuración de la red a bajo nivel -- `ifconfig' y `route' -------------------------------------------------------------------- Veamos una ilustración de cómo cambiar la dirección IP de la interfaz `eth0' de `192.168.0.3' a `192.168.0.111' y convertir a `eth0' en la ruta a la red `10.0.0.0' vía `192.168.0.1'. Empiece ejecutando `ifconfig' y `route' sin argumentos para mostrar el estado actual de todas las interfaces de red y encaminamiento. # ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) Interrupt:9 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0 Primero deshabilitamos la interfaz. # ifconfig eth0 inet down # ifconfig lo Link encap:Local Loopback ... (no más entradas eth0) # route ... (no más entradas en la tabla de rutas) Luego la habilitamos con la nueva IP y la nueva ruta. # ifconfig eth0 inet up 192.168.0.111 \ netmask 255.255.0.0 broadcast 192.168.255.255 # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0 El resultado: # ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0 Para más información véase ifconfig(8) y route(8). 10.2.2. Configuración de la red a bajo nivel -- `ip' ---------------------------------------------------- Los comandos `ip' equivalentes a los comandos `ifconfig' y `route' anteriores son: * `ip link show' * `ip route list' * `ip link set eth0 down' * `ip addr del dev eth0 local 192.168.0.3' * `ip addr add dev eth0 local 192.168.0.111/16 broadcast 192.168.255.255' * `ip link set eth0 up' * `ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1' El programa `ip' muestra la sintaxis de sus comandos cuando se ejecuta con el argumento `help'. Por ejemplo, `ip link help' imprime por pantalla : Usage: ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } ip link show [ DEVICE ] Véase también ip(8). 10.2.3. Configurando una interfaz Wi-Fi --------------------------------------- Para interfaces Wi-Fi se utiliza el programa `iwconfig', que viene con el paquete `wireless-tools', además de `ifconfig' o `ip'. Véase iwconfig(8). 10.2.4. Configurando una interfaz PPP ------------------------------------- Si accede a Internet mediante un módem conectado a la línea telefónica doméstica la conexión se negocia usando el Protocolo Point-to-Point (PPP). Dichas conexiones se acceden como interfaces de red `ppp0', `ppp1', etc. Una interfaz PPP es administrada por el demonio PPP `pppd' que viene con el paquete `ppp'. De esta manera, para el usuario, configurar una interfaz PPP equivale a configurar `pppd'. 10.2.4.1. Configurando `pppd' en forma manual --------------------------------------------- Para establecer un vínculo con una red, se necesita abrir un puerto de comunicación (generalmente un puerto serie), los comandos deben enviarse a un dispositivo de comunicación (generalmente un módem) se debe marcar un número telefónico, se debe autenticar la identidad con un demonio PPP externo, se debe crear una interfaz PPP y deben modificarse las tablas de ruta de modo que el tráfico se pueda enviar por el enlace. `pppd' puede hacer todo esto y, en consecuencia, posee una lista muy extensa de opciones operativas. Estas opciones se describen en pppd(8). En un sistema Debian, las opciones globales se configuran en `/etc/ppp/options'. Las opciones específicas al usuario se configuran en `~/.ppprc'. Las opciones que dependen del puerto de comunicación utilizado son almacenadas en `/etc/ppp/options.'. Por ejemplo, supongamos que tiene dos módems--- un módem interno Lucent LT accesible a través de /dev/LT-modem y un módem externo accesible a través de /dev/ttyS0. Cree los dos archivos de opciones siguientes. # cat > /etc/ppp/options.LT-modem < /etc/ppp/options.ttyS0 < /etc/ppp/peers/KPN < /etc/ppp/peers/Planet < /etc/ppp/peers/KPN-Amsterdam < /etc/ppp/peers/KPN-DenHaag < /etc/ppp/peers/Planet-Amsterdam < /etc/ppp/peers/Planet-DenHaag < /etc/chatscripts/KPN-DenHaag < CONNECT \d\c EOF # cat > /etc/chatscripts/Planet-DenHaag < CONNECT \d\c EOF Para poderse conectar a estos ISPs se necesitan los nombres de cliente y contraseñas que `pppd' puede suministrar bajo demanda. Esta información se almacena en `/etc/ppp/pap-secrets' (si se utiliza el protocolo PAP) o en `/etc/ppp/chap-secrets' (si se utiliza el protocolo CHAP). Aunque CHAP es más seguro, PAP aún sigue siendo ampliamente utilizado. Puesto que estos archivos contienen información confidencial, ni el grupo ni el resto de usuarios deberían tener permiso de lectura o escritura sobre ellos. El formato de estos archivos se explica en pppd(8). Un "secreto" (tercer campo) se localiza en el archivo buscando el nombre del cliente (primer campo) y/o el nombre del servidor (segundo campo). Al conectarse a un ISP uno, generalmente, no conoce el nombre del servidor y, en cambio, suministra el nombre del cliente (usuario); esto fue hecho en las líneas `user' de `peers/KPN' y `peers/Planet' de arriba. # nombre del cliente nombre del servidor secreto kpn * kpn usuario3579@planet.nl * mi_mascota_preferida [1] Este archivo de opciones se incluye usando la opción `call'. 10.2.4.2. Configurando `pppd' usando `pppconfig' ------------------------------------------------ Una manera rápida de configurar `pppd' consiste en usar el programa `pppconfig' que viene con el paquete del mismo nombre. `pppconfig' configura los archivos como los anteriores luego de formular preguntas al usuario a través de una interfaz de menús. Si elije usar `resolvconf' entonces asegúrese de elegir "None" en la pantalla "Configure Nameservers". 10.2.4.3. Configurando una interfaz PPP usando `wvdial' ------------------------------------------------------- Un enfoque diferente para usar `pppd' consiste en ejecutarlo desde `wvdial' que viene con el paquete `wvdial'. En vez de hacer que `pppd' ejecute `chat' para marcar y negociar la conexión, `wvdial' realiza el marcado, la negociación inicial y luego inicia `pppd' para que haga el resto. En la mayoría de los casos dando sólamente el número telefónico, el nombre de usuario y la contraseña, `wvdial' logra establecer la conexión. 10.3. Asignando un nombre a la máquina -------------------------------------- 10.3.1. Nombre de la máquina ---------------------------- Un sistema Debian a veces necesita identificarse por su nombre. Para este propósito el kernel guarda el _hostname_ (nombre de la máquina). El script de inicio `/etc/init.d/hostname.sh' establece el nombre de la máquina durante el arranque (con el comando `hostname') usando el nombre almacenado en `/etc/hostname'. Este archivo _únicamente_ debería contener el nombre de la máquina y no un nombre de dominio completo. Para mostrar el nombre actual de la máquina ejecute `hostname' sin argumentos. 10.3.2. Nombre para el correo ----------------------------- El _mailname_ (nombre para el correo) de un máquina es el nombre que los programas relacionados con el correo utilizan para identificar la máquina. El archivo `/etc/mailname' contiene este nombre seguido de una nueva línea. Generalmente el nombre para el correo es uno de los nombres de dominio completo de la máquina. Véase mailname(5). Lo que ve el destinatorio de los mensajes de correo en la cabecera `From:' del mensaje enviado por su máquina Debian depende de cómo se encuentran configurados el Agente de Usuario de Correo (MUA) y el Agente de Transferencia de Correo (MTA). Supongamos que un usuario local `' envía un mensaje de una máquina con nombre para el correo `'. La cabecera `From:' del mensaje saliente será: * "`From: @'" si el MUA no tiene configurada la cabecera `From:'; * "`From: @'" si el MUA tiene configurado "`From: '"; * "`From: @'" si el MUA tiene configurado "`From: @'". Incluso cuando el MUA tiene una cabecera `From:' configurada el MTA puede añadir una cabecera "`Sender:@'" para indicar su verdadero origen. Por supuesto, cuando cualquier MTA realiza la reescritura de direcciones como se discutió en Sección 9.6.1.2, `Direcciones de correo electrónico inexistentes (Exim)' y Sección 9.6.1.3, `Reescritura selectiva de direcciones del correo saliente (Exim)', la dirección electrónica visualizada por el destinatario se puede modificar arbitrariamente. 10.4. Servicio de Nombres de Dominio (DNS) ------------------------------------------ Las máquinas son referenciadas por el nombre de dominio y por su dirección IP. DNS es un sistema cliente-servidor en donde los sistemas de resolución de nombres (llamados también traductores de direcciones) consultan a los servidores de nombres con objeto de asociar los nombres de dominio con las direcciones IP y otras propiedades de las máquinas. La biblioteca C GNU resolver(3) también puede buscar direcciones IP en archivos o consultar a los Servicios de Información de Red (NIS). Para ver la dirección IP asociada a una máquina local utilice el comando `hostname --fqdn'. Esto muestra el primer nombre de dominio completo que el sistema de resolución encuentra para el nombre de máquina local. [1] [1] Técnicamente, es el FQDN devuelto por gethostbyname(2) para el nombre de máquina dado por gethostname(2). 10.4.1. El sistema de resolución -------------------------------- La tarea de averiguar las direcciones IP asociadas con un nombre de dominio particular es la función de un sistema de resolución (resolver). El más utilizado es el conjunto de funciones de la biblioteca C GNU que llevan este nombre (resolver(3)). Otro es sistema de resolución FireDNS que viene con el paquete `libfiredns'. La forma que el sistema de resolución de la biblioteca C resuelve los nombres viene dada por la línea `hosts' del archivo de configuración `/etc/nsswitch.conf'. Esta línea lista los servicios que deberían usarse para resolver un nombre: por ejemplo, `dns', `files', `nis', `nisplus'. [1] Véase nsswitch.conf(5). Si se utiliza el servicio `files', el comportamiento del sistema de resolución también viene regido por el archivo de configuración `/etc/hosts'. Véase hosts(5). Todos los archivos anteriores son estáticos y se pueden editar con su editor favorito. Si se utiliza el servicio `dns', el comportamiento del sistema de resolución también viene dado por el archivo de configuración `/etc/resolv.conf'. Véase resolv.conf(5). Una de las funciones importantes del archivo `resolv.conf' consiste en listar las direcciones IP de los servidores de nombres que se contactarán para resolver el nombre. Esta lista a menudo depende del entorno de red que puede cambiar de tanto en tanto mientras la máquina está funcionando. Programas tales como `pppd' y `dhclient' son capaces de manipular `resolv.conf' para añadir y eliminar líneas, pero estas características no siempre funcionan adecuadamente y entran en conflicto entre sí. El paquete `resolvconf' soluciona mejor el problema proporcionando un marco estándar para la actualización de este archivo. Véase Sección 10.4.2, `Administrando la información del servidor de nombres -- `resolvconf''. [1] La forma en que el sistema de resolución resuelve los nombres teóricamente también viene dada por el archivo de configuración `/etc/host.conf'. La línea `order' en este archivo lista los métodos que deberían utilizarse para resolver un nombre: `bind', `hosts', `nis'. Véase host.conf(5). Creo que esta línea ha sido reemplazada por `hosts' de `nsswitch.conf' pero no estoy seguro. 10.4.2. Administrando la información del servidor de nombres -- `resolvconf' ---------------------------------------------------------------------------- El paquete `resolvconf' proporciona un marco para la administración dinámica de la información relativa a los servidores de nombres disponibles. Soluciona el antiguo problema de mantener las listas dinámicas de los nombres de los servidores para ser usadas por el sistema de resolución y los cachés DNS. Resolvconf se posiciona como intermediario entre los programas que controlan las interfaces de red y suministran información de los servidores de nombre, y las aplicaciones que necesitan de dicha información. `resolvconf' está diseñado para funcionar sin que sea necesaria ninguna configuración manual. No obstante, el paquete es bastante nuevo y puede requerir alguna intervención para lograr que funcione adecuadamente. Esto será realmente así si alguna vez personalizó paquetes para que actualicen al `/etc/resolv.conf': necesitará deshabilitar estas personalizaciones. Véase /usr/share/doc/resolvconf/README.gz para más detalles. 10.4.3. Guardar en memoria los nombres resueltos -- `dnsmasq' ------------------------------------------------------------- Salvo que su servidor de nombres sea el servidor oficial de un dominio resulta mejor utilizar un servidor de nombres con caché local como `dnsmasq' que funciona bien con `resolvconf'. 10.4.4. Proveyendo un Servicio de Nombres de Dominio -- `bind' -------------------------------------------------------------- Si necesita proveer un servicio de nombres oficial para un dominio entonces necesita de un servidor de nombres completo como `named' que viene con el paquete `bind9' o con `bind'. Para nuevas instalaciones se recomienda `bind9'. Para instalar `bind9', instale estos paquetes básicos: `bind9'; `dnsutils'. Puede que también quiera instalar estos paquetes de utilidades: `bind9-host'; `dns-browse'; `dnscvsutil'; `nslint'. Este paquete de documentación: `bind9-doc'. y estos paquetes de desarrollo: `libbind-dev'; `libnet-dns-perl'. Si configura interfaces usando DHCP entonces puede encontrar útil el siguiente paquete: `dhcp-dns'. Instale `bind9' o vuelva a configurarlo usando `dpkg-reconfigure' para realizar la configuración básica. La configuración consiste en editar `named.conf'. En Debian este archivo se encuentra en `/etc/bind/' y se utiliza principalmente para definir las zonas DNS básicas; `incluye' otros dos archivos: `named.conf.local', utilizado para definir las zonas locales y `named.conf.options', utilizado para configurar opciones (este último es procesado por `resolvconf' para producir `/var/run/bind/named.options' que es el mismo que el original excepto que la especificación `forwarders' es una lista de los servidores de nombre no locales actualmente disponibles. Para hacer uso de ello, cambie la línea `include' del `named.conf' de modo que incluya `/var/run/bind/named.options'. Véase Sección 10.4.2, `Administrando la información del servidor de nombres -- `resolvconf''.) Los archivos de base de datos sin una ruta completa mencionados en `named.conf*' se almacenarán en `/var/cache/bind/'. Este es el lugar correcto para almacenar archivos generados por `named': por ejemplo, los archivos de bases de datos para las zonas cuyo demonio es secundario. Los archivos de base de datos estáticos de `/etc/bind/' están y deben referenciarse en `named.conf' mediante sus rutas completas. Véase /usr/share/doc/bind9/README.Debian.gz para más detalles. 10.5. Configurando las interfaces de red usando DHCP ---------------------------------------------------- La configuración de las interfaces de red de bajo nivel se puede automatizar mediante el Protocolo de Configuración Dinámica de Hosts (DHCP). De esta manera, su cortafuegos, router o su ISP de banda ancha puede suministrar direcciones IP y otros parámetros. Para que esto funcione debe instalar uno de los siguientes paquetes: * `dhcp3-client' (versión 3, Internet Software Consortium) * `dhcpcd' (Yoichi Hariguchi y Sergei Viznyuk) * `pump' (Red Hat) `pump' es sencillo y ampliamente utilizado. `dhcp3-client' es complejo pero más configurable. [1] [1] Desde mediados de octubre 2003 está disponible también un `dhcp-client'. Este contiene la versión 2 del cliente ISC DHCP que ha sido reemplazada por la versión 3 que viene con `dhcp3-client'. Los encargados planean algún día cambiar el nombre de `dhcp3-client' a `dhcp-client' pero parece que no ocurrirá a tiempo para el lanzamiento de Sarge. 10.6. Configuración de la red de alto nivel en Debian ----------------------------------------------------- A fin de facilitar la configuración de la red, Debian proporciona una herramienta estándar de configuración de red de alto nivel que consiste en los programas `ifup', `ifdown' y el archivo `/etc/network/interfaces'. [1] Si elige utilizar `ifupdown' para realizar la configuración de su red, entonces _no_ debería usar los comandos de bajo nivel. [2] `Ifupdown' se programó bajo la suposición que sólo iba a ser utilizado para configurar y desconfigurar las interfaces de red. Para actualizar la configuración de la interfaz haga lo siguiente: # ifdown eth0 # editor /etc/network/interfaces # modifique a su antojo # ifup eth0 Para más información véase interfaces(5), /usr/share/doc/ifupdown/examples/network-interfaces.gz y ifup(8). [1] El formato del archivo `/etc/network/interfaces' de la versión actual de `ifupdown' es ligeramente incompatible con el formato de archivo de las primeras versiones de Potato. Si es necesario el script post-instalación `ifupdown' debería actualizar el archivo automáticamente. [2] Esto significa también que no debería utilizar otras herramientas de configuración de alto nivel tales como `whereami' que llaman a herramientas de configuración de bajo nivel. 10.6.1. Configurando una interfaz con una dirección IP estática. ---------------------------------------------------------------- Supongamos que desea configurar una interfaz Ethernet que tiene una dirección IP fija `192.168.0.123'. Esta dirección comienza con `192.168.0' por lo tanto debe estar en una LAN. Supongamos además que `192.168.0.1' es la dirección de la puerta de enlace de la LAN a Internet. Edite `/etc/network/interfaces' de modo que incluya un fragmento como el siguiente: iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 Si tiene instalado el paquete `resolvconf' puede añadir líneas para especificar la información relativa al DNS. Por ejemplo: iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 dns-search nicedomain.org dns-nameservers 195.238.2.21 195.238.2.22 Luego que se activa la interfaz, los argumentos de las opciones `dns-search' y `dns-nameservers' quedan disponibles para `resolvconf' para su inclusión en `resolv.conf'. El argumento `lindodominio.org' de la opción `dns-search' corresponde al argumento de la opción `search' en resolv.conf(5). Los argumentos `195.238.2.21' y `195.238.2.22' de la opción `dns-nameservers' corresponde a los argumentos de las opciones `nameserver' en resolv.conf(5). Otras opciones reconocidas son `dns-domain' y `dns-sortlist'. Véase Sección 10.4.2, `Administrando la información del servidor de nombres -- `resolvconf''. 10.6.2. Configurando una interfaz usando DHCP --------------------------------------------- Para configurar una interfaz usando DHCP edite el `/etc/network/interfaces' de manera que incluya un fragmento como el siguiente : iface eth0 inet dhcp Para que esto funcione debe tener instalado uno de los clientes DHCP mencionados en Sección 10.5, `Configurando las interfaces de red usando DHCP'. 10.6.3. Configurando una interfaz Wi-Fi --------------------------------------- El paquete `wireless-tools' incluye el script `/etc/network/if-pre-up.d/wireless-tools' que permite configurar hardware Wi-Fi (802.11a/b/g) antes que se active la interfaz. La configuración se realiza usando el programa `iwconfig'; véase iwconfig(8). Para cada parámetro posible del comando `iwconfig' puede incluir una opción en `/etc/network/interfaces' con un nombre como el del parámeto con el prefijo "wireless-". Por ejemplo, para fijar el ESSID de `eth0' en `miessid' y la clave de cifrado en `123456789e' antes de activar `eth0' usando DHCP, edite el `/etc/network/interfaces' de modo que incluya un fragmento como el siguiente : iface eth0 inet dhcp wireless-essid miessid wireless-key 123456789e Obsérvese que no debería utilizar este método para configurar el ESSID y la clave si está ejecutando `waproamd' para esta interfaz. En el momento que se ejecuta `ifup', `waproamd' ya tiene configurados ESSID y la clave. Véase Sección 10.9.4, `Activando la configuración de la red -- `waproamd''. 10.6.4. Configurando una interfaz PPP ------------------------------------- Los programas `ifup' e `ifdown' utilizan `pon' y `poff' para añadir y eliminar interfaces PPP, por lo tanto, primero lea Sección 10.2.4, `Configurando una interfaz PPP'. Supongamos que ha configurado PPP para que funcione con `mi_isp'. Edite `/etc/network/interfaces' de modo que incluya una sección como la siguiente : iface ppp0 inet ppp provider mi_isp con este fragmento, `ifup ppp0' hace pon mi_isp Desafortunadamente no es posible hoy por hoy proporcionar otras opciones a `pppd' en un sección `ppp' de `/etc/network/interfaces'. [1] Actualmente no es posible usar `ifupdown' para realizar una configuración auxiliar de las interfaces PPP. Como `pon' desaparece antes que `pppd' haya terminado de establecer la conexión, `ifup' ejecuta los scripts `up' antes que la interfaz PPP esté lista para usar. Hasta que se solucione este fallo [2] sigue siendo necesario realizar una configuración posterior en `/etc/ppp/ip-up' o `/etc/ppp/ip-up.d/'. [1] Véase fallo #196877 (http://bugs.debian.org/196877). [2] Véase fallo #127786 (http://bugs.debian.org/127786). 10.6.5. Configurando una interfaz PPPoE --------------------------------------- Muchos Proveedores de Servicios de Internet (ISPs) de banda ancha utilizan PPP para negociar las conexiones incluso cuando las máquinas de los clientes están conectados mediante Ethernet y/o redes ATM. Esto se logra mediante PPP sobre Ethernet (PPPoE) que es una técnica para el encapsulamiento del flujo PPP dentro de las tramas Ethernet. Supongamos que su ISP se llama `'. Primero configure PPP y PPPoE para `'. La manera más fácil de hacerlo consiste en instalar el paquete `pppoeconf' y ejecutar `pppoeconf' desde la consola. A continuación, edite `/etc/network/interfaces' de modo que incluya un fragmento como el siguiente: iface eth0 inet ppp provider A veces surgen problemas con PPPoE relativos a la Unidad de Transmisión Máxima (Maximum Transmit Unit o MTU) en líneas DSL (Digital Subscriber Line). Véase DSL-HOWTO (http://www.tldp.org/HOWTO/DSL-HOWTO/) para más detalles. Obsérvese que si su módem posee un router entonces el módem/router maneja por sí mismo la conexión PPPoE y aparece del lado de la LAN como una simple puerta de enlace Ethernet a Internet. 10.6.6. Configurando múltiples interfaces Ethernet para una puerta de enlace ---------------------------------------------------------------------------- Supongamos que `eth0' está conectada a Internet con un dirección IP configurada con DHCP y `eth1' está conectada a la LAN con una dirección IP estática `192.168.1.1'. Edite `/etc/network/interfaces' de modo que incluya un fragmento similar al siguiente: iface eth0 inet dhcp iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0 Si activa NAT en esta máquina como se describe en Sección 10.12, `Configurando una puerta de enlace' puede compartir la conexión de Internet con todas las máquinas de la LAN. 10.6.7. Configurando interfaces virtuales ----------------------------------------- Usando interfaces virtuales puede configurar una única tarjeta Ethernet para que sea la interfaz de distintas subredes IP. Por ejemplo, supongamos que su máquina se encuentra en una red LAN 192.168.0.x/24. Desea conectar la máquina a Internet usando una dirección IP pública proporcionada con DHCP usando su tarjeta Ethernet existente. Edite `/etc/network/interfaces' de modo que incluya un fragmento similar al siguiente: iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 iface eth0:0 inet dhcp La interfaz `eth0:0' es una interfaz virtual. Al activarse también lo hará su padre `eth0'. 10.7. _Re_configuración de la red --------------------------------- En lo que sigue sería importante que el lector comprenda la diferencia entre una _interfaz física_ y una _interfaz lógica_. [1] Una interfaz física es lo que hemos estado llamando "interfaz", lo que hemos designado con `eth0', `ppp1', etc. Una interfaz lógica es un conjunto de valores que pueden asignarse a los parámetros variables de una interfaz física. Si al leer le resulta confuso, reemplace la expresión "configurada como interfaz lógica `X'" por la expresión "configurada con el perfil de la interfaz `X'". Las definiciones `iface' en `/etc/network/interfaces' son, en realidad, definiciones de interfaces lógicas no de interfaces físicas. [2] Si nunca más desea volver a configurar sus interfaces entonces puede ignorar este hecho ya que la interfaz física `X' será configurada, por defecto, como interfaz lógica `X'. No obstante, supongamos que su máquina es un equipo portátil que transporta de su casa a su trabajo. Cuando conecta la máquina a una red corporativa o a su LAN hogareña, necesita configurar `eth0' adecuadamente. Primero defina dos interfaces lógicas `hogar' y `trabajo' (en vez de `eth0' como hicimos antes) que describen cómo debería configurarse la interfaz para la red hogareña y la del trabajo respectivamente. iface hogar inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 iface trabajo inet static address 81.201.3.123 netmask 255.255.0.0 gateway 81.201.1.1 De esta manera, la interfaz física `eth0' se puede activar para la red hogareña con la configuración apropiada especificándola en la línea de comandos: # ifup eth0=hogar Para reconfigurar `eth0' para la red del trabajo, ejecute los comandos: # ifdown eth0 # ifup eth0=trabajo Obsérvese que con el archivo `interfaces' escrito así ya no resultará posible activar `eth0' haciendo solamente `ifup eth0'. La razón es que `ifup' utiliza el nombre de la interfaz física como el nombre de la interfaz lógica `eth0' predeterminada y, en realidad, en nuestro ejemplo no hay una interfaz lógica definida. [1] Esta terminología se utiliza en la documentación de `ifupdown'. [2] Observe que las interfaces que aparecen en las líneas `auto' son interfaces físicas, no lógicas. 10.8. Reconfiguración mágica de la red -------------------------------------- Cuando se ejecuta `ifup', los nombres de las interfaces lógicas se pueden transformar en los nombres de otras interfaces lógicas. La manera en que se transforman los nombres depende de las circunstancias. Por ejemplo, se puede configurar `ifup' para activar una determinada interfaz física con la interfaz lógica adecuada entre un conjunto de alternativas predefinidas. La transformación del nombre de la interfaz lógica ocurre en los siguientes casos : * Si en la línea de comandos de `ifup' no se da el nombre de la interfaz lógica entonces como nombre de interfaz lógica inicial se utiliza el nombre de la interfaz física. * Si el nombre de la interfaz lógica coincide con el patrón de una sección `mapping' entonces se aplica esta transformación para generar un nuevo nombre de interfaz lógica. Esto se realiza recursivamente hasta que no haya más coincidencias con el patrón. * Si el nombre de la última interfaz lógica corresponde a la definición de una interfaz lógica de `/etc/network/interfaces' entonces la interfaz física es activada como esta interfaz lógica. Caso contrario `ifup' muesta el mensaje "Ignoring unknown interface" y se detiene. La sintaxis de una sección `mapping' es la siguiente: mapping script [map