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 jun 16 21:20:36 UTC 2008 ------------------------------------------------------------------------------- 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. Dependencias entre paquetes 2.2.9. Significado de "Pre-depende" 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. `dpkg' 2.3.2. APT 2.3.3. `dselect' 2.3.4. Actualizando un sistema en funcionamiento 2.3.5. Archivos `.deb' descargados y en caché 2.3.6. 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 los niveles de ejecución 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. Cuidados especiales para tratar con módulos 2.7.4. 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. Primeros pasos 4.1.1. Ingresar al sistema como superusuario 4.1.2. Configurar un entorno mínimo para principiantes 4.1.3. Añadir una cuenta de usuario 4.1.4. Alternar entre consolas virtuales 4.1.5. Cómo apagar el sistema 4.1.6. Hora de jugar 4.2. Midnight Commander (MC) 4.2.1. Mejorar MC 4.2.2. Iniciar MC 4.2.3. Administrar archivos con MC 4.2.4. Trucos para la línea de comandos: 4.2.5. Editor 4.2.6. Visor 4.2.7. Inicio automático de programas 4.2.8. Sistema de archivos virtuales FTP 4.3. Entorno de trabajo tipo Unix 4.3.1. Combinaciones de teclas habituales 4.3.2. Comandos Unix básicos 4.3.3. Ejecución de comandos 4.3.4. Comandos sencillos 4.3.5. Ejecución de comandos y variables de entorno 4.3.6. Búsqueda en la ruta de comandos 4.3.7. Opciones de la línea de comandos 4.3.8. Comodines del intérprete de comandos 4.3.9. Valor devuelto por un comando 4.3.10. Secuencia de comandos típica 4.3.11. Alias de comandos 4.4. Procesamiento de texto al estilo Unix 4.4.1. Expresiones regulares 4.4.2. Expresiones de reemplazo 4.5. Sistema de archivos tipo Unix 4.5.1. Fundamentos sobre los archivos Unix 4.5.2. El concepto de sistema de archivos en Debian 4.5.3. Permisos de acceso de archivos y directorios 4.5.4. Marcas de tiempo 4.5.5. Enlaces 4.5.6. Tuberías con nombre (FIFOs) 4.5.7. Sockets 4.5.8. Archivos de dispositivo 4.5.9. Sistema de archivos `/proc' 4.6. Sistema X Window 4.6.1. Iniciar el sistema X Window 4.6.2. Menú en el sistema X Window 4.6.3. Combinaciones de teclas para el sistema X Window 4.7. Para saber más 5. Actualizando una distribución 5.1. Actualizando de Potato a Woody 5.2. Preparándose para una actualización 5.3. Actualizando 5.3.1. Usando `dselect' 5.3.2. 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 7.4. El kernel 2.6 con udev 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. Convertir un archivo de texto con `recode' 8.6.13. Sustitución de expresiones regulares 8.6.14. Editar un archivo con un script 8.6.15. Extraer diferencias y combinar actualizaciones entre archivos fuente 8.6.16. Convertir un archivo grande en archivos más pequeños 8.6.17. Extraer datos de una tabla contenida en un archivo de texto 8.6.18. Pequeños scripts que incluyen tuberías 8.6.19. Pequeños scripts para recorrer distintos archivos 8.6.20. La locura de los script cortos en Perl 8.6.21. Obtener el texto de una página web o del archivo de una lista de correos 8.6.22. Impresión de una página web 8.6.23. Impresión de la página una página del manual 8.6.24. Combinar dos archivos PostScript o PDF 8.6.25. El tiempo de un comando 8.6.26. El comando `nice' 8.6.27. Planificar una actividad (`cron', `at') 8.6.28. Intercambiando consolas con `screen' 8.6.29. Probando la red 8.6.30. Eliminar mensajes de la cola local 8.6.31. Eliminar mensajes bloqueados de la cola local 8.6.32. Redistribuir los contenidos de `mbox' 8.6.33. Borrar el contenido de un archivo 8.6.34. Archivos fantasma 8.6.35. `chroot' 8.6.36. Cómo verificar los enlaces duros 8.6.37. Montar una imagen del disco duro 8.6.38. Samba 8.6.39. 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. Web 13.9. Preparación de documentos 13.9.1. Tratamiento de texto `roff' 13.9.2. SGML 13.9.3. TeX/LaTeX 13.9.4. Programación ilustrada 13.10. Creación de paquetes Debian 13.10.1. Empaquetar un único binario 13.10.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'.. Inicialmente, este documento era una "referencia rápida" pero creció. No obstante, mi principio rector sigue siendo _resúmalo y simplifíquelo_. 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=" "'. Véase Sección 13.2.1, `Bash -- el intérprete de comandos interactivo estándar de _GNU_' para más información sobre `bash'. Una referencia: * una página del _manual_ se muestra así bash(1). * una página _TEXINFO GNU_ se muestra así `info libc'. * un _libro_ se muestra así _El Lenguaje de Programación C_. * una _URL_ se muestra así http://www.debian.org/doc/manuals/debian-reference/. * un _archivo_ del sistema se muestra así `file:///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/) Otras abreviaturas han sido definidas en el texto antes de ser utilizadas. Si bien únicamente se proporcionan las URLs de los documentos del LDP, también se pueden obtener en paquetes e instalarse en `file:///usr/share/doc/HOWTO/'. Véase Sección 15.1, `Referencias'. 1.3. Scripts de ejemplo ----------------------- Los scripts de ejemplo (http://www.debian.org/doc/manuals/debian-reference/examples/) que acompañan este documento en el paquete `debian-reference-es' se encuentran disponibles en `file:///usr/share/doc/Debian/reference/examples/'. El "." inicial en el nombre de los archivos ocultos ha sido reemplazados 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 y desea hacer un mejor uso de esta guía, es aconsejable que ejecute el siguiente comando para instalar otros paquetes que contienen documentación útil: # aptitude install mc less ssh vim kernel-package \ manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc debian-reference \ libpam-doc glibc-doc samba-doc exim4-doc-html 1.5. Fundamentos sobre las distribuciones Debian ------------------------------------------------ Debian se encarga de tres distribuciones simultáneamente. Estas son: * `estable' --- La más útil para un servidor ya que sólo se actualiza con parches de seguridad. Véase Sección 2.1.3, `La distribución `estable''. * `de prueba' --- La distribución preferidad para una estación de trabajo ya que contiene las últimas versiones de programas de escritorio que han sido relativamente probados. Véase Sección 2.1.4, `La distribución `de prueba''. * `inestable' --- Lo último de lo último. La elección de los desarrolladores de Debian Véase Sección 2.1.5, `La distribución `inestable''. 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'. Debian distributions also have code names as described in Sección 2.1.7, `Los nombres de versión de la distribución Debian'. Antes del lanzamiento de Woody en agosto del 2002, las tres distribuciones eran, respectivamente, Potato, Woody y Sid. Cuando salga Sarge las distribuciones `estable' e `inestable' serán Sarge y Sid. Se creará entonces una nueva distribución `de prueba' que será inicialmente una copia de la distribución `estable' y se le asignará un nuevo nombre. Suscríbase a la lista de poco tráfico `debian-devel-announce@lists.debian.org' para estar al tanto sobre las novedades de Debian. Véase Sección 2.1, `Los archivos Debian'. Si desea utilizar versiones de paquetes que son más actuales que las que acompañan a la distribución que está usando, puede o actualizar a una distribución posterior como se explica en Capítulo 5, `Actualizando una distribución' o bien actualizar únicamente los paquetes seleccionados. Si el paquete no puede actualizarse fácilmente puede acondicionarlo tal como se explica en Sección 6.4.10, `Portar un paquete a la rama `stable''. | Permanecer en la versión `de prueba' de Debian tiene como efecto colateral la lenta solución de los fallos de seguridad. Los paquetes que solucionan estos fallos se ubican en `inestable' y migran a `de prueba' sólo mucho después. Si mezcla versiones de Debian, por ejemplo, `de prueba' con `estable' o `inestable' con `estable', es muy probable que descargue paquetes fundamentales tales como `libc6' de la rama `de prueba' o `inestable' no habiendo garantía que no contengan 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.35, ``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 Etch (4.0), se encuentran en el directorio `stable' (enlace simbólico a `etch'): * `stable/main/': Este directorio contiene los paquetes que pertenecen a la versión oficial más reciente del sistema Debian. Todos estos paquetes son libres, es decir, están de acuerdo con Las directivas del Software Libre de Debian (http://www.debian.org/social_contract#guidelines) (DFSG) (también disponible como `file:///usr/share/doc/debian/social-contract.txt' que se instala mediante `debian-doc'). * `stable/non-free/': este directorio contiene paquetes que no se pueden considerar como libres de acuerdo con la DFSG. Por ejemplo, algunos paquetes tienen licencias que prohiben su distribución comercial. Otros pueden ser redistribuidos pero, de hecho, son shareware. * `stable/contrib/': este directorio contiene paquetes que son libres de acuerdo con la DFSG pero que dependen de algún modo de otro paquete que _no_ es libre. 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 Lenny, se encuentran en el directorio `testing' (enlace simbólico a `lenny') 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 deben poder instalarse; 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. 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 `etch' y `lenny', 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 `etch' y `testing/' es un enlace simbólico a `lenny'. Esto significa que `Etch' es la distribución estable y `Lenny' 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 pizarón, * _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' 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.10, `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 señaladas 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 compilador 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, `Dependencias 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(1) 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(1) 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 generalmente es el nombre del paquete, es el nombre de versión, es el número de revisión y es la arquitectura. Por supuesto, los archivos se pueden fácilmente cambiar de nombre. Uno puede averiguar qué paquete esta realmente contenido en un nombre de archivo ejecutando el siguiente comando: dpkg --info El número de revisión es asignado por el desarrollador Debian o por quien creó el paquete. Un cambio en el número de revisión generalmente indica que a cambiado algún aspecto del empaquetado. 2.2.4. Preservando la configuración local ----------------------------------------- Los archivos que pueden ser modificados por el administrador local se encuentran en `/etc/'. La política de Debian establece que durante la actualización de paquetes se deben conservar todos los cambios de archivos de configuración local. Si con el propio paquete viene una versión predeterminada de un archivo configurable localmente éste se denomina "conffile". El sistema de administración de paquetes no actualiza los archivos de configuración que han sido modificados por el administrador. Por otra parte, si el archivo de configuración no ha sido modificado por el administrador, entonces será actualizado junto con el resto del paquete. Para dstar los archivos de configuración de un paquete ejecute el siguiente comando: dpkg --status y consulte la línea "Conffiles:". Para más información sobre los archivos de configuración puede consultar la sección "Archivos de configuración" del Manual de Normativa de Debian (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 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. Dependencias entre paquetes ---------------------------------- El sistema de paquetes Debian maneja declaraciones de dependencia que se utilizan para expresar que un paquete necesita de la instalación de otro para funcionar. * 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 y mejoran la funcionalidad de A. La misma relación se expresa diciendo que el paquete B _Mejora_ el paquete A. * El Paquete A _Está en conflicto_ con el Paquete B cuando A no funciona si se instala B en el sistema. A menudo los "Conflictos" están relacionados con "Reemplazos". * El Paquete A _Reemplaza_ el Paquete B cuando los archivos instalados por B se eliminan o 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. 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-depende" ----------------------------------- `dpkg' configura siempre primero el paquete del cual otro Depende. Sin embargo, `dpkg' generalmente desempaquete los archivos de los paquetes de modo arbitrario independientemente de las dependencias (desempaquetar consiste en extraer los archivos de un paquete y ubicarlos en el lugar correcto) No obstante, si un paquete _Pre-Depende_ de otro éste último se desempaquetará y configurará primero. [1] El uso de esta dependencia se mantiene al mínimo. [1] Este mecanismo fue proporcionado para realizar actualizaciones del sistema seguras del formato `a.out' al formato `ELF' en donde el _orden_ en que se desempaquetaban los paquetes es crítica. 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'. 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 sin problemas, segura y fiable. El sistema de paquetes alerta al administrador sobre cambios importantes o, a veces, le solicita que tome decisiones. 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 solamente los detalles básicos comenzando con las herramientas de empaquetar. 2.3.1. `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.2. 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.3. `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.4. 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. Cuando los paquetes son actualizados cualquier servicio proporcionado por estos paquetes son reiniciados si han sido configurados para ejecutarse en el nivel de ejecución presente. El sistema Debian no exige usar el modo monousuario para actualizar un sistema en funcionamiento. 2.3.5. 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.6. 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 los siguientes niveles de ejecución: * 1 (modo monousuario), * 2 al 5 (modos multiusuario) y * 0 (apagar el sistema), * 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'. Al entrar a un nivel de ejecución se ejecutan todos los scripts ubicadosi en `/etc/rc.d/'. La primera letra del nombre del script determina la _manera_ en que se ejecuta el script: Los scripts cuyos nombres comienzan con `K' se ejecutan con el argumento `stop'. Los scripts que comienzan con `S' se ejecutan con el argumento `start'. Los scripts se ejecutan de acuerdo al orden alfabético de sus nombres; de esta manera los scripts "stop" se ejecutan antes que los scripts "start" y los dos díguitos a continuación de `K' o `S' determinan el orden en que se ejecutan los scripts. Los scripts situados en `/etc/rc' son de hecho sólo enlaces simbólicos que apuntan a los scripts situados en `/etc/init.d/' Cada script también acepta como argumento "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 los niveles de ejecución ---------------------------------------------- La personalización de los niveles de ejecución es una tarea avanzada del administrador del sistema. Los siguientes consejos son válidos para la mayoría de los servicios. Para habilitar el servicio en el nivel de ejecución cree el enlace simbólico `/etc/rc.d/S' con objetivo `../init.d/'. El número de secuencia debe ser igual al asignado al servicio cuando fue instalado el paquete. Para deshabilitar un servicio, cambie de nombre el enlace simbólico de modo que su nombre comience con `K' y no con `S' y su número de secuencia sea 100 menos . Para estos fines, es conveniente usar un editor de niveles de ejecución tales como `sysv-rc-conf' o `ksysv'. En vez de cambiarle el nombre, es posible eliminar el enlace simbólico `S' de un servicio de un directorio de niveles de ejecución determinado. Esto no deshabilita el servicio sino que lo deja en un estado "potencial" al menos en lo que respecta al sistema init `sysv-rc' : al cambiar de nivel de ejecución el servicio no se lo activará ni se lo detendrá sino que se lo dejará como estaba, independientemente si esta ejecutándose o no. Obsérvese, no obstante, que un servicio que está en este estado potencial se activará si se actualiza su paquete independientemente si estaba o no ejecutándose antes de la actualización. Este es un atajo conocido del sistema Debian actual. Nótese además que debería conservar los enlaces simbólicos `K' de un servicio en los niveles de ejecución 0 y 6. Si borra todos los enlaces simbolicos de un servicio, entonces al actualizar el paquete del mismo restaurará todos los enlaces simbólicos a su estado predeterminado de fábrica. _No_ es aconsejable realizar modificaciones a los enlaces simbólicos situados en `/etc/rcS.d/'. 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(1). 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. 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.4. 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.35, ``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 `file:///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 file:///usr/share/doc/grub-doc/html/ ... lea los contenidos # apt-get install grub # pager file:///usr/share/doc/grub/README.Debian.gz ... 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.1.3, `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/XF86Config' en vez de `/etc/X11/XF86Config-4' en los siguientes ejemplos. 3.3.1.1. Usando el protocolo ms3 -------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-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 mis scripts de ejemplo (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.3.1.2. Usando el protocolo raw -------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-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/XF86Config-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/XF86Config-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) --------------- El Common UNIX Printing System (o CUPS(TM)) se instala con `aptitude' "Tareas" -> "Servidores" -> "Servidor de impresión". (Sarge) Para un mejor resultado, configure `aptitude' haciendo "F10" -> "Opciones" -> "Manejo de dependencias" -> "[X] Instalar los paquetes recomendados automáticamente". Los entornos de escritorio KDE y Gnome permiten una configuración secilla de las impresoras. De forma alternativa, si tiene instalado `swat' puede configurar el sistema usando cualquier navegador: $ 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. 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. * ... * ... 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 --------------------------------------------------- Para una unidad CD-RW IDE y un núcleo 2.4, 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