Guía de referencia de Debiani

Guía de referencia de Debian
Osamu Aoki

Guía de referencia de Debian

Copyright © 2013-2024 Osamu Aoki

La Guía de Referencia de Debian (version 2.124) (2024-06-30 04:06:30 UTC) pretende aportar una visión amplia del sistema
Debian y servir de guía al usuario después de la instalación. Se tratan diferentes aspectos de la administración del sistema, usando
ejemplos en el intérprete de órdenes, para todo tipo de usuarios.

ii

Guía de referencia de Debianiii

COLABORADORESTÍTULO :Guía de referencia de DebianACCIÓNNOMBREFECHAESCRITO POR

Osamu Aoki

30 de junio de 2024

FIRMA

HISTORIAL DE REVISIONESNÚMEROFECHAMODIFICACIONESNOMBRE

Guía de referencia de DebianivÍndice general
1. Tutoriales de GNU/Linux1

1.1. Introducción a la consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.1.1. El cursor del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.1.2. El indicador del intérprete de órdenes en GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.1.3. La cuenta de superusuario (root) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.1.4. El cursor del intérprete de órdenes de superusuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.1.5. Herramientas gráficas para la administración del sistema . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.1.6. Consolas virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.1.7. Cómo cerrar el intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.1.8. Cómo apagar el sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.1.9. Cómo recuperar la configuración normal de una consola . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.1.10. Paquetes complementarios recomendados para usarios sin experiencia . . . . . . . . . . . . . . . . . . .

4

1.1.11. Una cuenta de usuario adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.1.12. Configuración de sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.1.13. Hora de jugar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2. Sistema de archivos tipo Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2.1. Información básica sobre archivos en Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.2.2. Sistemas de archivos internos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.2.3. Permisos del sistema de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.2.4. Gestión de permisos para nuevos archivos: umask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.2.5. Permisos para grupos de usuarios (grupo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.2.6. Marcas de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.7. Enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.8. Tuberías con nombre (FIFOs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.9. «Sockets» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.10. Archivos de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.11. Archivos de dispositivos especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.12. procfs y sysfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.13. tmpfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3. Midnight Commander (MC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Guía de referencia de Debianv

1.3.1. Personalización de MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2. Comenzando con MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.3. Gestor de archivos de MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.4. Trucos de la línea de órdenes en MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.5. El editor interno de MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.6. El visor interno de MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.7. Selección inteligente del visor en MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.8. Sistema de archivos virtual de MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4. Fundamentos de entornos de trabajo tipo Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1. El intérprete de órdenes (shell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.2. Personalización de bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4.3. Combinaciones de teclas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4.4. Operaciones con el ratón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.5. El paginador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.6. El editor de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.7. Configuración del editor de texto por defecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.8. Usando vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.9. Grabación de las actividades del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.10. Órdenes básicas de Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5. Órdenes simples para el intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5.1. Ejecución de órdenes y variables de entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5.2. La variable «$LANG» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5.3. La variable «$PATH» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5.4. La variable «$HOME» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5.5. Opciones de la línea de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5.6. Expansión de un patrón en el intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5.7. Valor devuelto por la orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.5.8. Secuencias de órdenes comunes y redirecciones del intérprete de órdenes . . . . . . . . . . . . . . . . . 32
1.5.9. Alias de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.6. Operaciones de texto al estilo de Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.6.1. Herramientas de texto Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.6.2. Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.6.3. Sustitución de expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.6.4. Sustituciones globales mediante expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.6.5. Extracción de datos en archivos de texto en forma de tabla . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.6.6. Fragmentos de órdenes utilizados con tuberías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Guía de referencia de Debian

2. Gestión de paquetes Debianvi

40

2.1. Prerequisitos de la gestión de paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.1. Sistema de gestión de paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.2. Configuración de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.3. Precauciones principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.1.4. Conviviendo con actualizaciones continuas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.1.5. Fundamentos del archivo de Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.1.6. Debian es 100 % software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.1.7. Dependencias de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.1.8. Flujo de hechos de las órdenes de gestión de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.9. Soluciones a problemas básicos en la gestión de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.1.10. Como seleccionar paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.1.11. Cómo hacer frente a requisitos contradictorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.2. Operaciones básicas de la gestión de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2.1. apt vs. apt-get / apt-cache vs. aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2.2. Operaciones básicas de gestión de paquetes utilizando la línea de órdenes . . . . . . . . . . . . . . . . . 53
2.2.3. Uso interactivo de aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.2.4. Combinaciones de teclado en aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.2.5. Visualización de paquetes en aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.2.6. Opciones del método de búsqueda con aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2.7. La fórmula de la expresión regular de aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2.8. Resolución de dependencias en aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.2.9. Registro de la actividad de los paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3. Ejemplos de operaciones con aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3.1. Buscando paquetes interesantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3.2. Enumera los paquetes cuyos nombres encajan con la expresión regular . . . . . . . . . . . . . . . . . . . 59
2.3.3. Navega por la relación de paquetes que encajan con la expresión regular . . . . . . . . . . . . . . . . . . 59
2.3.4. Purga los paquetes eliminados definitivamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3.5. Estado de instalación ordenado de forma automática/manual . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3.6. Actualización mayor del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.4. Operaciones avanzadas de gestión de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.4.1. Operaciones avanzadas de gestión de paquetes desde la línea de órdenes . . . . . . . . . . . . . . . . . . 62
2.4.2. Verificación de los archivos de un paquete instalado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.4.3. Protección frente a problemas con paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.4.4. Buscando metadatos en los paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.5. Gestión interna de los paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.5.1. Metadatos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.5.2. Archivo «Release» del nivel superior y autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.5.3. Archivos «Release» a nivel de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Guía de referencia de Debianvii

2.5.4. Actualizando la meta información de los paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.5. Estado del paquete para APT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.6. El estado del paquete en aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.7. Copias locales de los paquetes descargados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.8. Nombres de archivos de paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.5.9. La orden dpkg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.5.10. La orden update-alternatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.5.11. La orden dpkg-statoverride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.5.12. La orden dpkg-divert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.6. Recuperación de un sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.6.1. Instalación fallida debido a dependencias incumplidas . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.6.2. Errores de almacenamiento en la caché de los datos del paquete . . . . . . . . . . . . . . . . . . . . . . 71
2.6.3. Incompatibilidad con la configuración antigua del usuario . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.6.4. Superposición de archivos por diferentes paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.6.5. Arreglando un archivo de órdenes de un paquete roto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.6.6. Recuperación con la orden dpkg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.6.7. Recuperando datos de la selección de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.7. Consejos para la gestión de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.7.1. ¿Quién sube los paquetes? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.7.2. Limitar el ancho de banda de descarga para APT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.7.3. Descarga y actualización automática de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.7.4. Actualizaciones y Backports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.7.5. Archivos externos de los paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.7.6. Paquetes de origen mixto de archivos sin apt-pinning . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.7.7. Ajustar la versión candidata con apt-pinning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.7.8. Bloqueo de la instalación de paquetes recomendados («Recommends«) . . . . . . . . . . . . . . . . . . 77
2.7.9. Seguimiento «en pruebas» con algunos paquetes de «inestable» . . . . . . . . . . . . . . . . . 78
2.7.10. Mantener unstable (inestable) con algunos paquetes de experimental . . . . . . . . . . . . . . . 79
2.7.11. Volver al estado anterior por emergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.7.12. El paquete «equivs« . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.7.13. Portar un paquete a un sistema estable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2.7.14. Servidor proxy para APT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2.7.15. Más información acerca de la gestión de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Guía de referencia de Debianviii

3. La inicialización del sistema

83

3.1. Un resumen del proceso de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.1.1. Fase 1: UEFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.1.2. Fase 2: el cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.1.3. Fase 3: el sistema mini-Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.1.4. Fase 4: el sistema normal Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.2. Systemd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.2.1. Arranque de systemd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.2.2. Inicio de sesión en Systemd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.3. Los mensajes del núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.4. El sistema de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5. Gestión del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.6. Otros monitores del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.7. Configuración del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.7.1. El nombre del equipo (hostname) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.7.2. El sistema de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.7.3. Inicialización del interfaz de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.7.4. Inicialización del sistema en la nube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.7.5. Ejemplo de personalización para ajustar el servicio sshd . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.8. El sistema udev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.9. La inicialización del módulo del núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4. Autenticación y controles de acceso

94

4.1. Acreditación normal de Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.2. Gestionando información de cuentas y contraseñas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3. Buenas contraseñas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.4. Creando una contraseña cifrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.5. PAM y NSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.5.1. Archivos de configuración utilizados por PAM y NSS . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.5.2. La actual gestión centralizada de sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.5.3. «Razones por las que GNU no tienen la funcionalidad del grupo wheel« . . . . . . . . . . . . . . . . . . 99
4.5.4. Regla estricta para contraseñas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.6. Acreditación de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.6.1. Contraseñas seguras en Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.6.2. «Secure Shell« . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.6.3. Medidas extraordinarias de seguridad en Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.6.4. Asegurando la contraseña de root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.7. Otros controles de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.7.1. Listas de control de acceso (ACL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.7.2. sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.7.3. PolicyKit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.7.4. Restricción de acceso a algunos servicios del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.7.5. Características de seguridad de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Guía de referencia de Debian

5. Configuración de red

ix

105

5.1. La infraestructura de red básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.1.1. La resolución del nombre del equipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.1.2. El nombre del interfaz de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.1.3. EL rango de direcciones de red para una LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.1.4. El mantenimiento de los dispositivos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.2. La configuración moderna de red en el escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.2.1. Herramientas de interfaz gráfico de usuario para la configuración de red . . . . . . . . . . . . . . . . . . 109
5.3. La moderna configuración de la red sin GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.4. La moderna configuración de la red para la nube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.4.1. La moderna configuración de red para la nube con DHCP . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.4.2. La moderna configuración de red para la nube con una IP estática . . . . . . . . . . . . . . . . . . . . . 110
5.4.3. La moderna configuración de la red para la nube con Network Manger . . . . . . . . . . . . . . . . . . . 110
5.5. La configuración de red de bajo nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.5.1. Órdenes iproute2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.5.2. Operaciones seguras de red a nivel bajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.6. Optimización de la red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.6.1. Encontrando la MTU óptima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.6.2. Optimización TCP en redes WAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.7. Infraestructura Netfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6. Aplicaciones de red

115

6.1. Navegadores web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.1.1. Spoofing de la cadena User-Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.1.2. extensión del navegador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.2. El sistema de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.2.1. Fundamentos de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.2.2. Limitación del servicio moderno de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.2.3. Expectativa histórica del servicio de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.2.4. Agente de transporte de correo (Mail transport agent, MTA) . . . . . . . . . . . . . . . . . . . . . . . . 118
6.2.4.1.

Configuración de exim4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

6.2.4.2.

Configuración de postfix con SASL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

6.2.4.3.

La configuración de la dirección de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

6.2.4.4.

Operaciones fundamentales MTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

6.3. Servidor de acceso remoto (SSH) y utilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.3.1. Fundamentos de SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.3.2. Nombre de usuario en el host remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.3.3. Conectarse sin contraseñas del equipo remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.3.4. Tratando con clientes SSH extraños . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

Guía de referencia de Debianx

6.3.5. Configuración ssh-agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.3.6. Enviar un correo desde un host remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.3.7. Puerto de reenvío para túnel SMTP/POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.3.8. Apagar un sistemas remoto utilizando SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.3.9. Resolución de problemas de SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.4. Servidor de impresión y utilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.5. Servidores de aplicaciones en otras redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.6. Otros clientes de aplicaciones de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.7. Diagnóstico de los demonios del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7. Sistema GUI (interfaz gráfica de usuario)

129

7.1. Entorno de escritorio GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.2. protocolo de comunicación GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
7.3. infraestructura GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.4. Aplicaciones GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.5. Directorios de los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.6. Fuentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.6.1. Tipos de letras fundamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.6.2. Rasterización de fuentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.7. Sandbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.8. Escritorio remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.9. conexión del servidor X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.9.1. Conexión local del servidor X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.9.2. Conexión remota del servidor X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7.9.3. Conexión chroot del servidor X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7.10. Portapapeles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8. I18N y L10N

140

8.1. Configuración regional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
8.1.1. Razón de ser de la configuración regional UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
8.1.2. Reconfiguración de la configuración regional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.1.3. Codificación del nombre de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
8.1.4. Configuración regional de los mensajes y documentación traducida . . . . . . . . . . . . . . . . . . . . 142
8.1.5. Efectos de la configuración regional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
8.2. La entrada por teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
8.2.1. Teclado de entrada para la consola Linux y X Window . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
8.2.2. La entrada por teclado para Wayland . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
8.2.3. El soporte al método de entrada con lBus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
8.2.4. Ejemplo para el japonés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
8.3. La salida por pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
8.4. Ancho de los caracteres ambiguos de Asia oriental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

Guía de referencia de Debian

9. Trucos del sistema

xi

146

9.1. Consejos para la consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
9.1.1. Registro correcto de las actividades del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . 146
9.1.2. El programa screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
9.1.3. Navegando por los directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
9.1.4. Readline wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
9.1.5. Escaneando el árbol del código fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
9.2. Personalización de vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
9.2.1. Personalizando vim con características internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
9.2.2. Personalizando vim con paquetes externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
9.3. Registro de datos y presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.3.1. El demonio de registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.3.2. Analizador de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.3.3. Personalizar la visualización de información en formato texto . . . . . . . . . . . . . . . . . . . . . . . 153
9.3.4. Personalización de la visualización de la fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
9.3.5. Intérprete de órdenes en color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
9.3.6. Órdenes coloreadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
9.3.7. Grabación de las actividades del editor con repeticiones complejas . . . . . . . . . . . . . . . . . . . . . 154
9.3.8. Capturar una imagen gráfica en un aplicación X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
9.3.9. Guardando cambios en los archivos de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
9.4. Monitoreando, controlando e iniciando lo que hacer los programas . . . . . . . . . . . . . . . . . . . . . . . . . 157
9.4.1. Temporización de un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
9.4.2. La prioridad de planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
9.4.3. La orden ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
9.4.4. La orden top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.4.5. Relación de los archivos abiertos por un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.4.6. Trazando la actividad de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.4.7. Identificación de procesos utilizando archivos o conexiones (sockets) . . . . . . . . . . . . . . . . . . . 158
9.4.8. Repetición de una orden a intervalos constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.4.9. Repetición de una orden sobre archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
9.4.10. Iniciar un programa desde el interfaz gráfico de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
9.4.11. Personalizando el inicio de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
9.4.12. Matando un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.4.13. Planificación una vez de las tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.4.14. Planificación regular de tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.4.15. Programación de tareas en un suceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9.4.16. Tecla Alt-SysRq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9.5. Trucos para el mantenimiento del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.5.1. ¿Quién está en el sistema? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

Guía de referencia de Debianxii

9.5.2. Avisos para todos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.5.3. Identificación del hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.5.4. Configuración del hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.5.5. Hora del sistema y del hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
9.5.6. La configuración de la terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9.5.7. La infraestructura de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9.5.8. Deshabilitar el salvapantallas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9.5.9. Deshabilitando los pitidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9.5.10. Utilización de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
9.5.11. Sistema de seguridad y de comprobación de la integridad . . . . . . . . . . . . . . . . . . . . . . . . . . 168
9.6. Trucos del almacenamiento de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.6.1. Uso de espacio de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.6.2. Configuración del particionado de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.6.3. Acceso al particionado utilizando UUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.6.4. LVM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.6.5. Configuración del sistema de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
9.6.6. Comprobación de la integridad y creación del sistema de archivos . . . . . . . . . . . . . . . . . . . . . 172
9.6.7. Optimización de los sistemas de archivos a través de las opciones de montaje . . . . . . . . . . . . . . . 172
9.6.8. Optimización del sistema de archivo a través del superbloque . . . . . . . . . . . . . . . . . . . . . . . 172
9.6.9. Optimización del disco duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.6.10. Optimización de un disco de estado sólido (SSD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.6.11. Utilice SMART para predecir fallos en su disco duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.6.12. Determine el directorio de almacenamiento temporal por medio de $TMPDIR . . . . . . . . . . . . . . . 174
9.6.13. Expansión del espacio de almacenamiento utilizable mediante LVM . . . . . . . . . . . . . . . . . . . . 174
9.6.14. Expansión del espacio de almacenamiento útil mediante el montaje de otra partición . . . . . . . . . . . 174
9.6.15. Expansión del espacio de almacenamiento por el enlace mediante el montaje en otro directorio . . . . . . 174
9.6.16. Expansión del espacio de almacenamiento utilizable por superposición-montaje de otro directorio . . . . 174
9.6.17. Expansión del espacio de almacenamiento útil utilizando un enlace simbólico . . . . . . . . . . . . . . . 175
9.7. La imagen de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
9.7.1. Creando un archivo de imagen de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
9.7.2. Escribiendo directamente en el disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.7.3. Montaje del archivo imagen del disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.7.4. Limpiando un archivo de imagen de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
9.7.5. Haciendo un archivo de imagen de disco vacío . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
9.7.6. Haciendo un archivo de imagen ISO9660 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
9.7.7. Escritura directa al CD/DVD-R/RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
9.7.8. Montando un archivo imagen ISO9660 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
9.8. Datos binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
9.8.1. Viendo y editando datos binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Guía de referencia de Debianxiii

9.8.2. Manipular archivos sin el montaje de discos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
9.8.3. Redundancia de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
9.8.4. Recuperación de datos de archivos y análisis forense . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
9.8.5. División de un archivo grande en archivos de tamaño menor . . . . . . . . . . . . . . . . . . . . . . . . 182
9.8.6. Limpieza del contenido de los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
9.8.7. Archivos «vacíos» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
9.8.8. Borrando completo de un disco duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.8.9. Borrar áreas de disco duro no utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.8.10. Recuperando archivos borrados pero todavía abiertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.8.11. Buscando todos los enlaces duros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.8.12. Consumo invisible de espacio de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.9. Trucos para cifrar información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.9.1. Cifrado de discos externos con dm-crypt/LUKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
9.9.2. Montaje de disco cifrado con dm-crypt/LUCKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
9.10. El núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
9.10.1. Parámetros del núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
9.10.2. Cabeceras del núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
9.10.3. Compilar el núcleo y los módulos asociados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
9.10.4. Compilando el código fuente del núcleo: recomendaciones del Equipo Debian del Núcleo . . . . . . . . 187
9.10.5. Controladores y firware del hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
9.11. Sistemas virtualizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
9.11.1. Herramientas de virtualización y emulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
9.11.2. Flujo de trabajo de la virtualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
9.11.3. Montando el archivo de imagen de disco virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
9.11.4. Sistemas chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
9.11.5. Varios sistemas de escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
10. Gestión de información

194

10.1. Compartición, copia y archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
10.1.1. Herramientas de repositorios y compresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.1.2. Herramientas de sincronización y copia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.1.3. Formas de archivado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.1.4. Formas de copia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
10.1.5. Formas de selección de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
10.1.6. Medios de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
10.1.7. Dispositivos de almacenamiento extraíbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
10.1.8. Selección del sistema de archivos para compartir datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.1.9. Compartir información a través de la red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
10.2. Respaldo y recuperación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

Guía de referencia de Debianxiv

10.2.1. Política de respaldo y recuperación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.2.2. Suites de utilidades de copias de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
10.2.3. Consejos para copias de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
10.2.3.1. Copia de seguridad de la GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
10.2.3.2. Montar la copia de seguridad activada por el acto . . . . . . . . . . . . . . . . . . . . . . . . 207
10.2.3.3. Copia de seguridad activada por acción del temporizador . . . . . . . . . . . . . . . . . . . . 207
10.3. Infraestructura de seguridad de la información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.3.1. Gestión de claves con GnuPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.3.2. Usando GnuPG en archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.3.3. Uso de Mutt con GnuPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.3.4. Utilizando Vim con GnuPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.3.5. El resumen MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.3.6. Llavero de contraseña . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.4. Herramientas para mezclar código fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.4.1. extrae las diferencias entre dos archivos fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.4.2. Mezcla actualizaciones del archivos de código fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.4.3. Integración interactiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.5. Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.5.1. Configuración del cliente Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.5.2. Comandos Git básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.5.3. Consejos para Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.5.4. Algunas referencias sobre Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.5.5. Otros sistemas de control de versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
11. Conversión de datos

218

11.1. Herramientas para la conversión de información en formato texto . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.1.1. Convirtiendo un archivo de texto con iconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.1.2. Comprobando que un archivo es UTF-8 con iconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
11.1.3. Convirtiendo los nombres de archivos con iconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
11.1.4. Conversión EOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
11.1.5. Conversión de tabuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
11.1.6. Editores con conversión automática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
11.1.7. Extracción de texto plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
11.1.8. Resaltando y dándole formato a información en texto plano . . . . . . . . . . . . . . . . . . . . . . . . 224
11.2. datos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
11.2.1. Conceptos básicos de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
11.2.2. Procesamiento XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
11.2.3. La extracción de información XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
11.2.4. Análisis de datos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Guía de referencia de Debianxv

11.3. Configuración tipográfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
11.3.1. composición tipográfica roff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
11.3.2. TeX/LaTeX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.3.3. Impresión de una página de manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.3.4. Crear una página de man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.4. Información imprimible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11.4.1. Ghostscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11.4.2. Mezcla de dos archivos PS o PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
11.4.3. Utilidades de impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
11.4.4. Imprimiendo con CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11.5. La conversión de los datos de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11.5.1. Fundamentos de información de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11.6. Herramientas para información gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
11.6.1. Herramientas gráficas de datos (meta paquete) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
11.6.2. Herramientas de datos gráficos (GUI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
11.6.3. Herramientas de datos gráficos (CLI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
11.7. Conversiones de información variadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
12. Programación236

12.1. Los archivos de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
12.1.1. Compatibilidad del intérprete de órdenes POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12.1.2. Parámetros del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12.1.3. Condiciones del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
12.1.4. Bucles del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
12.1.5. Variables del entorno de shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
12.1.6. La secuencia de procesamiento de la línea de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
12.1.7. Programas útiles para los archivos de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
12.2. Programación en lenguajes interpretados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
12.2.1. Depuración de los códigos del lenguaje interpretado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
12.2.2. Programa GUI con el script de shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12.2.3. Acciones personalizadas para el archivador GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
12.2.4. Locura de pequeños archivos de órdenes en Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
12.3. Codificación en lenguajes compilados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
12.3.1. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
12.3.2. Programa sencillo en C (gcc) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.3.3. Flex —una mejora de Lex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.3.4. Bison —una mejora de Yacc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.4. Herramientas de análisis estático de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
12.5. Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Guía de referencia de Debianxvi

12.5.1. Fundamentos de gdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
12.5.2. Depurando un paquete Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
12.5.3. Obteniendo trazas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
12.5.4. Órdenes avanzadas de gdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
12.5.5. Comprobar las dependencias de las bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
12.5.6. Herramientas de rastreo dinámico de llamadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.5.7. Errores de depuración X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.5.8. Herramientas de detección de fugas de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.5.9. Desemsamblado de binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.6. Herramientas de construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
12.6.1. Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
12.6.2. Autotools (Autoherramientas) (herramientas de automatización) . . . . . . . . . . . . . . . . . . . . . . 252
12.6.2.1. Compilando e instalando un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
12.6.2.2. Desistalando programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
12.6.3. Meson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
12.7. Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
12.8. La traducción de código fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
12.9. Haciendo un paquete Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
A. Apéndice256

A.1. La mazmorra de Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
A.2. Histórico de copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
A.3. Formato del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Guía de referencia de DebianxviiÍndice de cuadros1.1. Relación de paquetes con programas interesantes en modo texto . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.2. Relación de paquetes con documentación útil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.3. Relación de directorios clave y su uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.4. La interpretación del primer carácter de cada línea de la salida de «ls -l» se interpreta como se muestra . . . .

91.5. El modo numérico en chmod(1) es como se muestra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6. Ejemplos de valores de umask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.7. Relación de grupos importantes del sistema para el acceso a archivos . . . . . . . . . . . . . . . . . . . . . . . . 12
1.8. Relación de grupos importantes del sistema para la ejecución de órdenes específicas . . . . . . . . . . . . . . . . 12
1.9. Relación de tipos de marcas de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.10. Relación de archivos de dispositivos especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.11. Funciones de las teclas en MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.12. Accion de la tecla Intro en MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.13. Relación de intérpretes de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.14. Relación de combinaciones de teclado en bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.15. Lista de acciones de teclado relacionadas y operaciones con ratón en Debian. . . . . . . . . . . . . . . . . . . 22

1.16. Lista de comandos básicos de Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.17. Relación de órdenes Unix fundamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.18. Tres partes del valor de la configuración regional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.19. Relación de recomendaciones para la configuración regional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.20. Relación de valores de «$HOME» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.21. Patrones para la expansión de nombres de archivos del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . 30
1.22. Códigos de salida de una orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.23. Expresiones de una orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.24. Descriptores de archivos predefinidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.25. Metacaracteres para BRE y ERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.26. Sustitución mediante expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.27. Relación de fragmentos de órdenes con tuberías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.1. Relación de herramientas para la gestión de paquetes de Debian . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2. Relación de sitios de archivo de Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Guía de referencia de Debianxviii

2.3. Relación de áreas de archivo Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.4. Relación entre los nombres de publicación y distribución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.5. Relación de los principales sitios web para resolver problemas de un paquete concreto . . . . . . . . . . . . . . . 50

2.6. Operaciones básicas de gestión de paquetes utilizando la línea de órdenes apt(8), aptitude(8) y apt-get(8)/apt-cache(2.7. Opciones más importantes de la orden aptitude(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.8. Relación de combinaciones de teclado de aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.9. Relación de vistas en aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.10. La clasificación de la vista de paquetes estándar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.11. Relación de fórmulas de expresiones regulares de aptitute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.12. Los archivos de registro de acciones sobre paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.13. Relación de operaciones avanzadas con paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.14. El contenido de metadatos del repositorio Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.15. La estructura del nombre de los paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.16. Los caracteres permitidos en cada campo del nombre del paquete en Debian . . . . . . . . . . . . . . . . . . . . 68
2.17. Los archivos destacados creados por dpkg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.18. Relación de valores Pin-Priority importantes para la técnica apt-pinning. . . . . . . . . . . . . . . . . . . . . . 77
2.19. Relación de herramientas de proxy especificas para el repositorio Debian . . . . . . . . . . . . . . . . . . . . . 81
3.1. Relación de cargadores de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.2. El significado de la entrada del menú de la parte anterior de /boot/grub/grub.cfg . . . . . . . . . . . . . 85
3.3. Relación de sistemas de arranque en el sistema Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.4. Lista de niveles de error del núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.5. Lista de fragmentos de comando típicos de journalctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.6. Lista de típicos snippets de comandos systemctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.7. Lista de otros fragmentos de comandos de supervisión en systemd . . . . . . . . . . . . . . . . . . . . . . . . 91
4.1. los tres archivos importantes de configuración de pam_unix(8) . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.2. El contenido de la segunda entrada de «/etc/passwd» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.3. Relación de órdenes para la gestión de información de las cuentas . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.4. Relación de herramientas para generar contraseñas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.5. Relación de sistemas PAM y NSS relevantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.6. Relación de archivos de configuración utilizados por PAM y NSS . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.7. Relación de servicios y puertos seguros e inseguros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.8. Relación de herramientas que aportan medidas extra de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.1. Relación de herramientas de configuración de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.2. Relación de rangos de direcciones de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.3. Tabla de correspondencia entre las órdenes en desuso de net-tools y las nuevas órdenes de iproute2 . . . 111
5.4. Relación de órdenes de red de bajo nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.5. Relación de herramientas de optimización de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Guía de referencia de Debianxix

5.6. Guía básica para una MTU óptima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.7. Relación de herramientas de cortafuegos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.1. Relación de navegadores web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.2. Relación de agentes de usuario de correo (MUA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.3. Lista de paquetes básicos relacionados con el agente de transferencia de correo . . . . . . . . . . . . . . . . . . 119
6.4. Relación de páginas importantes del manual en postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
6.5. Relación de los archivos relacionados con la configuración de la dirección de correo . . . . . . . . . . . . . . . 121
6.6. Relación de operaciones MTA fundamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.7. Relación de servidores de acceso remoto y utilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.8. Relación de los archivos de configuración de SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.9. Relación de ejemplos de inicio del clientes ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.10. Relación de clientes SSH libres en otras plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.11. Relación de las utilidades y servidores de impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.12. Relación de los servidores de aplicaciones de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.13. Relación de clientes de aplicaciones de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.14. Relación de RFCs comúnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.1. Lista del entorno del escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.2. Lista de paquetes notables de la infraestructura GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3. Lista de aplicaciones GUI destacadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
7.4. Lista de notables fuentes TrueType y OpenType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
7.5. Lista de entornos de fuentes notables y paquetes relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.6. Lista de entornos sandbox notables y paquetes asociados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.7. Lista de servidores de acceso remoto notables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.8. Relación de los métodos de conexión al servidor X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.9. Lista de programas relacionados con la manipulación del portapapeles de caracteres . . . . . . . . . . . . . . . . 139
8.1. Lista de IBus y sus paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
9.1. Lista de programas de apoyo a las actividades de la consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
9.2. Relación de los atajos de teclado para screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
9.3. Información de la inicialización de vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.4. Relación de analizadores de registro del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
9.5. Mostrar los ejemplos de la hora y la fecha para el comando ”ls -l” con el time style value. . . . . . . . . . . 154
9.6. Relación de herramientas de manipulación de imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
9.7. Relación de paquetes que pueden guardar el histórico de configuración . . . . . . . . . . . . . . . . . . . . . . . 155
9.8. Relación de las herramientas de monitorización y control de las actividades de los programas . . . . . . . . . . . 156
9.9. Relación de buenos valores para la prioridad de planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
9.10. Lista de estilo de la orden ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

Guía de referencia de Debianxx

9.11. Relación de las señales más usadas con la orden kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
9.12. Lista de teclas notables del comando SAK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9.13. Relación de las herramientas para la identificación de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.14. Relación de herramientas de configuración hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
9.15. Relación de paquetes de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
9.16. Relación de las órdenes para deshabilitar el salvapantallas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
9.17. Relación de informes de tamaño de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
9.18. Relación de las herramientas de seguridad del sistema y comprobación de la integridad . . . . . . . . . . . . . . 169
9.19. Relación de paquetes para la gestión del particionado del disco . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.20. Relación de paquetes para la gestión del sistema de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
9.21. Relación de paquetes para la visualización y edición de datos binarios . . . . . . . . . . . . . . . . . . . . . . . 180
9.22. Relación de paquetes para manipular archivos sin montar el disco . . . . . . . . . . . . . . . . . . . . . . . . . 180
9.23. Relación de herramientas para añadir redundancia de datos a los archivos . . . . . . . . . . . . . . . . . . . . . 181
9.24. Relación de paquetes para la recuperación de archivos y análisis forense . . . . . . . . . . . . . . . . . . . . . . 181
9.25. Relación de utilidades para el cifrado de información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
9.26. Relación de los paquetes fundamentales para la recompilación del núcleo en los sistemas Debian . . . . . . . . . 187
9.27. Relación de herramientas de virtualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
10.1. Relación de las herramientas de repositorios y compresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
10.2. Relación de las herramientas de copia y sincronización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
10.3. Relación de posibles sistemas de archivos para dispositivos de almacenamiento extraíbles con sus casos de uso
normales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.4. Relación de los servicios de red disponibles con el escenario típico de utilización . . . . . . . . . . . . . . . . . 203
10.5. Relación de suites de utilidades de copias de respaldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
10.6. Relación de herramientas de infraestructura de seguridad de la información . . . . . . . . . . . . . . . . . . . . 208
10.7. Relación de las órdenes GNU Privacy Guard par la gestión de claves . . . . . . . . . . . . . . . . . . . . . . . . 209
10.8. Relación del significado del código de confianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.9. Relación de órdenes GNU Privacy Guard sobre archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.10.Relación de las herramientas para mezclar código fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
10.11.Relación de paquetes y órdenes relacionados con git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.12.Principales comandos de Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.13.Consejos para Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
10.14.Lista de otras herramientas del sistema del control de las versiones . . . . . . . . . . . . . . . . . . . . . . . . . 217
11.1. Relación de herramientas de conversión de información en formato texto . . . . . . . . . . . . . . . . . . . . . . 218
11.2. Relación de valores de codificación y su uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
11.3. Relación de estilos EOL para las diferentes plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
11.4. Relación de las órdenes de conversión de tabuladores de los paquetes bsdmainutils y coreutils . . . . . 221
11.5. Relación de las herramientas para extraer información en texto plano . . . . . . . . . . . . . . . . . . . . . . . . 222
11.6. Relación de herramientas para resaltar información en texto plano . . . . . . . . . . . . . . . . . . . . . . . . . 223

Guía de referencia de Debianxxi

11.7. Relación de entidades predefinidas para XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
11.8. Relación de herramientas XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
11.9. Relación de herramientas DSSSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
11.10.Relación de herramientas de extracción de información XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
11.11.Relación de las herramientas de impresión de calidad de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
11.12.Relación de las herramientas de composición tipográfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
11.13.Relación de paquetes que ayudan a crear páginas man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11.14.Relación de intérpretes Ghostscript de PostScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11.15.Relación de utilidades para la impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
11.16.Relación de paquetes que ayudan a la conversión de datos de correo . . . . . . . . . . . . . . . . . . . . . . . . 231
11.17.Lista de herramientas de datos gráficos (meta paquete) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
11.18.Lista de herramientas de datos gráficos (GUI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
11.19.Lista de herramientas de datos gráficos (CLI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
11.20.Relación de herramientas varias para la conversión de información . . . . . . . . . . . . . . . . . . . . . . . . . 235
12.1. Relación de particularidades de bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12.2. Relación de los parámetros de intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12.3. Relación de expansiones de parámetros del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . . . . . . 238
12.4. Relación de las sustituciones clave de parámetros del intérprete de órdenes . . . . . . . . . . . . . . . . . . . . . 238
12.5. Relación de operadores para comparar archivos en la expresión condicional . . . . . . . . . . . . . . . . . . . . 239
12.6. Relación de operadores de comparación de cadenas en expresiones condicionales . . . . . . . . . . . . . . . . . 239
12.7. Relación de paquetes que contienen pequeñas utilidades para los archivos de órdenes . . . . . . . . . . . . . . . 241
12.8. Lista de paquetes relacionados con el intérprete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12.9. Lista de programas de diálogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12.10.Lista de paquetes relacionados con el compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
12.11.Relación de analizadores sintácticos LALR compatibles con Yacc . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.12.Relación de las herramientras para el análisis de código estático . . . . . . . . . . . . . . . . . . . . . . . . . . 248
12.13.Lista de paquetes de la depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
12.14.Relación de órdenes avanzadas gdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.15.Relación de herramientas de detección de fugas de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.16.Lista de paquetes de herramientas de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
12.17.Relación de variables automáticas de make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
12.18.Relación de expansiones de variables de make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
12.19.Relación de herramientas de traducción de código fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Resumen
Este libro es libre. Puede redistribuirlo y/o modificarlo cumpliendo las condiciones de cualquier versión de la Licencia Pública
General GNU compatible con las Directrices de software libre de Debian (DFSG).

Guía de referencia de Debianxxiii

Prefacio
La Guía de referencia de Debian (version 2.124) (2024-06-30 04:06:30 UTC) pretende proporcionar una visión general amplia
de la administración del sistema Debian como una guía del usuario posterior a la instalación.
El lector al que va dirigido esta obra es aquel que desea aprender scripts de shell, pero que no esta preparado para entender elcódigo fuente C que le permita comprender el funcionamiento interno de un sistema GNULinux.
Para instrucciones de instalación, ver:Guía de Instalación de Debian GNU/Linux de la versión stable (estable),
Guía de Instalación de Debian GNU/Linux de la versión testing (pruebas)

Aviso
Esta guía se ofrece sin ninguna garantía. Todas las marcas son propiedad de sus respectivos dueños.
Debian es un sistema vivo. Por lo que es difícil mantener este documento totalmente actualizado y sin errores. Para escribir
este documento se usa la versión testing del sistema Debian. Cuando lo lea puede que parte de su contenido se encuentre
desactualizado.
Por favor, considere este documento como una fuente secundaria de información. No sustituye a ninguna guía acreditada. El
autor y los colaboradores no asumen ninguna responsabilidad por las consecuencias de errores, omisiones o ambigüedades deeste documento.

Qué es Debian
El Proyecto Debian es una asociación de individualidades que han hecho causa común para crear un sistema operativo libre. Su
distribución se caracteriza por lo siguiente.
Compromiso con la libertad del software: Contrato Social de Debian y Directrices de Software Libre de Debian (DFSG).
Publicación de trabajo voluntario no remunerado en Internet: https://www.debian.org
Gran cantidad de paquetes de software de alta calidad compilados
Enfocado en la estabilidad y la seguridad con fácil acceso a las actualizaciones de seguridad
Centrado en la actualización fluida a las versiones recientes de los paquetes de los archivos testing
Admite una amplia gama de arquitecturas de hardware
El Software Libre de Debian tiene su origen en GNU, Linux, BSD, X, ISC, Apache, Ghostscript, Sistema de Impresión Comúnde Unix (Common Unix Printing System) , Samba, GNOME, KDE, Mozilla, LibreOffice, Vim, TeX, LaTeX, DocBook, Perl,
Python, Tcl, Java, Ruby, PHP, Berkeley DB, MariaDB, PostgreSQL, SQLite, Exim, Postfix, Mutt, FreeBSD, OpenBSD, Plan 9y otros muchos proyectos libres e independientes. Debian integra esta diversidad de Software Libre en un único sistema.

Guía de referencia de Debianxxiv

Sobre este documento
Directrices
En la elaboración de este documento se han seguido las siguientes normas orientativas.
Proporciona un visión global y omite los casos menos frecuentes (Visión General)
simplicidad y brevedad (KISS)No se reinventa la rueda (se usan enlaces a fuentes ya existentes)
centrado en la consola y herramientas sin interfaz gráfico de usuario. ( Usaejemplos del intérprete de órdenes)
Sé objetivo. (Usa popcon etc.)
sugerencia
Trataré de mostrar las facetas jerárquicas y de bajo nivel del sistema.

Prerrequisitos

aviso
Más allá de este documento, has de ser capaz de conseguir las respuestas por ti mismo. Este documento
solo es un punto de partida.

Debes buscar la solución por ti mismo a partir de las fuentes primarias.
El sitio web de Debian https://www.debian.org para la información general,
Documentación en el directorio «/usr/share/docnombre_del_paquete»,
Las páginas de manual al estilo de Unix: «dpkg -Lnombre_del_paquete|grep ’/man/man.*/’»,
Las páginas de información (info page) al estilo GNU: «dpkg -L nombre_de_paquete |grep ’/info/’»,El informe de errores: https://bugs.debian.org/nombre_del_paquete,
La wiki de Debian https://wiki.debian.org/ para profundizar y aprender sobre temas concretos,
La especificación UNIX única de The UNIX System Home Page del Open GroupLa enciclopedia libre Wikipedia en https://www.wikipedia.org/
El manual del administrador de Debian,Los COMOs de El Proyecto de Documentación de Linux (TLDP)
nota
Para obtener documentación detallada de un paquete, necesitará instalar el paquete correspondiente, cuyo nombre
es el nombre del paquete con el sufijo «-doc».

Guía de referencia de Debianxxv

Convenciones
Este documento proporciona información con un estilo de presentación simple con ejemplos del intérprete de órdenesbash(1).
# command-in-root-account$ command-in-user-accountEstos cursores del intérprete de órdenes diferencian el tipo de cuenta que tiene asociada un conjunto de variables de entorno
como: «PS1=’\$’» y «PS2=’ ’». Se han seleccionado estos valores para mejorar la claridad del documento y no tienen por
qué ajustarse a los de un sistema real en funcionamiento.
Todos los ejemplos de comandos se ejecutan en la configuración regional en inglés ”LANG=en_US.UTF8”. No espere cadenas demarcador de posición como command-in-root-account y command-in-user-account para traducirse en ejemplos
de comandos. Esta es una elección intencionada para mantener actualizados todos los ejemplos traducidos.
nota
Consulte el significado de las variables de entorno «$PS1» y «$PS2» en bash(1).

Cuando sea necesario ejecutar una acción requerida por parte del administrador del sistema se utilizará una oración imperativa,
p. ej. «Pulse la tecla Intro después de escribir cada orden en el intérprete de órdenes.»
La descripción de una columna y similares en una tabla puede contener un sintagma nominal seguido de las reglas de la descripción corta de los paquetes que eliminan los artículos como «un» y «la». También pueden contener una oración en infinitivo como
un sintagma nominal seguido de la descripción corta de la orden según la reglas de las páginas de manual. Esto puede parecer
que no tiene sentido, pero son reglas elegidas para mantener el estilo tan simple como es posible. Los sintagmas nominales nose inician en mayúsculas y no finalizan con un punto según las reglas de descripciones cortas.
nota
Los nombres propios, incluidas las órdenes, mantienen las mayúsculas y las minúsculas independientemente desu lugar.

La cita de un fragmento de una orden en un párrafo aparecerá con otro tipo de letra entre comillas dobles como «aptitudesafe-upgrade».
El contenido de un archivo de configuración en formato texto citado en un párrafo aparecerá con otro tipo de letra entre comillas
dobles, como «deb-src».
Una orden se cita por su nombre en otro tipo de letra, seguida opcionalmente por el número de la sección de las páginas manual ala que pertenece entre paréntesis, como bash(1). Se recomienda escribir lo siguiente para obtener más información sobre dicha
orden.
$ man 1 bash

Una página de manual se cita por su nombre en otro tipo de letra seguido del número de la sección de la página de manual ala que pertenece entre paréntesis, como sources.list(5). Se recomienda escribir lo siguiente para obtener más información
sobre dicha página de manual.
$ man 5 sources.list

Una página de información se cita con su orden en otro tipo de letra entre comillas dobles como, «info make». Es recomendable ejecutar lo siguiente para obtener más información sobre dicha página de información.
$ info makeUn nombre de archivo es referido por la fuente de la máquina de escribir entre comillas dobles, como ”/etc/passwd”. Para
los archivos de configuración, se recomienda obtener información escribiendo lo siguiente.
$ sensible-pager ”/etc/passwd”

Guía de referencia de Debianxxvi

Un nombre de directorio es referido por la fuente de máquina de escribir entre comillas dobles, como ”/etc/apt/”. Animamosa explorar su contenido escribiendo lo siguiente.
$ mc ”/etc/apt/”

El nombre de un paquete se cita por su nombre con un tipo de letra diferente, como vim. Animo a obtener más información
sobre el paquete escribiendo lo siguiente.
$ dpkg -L vim$ apt-cache show vim$ aptitude show vim

Una documentación puede indicar su ubicación mediante el nombre de archivo en la fuente de máquina de escribir entre comillas
dobles, como ”/usr/share/doc/base-passwd/usuarios-y-grupos. txt.gz” y ”/usr/share/doc/base-passwd
o por su URL, como https://www.debian.org. Le animamos a leer la documentación escribiendo lo siguiente.
$ zcat ”/usr/share/doc/base-passwd/users-and-groups.txt.gz” | sensible-pager$ sensible-browser ”/usr/share/doc/base-passwd/users-and-groups.html”$ sensible-browser ”https://www.debian.org”

Una variable de entorno se cita con su nombre en otro tipo de letra precedido de «$» y entre comillas dobles como «$TERM».
Descubra el valor de dicha variable escribiendo lo que se muestra.
$ echo ”$TERM”

Estadísticas de uso (popcon)
Los datos de popcon se presentan como la medida objetiva de la popularidad de cada paquete. Se descargó el 2024-03-03 11:51:37
UTC y contiene el envío total de 237734 informes sobre 198687 paquetes binarios y arquitecturas 27 arquitecturas.
nota
Tener en cuenta que el archivo amd64 inestable contiene solo 74165 paquetes actuales. Los datos de popcon
contienen informes de muchas instalaciones de sistemas antiguos.

En las estadisticas de uso, un número precedido de «V» es el número de «votos» que se calcula mediante la fórmula «1000 *(número de paquetes utilizados recientemente en el equipo)/(total de informes de uso remitidos)».
En las estadística de uso, un número precedido de «I» se refiere al «número de instalaciones» calculado por «1000 * (número deinstalaciones del paquete)/(el total de informes de uso)».
nota
Las estadísticas de uso no determina la importancia de los paquetes. Existen muchos factores que puede afectar a las estadísticas. Por ejemplo, algunos sistemas que participan en estas, pueden tener directorios como«/usr/bin/» con la opción «noatime» para mejorar el desempeño del sistema desactivando su sistema de«voto».

El tamaño del paquete
El tamaño que tenga un paquete es una medida objetiva. Se obtiene del valor de «Tamaño sin comprimir:» que devuelve
la orden apt-cache show» o «aptitude show» (en la arquitectura amd64 de la distribución «inestable»). El tamaño
informado es en KiB (Kibibyte = equivalente a 1024 bytes).

Guía de referencia de Debian

xxvii

nota
Un paquete con un tamaño pequeño puede indicar que en la distribución «inestable» es un paquete «ficticio»
que instala otro con contenido real según sus dependencias. Un paquete «ficticio» permite transiciones fluidas ola división de un paquete en varios.

nota
Cuando al tamaño del paquete le sigue «(*)» significa que no está disponible en la distribución «inestable» yque el valor que aparece es el tamaño en la distribución «experimental».

Cómo informar de errores en este documento
Puede informar de un error en el paquete debian-reference utilizando reportbug(1). Por favor, incluya la corrección
ejecutando «diff -u» con el texto plano o la fuente.

Consejos para usuarios noveles
Aquí hay algunos consejos para usuarios noveles:
haga copias de seguridad de sus datos• Consulte Sección 10.2.
proteja su contraseña y claves de seguridad
KISS (’keep it simple stupid’, mantenlo simple estúpido)• no complique su sistema
lea sus archivos de registro• el PRIMER error es el que cuenta
RTFM (’read the fine manual’, lea el manual)busque en Internet antes de preguntar
no use la cuenta del superusuario cuando no es necesario
no modifique el sistema de gestión de paquetes
no escriba nada que no entienda
no cambie los permisos de los archivos (si no conoce su impacto en la seguridad)
no cierre su terminal de superusuario hasta que PRUEBE sus cambios
tener a mano un medio alternativo de arranque (dispositivo de memoria USB, CD…)

Algunos comentarios para usuarios noveles
He aquí algunas citas interesantes de la lista de correo de Debian que pueden servir de ayuda a los nuevos usuarios.
«Así es Unix. Te da bastante cuerda para que te ahorques tu mismo.» --- Miquel van Smoorenburg <miquels at cistron.nl>«Unix ES muy amigable ... únicamente que es muy puntilloso eligiendo a sus amigos.» --- Tollef Fog Heen <tollef at
add.no>El artículo de Wikipedia «la filosofía de Unix» contiene citas muy interesantes.

Guía de referencia de Debian

1 / 257

Capítulo 1

Tutoriales de GNU/Linux
Aprender a usar un sistema informático es como aprender un idioma nuevo. Aunque los libros de ayuda y la documentación sonútiles, uno debe practicarlo. Para ayudarle a comenzar sin tropiezos, he escrito algunos puntos básicos.
La calidad del diseño de Debian GNU/Linux tiene su origen en el sistema operativo Unix, un sistema operativo multiusuario ymultitarea. Debe aprender a aprovechar el poder de estas características y las similitudes entre Unix y GNU/Linux.
No utilice únicamente documentos de GNU/Linux y utilice también documentos de Unix , ya que esto le permitirá acceder amucha información útil.
nota
Si tiene experiencia con las herramientas de la línea de órdenes de algún sistema tipo Unix probablemente ya
conozca lo que se explica en este documento. Utilice este documento para refrescar sus conocimientos.

1.1. Introducción a la consola
1.1.1. El cursor del intérprete de órdenes
Al iniciar el sistema, aparecerá la pantalla de inicio de sesión basada en caracteres si no instaló ningún entorno GUI de sistema deescritorio como GNOME o KDE. Supongamos que su nombre de host es foo, el indicador de inicio de sesión tiene el siguiente
aspecto.
A pesar de tener instalado un entorno gráfico de usuario, puede acceder al indicador de inicio de sesión basado en caracteres
mediante Ctrl-Alt-F3, y puede regresar al entorno GUI mediante Ctrl-Alt-F2 (consulte Sección 1.1.6 para más información).
foo login:

En el diálogo de entrada escriba su nombre de usuario, p. ej. pingüino y pulse la tecla Intro, a continuación escriba su contraseña
y pulse Intro otra vez.
nota
De acuerdo a la tradición Unix, el nombre de usuario y la contraseña en un sistema Debian son sensibles a mayúsculas. El nombre de usuario normalmente se elige de tal modo que esté compuesto únicamente por minúsculas. La
primera cuenta de usuario normalmente se crea durante la instalación. El superusuario (root) puede crear cuentas
de usuario adicionales con la orden adduser(8).

El sistema empieza mostrando el mensaje de bienvenida almacenado en «/etc/motd» (Mensaje del día) y muestra un cursor
para realizar la petición de órdenes.

Guía de referencia de Debian2 / 257

Debian GNU/Linux 12 foo tty3
foo login: penguin
Password:
Linux foo 6.5.0-0.deb12.4-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.10-1~bpo12+1 (2023-11-23) ←x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Dec 20 09:39:00 JST 2023 on tty3
foo:~$

Ahora nos encontramos en el intérprete de órdenes (shell). El intérprete de órdenes interpreta las órdenes del usuario.

1.1.2. El indicador del intérprete de órdenes en GUI
Si ha instalado un entorno GUI durante la instalación, se mostrará una pantalla gráfica de inicio de sesión al iniciar el sistema.
Escribe el nombre de usuario y la contraseña para iniciar sesión en la cuenta de usuario sin privilegios. Use la pestaña para navegar
entre el nombre de usuario y la contraseña, o use el clic principal del ratón.
Puede obtener un cursor del intérprete de órdenes en un entorno gráfico abriendo un programa x-terminal-emulator como
gnome-terminal(1), rxvt(1) o xterm(1). Si usa el entorno de escritorio Gnome para abrir un intérprete de órdenes debe
hacer clic en «Aplicaciones« → «Accesorios« → «Terminal«.
En algunos entornos de escritorio (como fluxbox), no existe un punto de acceso al menú tal cual. Si se encuentra en este caso,
simplemente pruebe a hacer clic con el (botón derecho del ratón) sobre el fondo de escritorio y surgirá un menú.

1.1.3. La cuenta de superusuario (root)
La cuenta root también se denomina superusuario o usuario privilegiado. Desde esta cuenta, puede realizar las siguientes tareasde administración del sistema.
leer, escribir y borrar cualquier archivo del sistema independientemente de los permisos de dicho archivo
Cambiar la propiedad y los permisos de cualquier archivo del sistema
Cambiar la contraseña de cualquier usuario no privilegiado del sistema
entrar en la cuenta de cualquier usuario sin usar su contraseña.
El poder ilimitado de la cuenta de superusuario necesita de un uso basado en la consideración y la responsabilidad.

aviso
Nunca comparta la contraseña del superusuario con nadie.

Guía de referencia de Debian3 / 257

nota
Los permisos de acceso a un archivo (incluidos los dispositivos como un CD-ROM u otros, que son simplemente
otro archivo para el sistema Debian) pueden hacer que sea inaccesible a los usuarios distintos del superusuario.
Aunque el uso de la cuenta de superusuario es una manera rápida de comprobar este tipo de situaciónes, resolverlas es algo que debe hacerse estableciendo adecuadamente los permisos del archivo y la relación de usuariosque pertenece a cada grupo (véase Sección 1.2.3).

1.1.4. El cursor del intérprete de órdenes de superusuario
A continuación podrá ver algunos métodos para acceder al intérprete de órdenes del superusuario utilizando la contraseña delmismo.
Escriba root en la pantalla de inicio de sesión en modo texto.
Escriba «su -l» desde cualquier intérprete de órdenes.
• Esto no conserva el entorno del usuario actual.
Escriba «su» en cualquier intérprete de órdenes.
• esto conserva parte del entorno del usuario actual.

1.1.5. Herramientas gráficas para la administración del sistema
Si el menú de su escritorio no inicia las herramientas gráficas de administración del sistema con los permisos adecuados automáticamente, puede iniciarlas desde el intérprete de órdenes del superusuario en un emulador de terminal de X como gnome-terminal(1),rxvt(1), o xterm(1). Ver Sección 1.1.4 y Sección 7.9.
aviso
Nunca inicies un administrador de pantalla/sesión de GUI como root escribiendo root en el indicador deun administrador de pantalla (por ejemplo, gdm3(1)).
Nunca ejecute programas gráficos remotos no confiables en el sistema de ventanas X cuando se esté
mostrando información crítica, porque dichos programas pueden realizar una intercepción pasiva de toda
su pantalla de X.

1.1.6. Consolas virtuales
En el sistema Debian que se instala por defecto hay seis consolas tipo VT100 intercambiables, disponibles para iniciar un intérprete de órdenes directamente en el equipo Linux. A menos que se encuentre en un entorno gráfico, podrá cambiar entre ellaspresionando simultáneamente la tecla Alt situado en la izquierda y una de las teclas F1 —F6. Cada consola enmodo texto permite acceder independientemente a la cuenta y acceder a un entorno multiusuario. Este entorno multiusuario es
una gran característica de Unix y es muy adictivo.
Si estás en un entorno GUI, puedes ir a la consola de caracteres 3 con la tecla Ctrl-Alt-F3, es decir, presione Left Ctrl
y Left Alt al mismo tiempo tecla y tecla F3. Puede presionar Alt-F2 para volver al entorno de GUI, que generalmente se ejecuta en la consola virtual 2.
También puede cambiar a otra consola virtual, p. ej. a la consola 3, desde el intérprete de órdenes.
# chvt 3

Guía de referencia de Debian4 / 257

1.1.7. Cómo cerrar el intérprete de órdenes
Pulsando Ctrl-D, es decir, la tecla Ctrl de la izquierda y la tecla d simultáneamente en el intérprete de órdenes, secerrará. Si se encuentra en una consola de modo texto, volverá a ver la pantalla de inicio de sesión. Aunque es normal referirse
a estos caracteres de control como «control D» en mayúscula, no es necesario pulsar la tecla de mayúsculas. La abreviatura ^Dtambién es muy utilizada para Ctrl-D. Otra forma de cerrar el intérprete de órdenes es escribiendo «exit».
Si se encuentra en un x-terminal-emulator(1) también puede cerrarlo de esta manera.

1.1.8. Cómo apagar el sistema
Al igual que cualquier otro sistema operativo moderno en el que la operación con ficheros implica almacenamiento de datos enmemoria para mejorar el rendimiento, el sistema Debian necesita el procedimiento de apagado adecuado antes de poder apagarsede forma segura. Esto es para mantener la integridad de los ficheros, forzando que todos los cambios en memoria se escriban en el
disco. Si el software de control de energía está disponible, el procedimiento de apagado apaga automáticamente el sistema. (De lo
contrario, es posible que tenga que pulsar el botón de encendido durante unos segundos después del procedimiento de apagado).
Puedes apagar el sistema en modo multiusuario normal desde la línea de comandos.
# shutdown -h now

Puede apagar el sistema en el modo monousuario desde el intérprete de órdenes como se muestra.
# poweroff -i -f

Vea Sección 6.3.8.

1.1.9. Cómo recuperar la configuración normal de una consola
Cuando la pantalla se vuelve loca tras hacer alguna cosa divertida como «cat un-archivo-binario», escriba «reset» en
el intérprete de órdenes. Puede que no sea posible ver la orden en la pantalla mientras la teclea. Además, puede escribir «clear»para limpiar la pantalla.

1.1.10.

Paquetes complementarios recomendados para usarios sin experiencia

Una instalación mínima del sistema Debian sin ningún entorno de escritorio proporciona la funcionalidad básica de Unix, sinembargo es una buena idea instalar algunos paquetes de terminal de caracteres adicionales basados en curses o en modo texto
como mc y vim mediante la orden apt-get(8) para que los nuevos usuarios empiecen a tener experiencia con lo siguiente.
# apt-get update...
# apt-get install mc vim sudo aptitude...

Si los paquetes antes mencionados están instalados con anterioridad, no se instalará ningún paquete nuevo.
Puede ser una buena idea que usted leyera algo de documentación útil.
Puedes instalar algunos de estos paquetes de la siguiente manera.
# apt-get install package_name5 / 257

Guía de referencia de Debianpaquetemc

popularidad
V:50, I:209

sudo

V:688, I:841

vim

V:95, I:369

vim-tiny

V:58, I:975

emacs-nox
w3m
gpm

V:4, I:16
V:15, I:187
V:10, I:12

tamaño descripción
1542
Un gestor de archivos en modo texto a pantalla completa
Un programa para proporcionar algunos privilegios de superusuario a
6550
los usuarios de acuerdo a la configuración establecida
Editor de texto Unix Vi IMproved (Vi Mejorado), un editor de texto
3743
para programadores (versión estándar)
Editor de texto Unix Vi IMproved (Vi Mejorado), un editor de texto
1722
para programadores (versión compacta)
39647 El proyecto GNU Emacs, un editor de texto ampliable basado en Lisp
2837
Navegadores web en modo texto
521
Copiar y pegar, al estilo Unix, en la consola de texto (demonio)

Cuadro 1.1: Relación de paquetes con programas interesantes en modo texto
paquetepopularidad

doc-debian

I:867

debian-policy
I:14
developers-reference
V:0, I:5
debmake-doc
debian-history
debian-faq

I:0
I:0
I:865

tamaño descripción
Documentación del Proyecto Debian, Preguntas Frecuentes (FAQ) y187
otros documentos
4659
Manual de la Directrices Debian y documentos asociados
2601

Directrices e información para desarrolladores de Debian

11701
4692
790

Guía para Mantenedores de DebianHistoria del Proyecto DebianPreguntas frecuentes (FAQ) sobre DebianCuadro 1.2: Relación de paquetes con documentación útil1.1.11. Una cuenta de usuario adicional
Si no quiere utilizar su cuenta de usuario aprende y práctica, puede crear una cuenta de usuario, p. ej. pescado, para ello realicelo que se muetra.
# adduser fish

Conteste a todas las preguntas.
Con ello se creará una nueva cuenta llamada pescado. Cuando termine de practicar, puede borrar esta cuenta y su directorio deusuario como se muestra.
# deluser --remove-home fish

En sistemas Debian especializados y no Debian, las actividades anteriores deben utilizar niveles inferiores. agregar usuario(8) y usuariodel (8) utilidades, en su lugar.

1.1.12.

Configuración de sudoPara una estación de trabajo típica de un único usuario o un escritorio Debian en un portátil, es normal realizar una configuración sencilla de sudo(8) como se indica a continuación para permitir al usuario no privilegiado, p. ej. pinguino, obtener losprivilegios administrativos simplemente con su contraseña de usuario sin utilizar la contraseña del superusuario.
# echo ”penguin

ALL=(ALL) ALL” >> /etc/sudoers

También es usual hacerlo de la siguiente manera para permitir al usuario no privilegiado, p. ej. pinguino, ganar los privilegios
administrativos sin usar ninguna contraseña como se muestra.
# echo ”penguin

ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers

Guía de referencia de Debian

6 / 257

Este truco solamente se debe usar en una estación de trabajo con un único usuario en la que usted sea el administrador y usuarioúnico.

aviso
No establezca de esta manera privilegios para cuentas de usuarios no privilegiados en una estación detrabajo multiusuario porque es perjudicial para la seguridad del sistema.

atención
La contraseña de la cuenta pinguino, en los ejemplos de arriba, requiere tanta protección como la contraseña del superusuario.
Los privilegios administrativos pertenecen a alguien autorizado a realizar tareas de administración del sistema en la estación de trabajo. Nunca le de a un administrador del departamento de Sistemas de su compañía
ni a su jefe tales privilegios a menos que estén autorizados y sean capaces.

nota
Para proporcionar privilegios de acceso a determinados dispositivos y determinados archivos debería considerar
usar grupos para proporcionar acceso limitado en lugar de utilizar los privilegios de superusuario vía sudo(8).
Con una configuración mejor pensada y cuidadosa, sudo(8) puede proporcionar privilegios administrativos limitados a otros usuarios en un sistema compartido sin compartir la contraseña de superusuario. Esto puede ayudar enel mantenimiento de un equipo con múltiples administradores de manera que usted pueda saber quién hizo qué.
Por otra parte, puede preferir que nadie más tenga tales privilegios.

1.1.13.

Hora de jugar

Ahora está listo para jugar con el sistema Debian sin riesgos siempre que utilice la cuenta de usuario sin privilegios.
Esto se debe a que el sistema Debian está, incluso en una instalación por defecto, configurado con los permisos de archivos
adecuados que impide que los usuarios no privilegiados dañen el sistema. Por supuesto, puede haber aún algunos agujeros que
podrían ser explotados, pero aquellos a quienes interesen esos detalles, que no trataremos aquí, pueden obtener la información
precisa en Manual de seguridad de Debian.
Aprendemos el sistema Debian como un sistema Unix-like con lo siguiente.
Sección 1.2 (conceptos básicos),
Sección 1.3 (método de supervivencia),
Sección 1.4 (método básico),
Sección 1.5 (mecanismos del intérprete de órdenes (shell)),
Sección 1.6 (método de procesado de texto).

1.2. Sistema de archivos tipo Unix
En GNU/Linux y otros sistemas operativos tipo Unix, los archivos se organizan en directorios. Todos los archivos y directorios
están ordenados en un gran árbol que tiene como raíz «/». Se le llama árbol porque si se dibuja el sistema de archivos, parece unárbol pero cabeza abajo.
Estos archivos y directorios pueden distribuirse entre varios dispositivos. mount(8) se utiliza para añadir el sistema de archivos
que se encuentra en un dispositivo al gran árbol de archivos. Inversamente, umount(8) lo desconecta del gran árbol de archivos.
En los núcleos más recientes de Linux, mount(8), con determinadas opciones, puede unir parte de un sistema de ficheros en otro

Guía de referencia de Debian7 / 257

sitio del árbol o puede montar un sistema de archivos como compartido, privado, esclavo o no enlazable. Las opciones soportadas
para cada sistema de ficheros están disponibles en «/usr/share/doc/linux-doc-*/Documentation/filesystems/».
Los directorios de los sistemas Unix son llamados carpetas en otros sistemas. Por favor, note que no existe el concepto de unidad
como «A:» en ningún sistema Unix. Solamente hay un sistema de archivos y todo se encuentra en él. Esto es una gran ventaja encomparación con Windows.

1.2.1. Información básica sobre archivos en Unix
Estos son algunos conceptos básicos de los archivos Unix.
Los nombres de archivos son sensibles a mayúsculas. Es decir, «MIARCHIVO» y «MiArchivo» son archivos diferentes.
El directorio raíz significa la raíz del sistema de archivos representado simplemente por «/». No lo confunda con el directoriodel superusuario: «/root».
Cada directorio tiene un nombre que puede contener cualquier letra o símbolo excepto «/». El directorio raíz es una excepción:
su nombre es «/» (pronunciado «barra« o «el directorio raíz«) y no puede ser renombrado.
Cada archivo o directorio es identificado con un nombre completamente cualificado, nombre absoluto, o ruta), dando lasecuencia de directorios que deben atravesarse para alcanzarlo. Los tres términos son sinónimos.
Todos los nombres completamente cualificados comienzan con el directorio «/», y se coloca una «/» entre cada dos nombresde directorio o archivo en el nombre de fichero completo. La primera «/» es el directorio de más alto nivel (la raíz) y las
demás «/» separan subdirectorios sucesivos hasta que alcanzamos la última entrada, que es el nombre real del archivo encuestión. Las palabras pueden ser confusas. Elijamos el siguiente nombre completamente cualificado como un ejemplo:«/usr/share/keytables/es.map.gz». Es de uso generalizado el referirse a la última entrada «es.map.gz» como
un nombre de archivo.
El directorio raíz tiene un cierto número de ramificaciones, como «/etc/» y «/usr/». Estos subdirectorios a su vez se
ramifican en más subdirectorios, como «/etc/systemd/» y «/usr/local/». El todo, visto colectivamente, es llamadoel árbol de directorios. Puede pensar que un nombre de archivo absoluto es una ruta desde la raíz del árbol («/») hasta lahoja de una rama (un archivo). También oirá hablar del árbol de directorios como de un árbol genealógico que descienden deun elemento único llamado raíz («/»: así, los subdirectorios tienen padres y una ruta muestra la genealogía completa de unarchivo. Hay, además, rutas relativas que comienzan de alguna otra manera que con el directorio raíz. Debe recordar que el
directorio «../» hace referencia al directorio padre. Esta terminología se utiliza también para otras estructuras semejantes alos directorios, como las estructuras jerárquicas de datos.
No existen directorios, que forman parte de las rutas que describen archivos, que se correspondan con dispositivos físicos,
como discos duros. Esto cambia respecto a RT-11, CP/M, OpenVMS, MS-DOS, AmigaOS y Microsoft Windows, donde laruta contiene el nombre del dispositivo, como «C:\». Sin embargo, existen directorios que referencian dispositivos físicoscomo parte del sistema de archivos. Lea Sección 1.2.2).
nota
Es posible usar casi cualquier letra o símbolo en el nombre de un archivo, pero es una mala idea. Es preferible
evitar el uso de cualquier carácter que tenga un significado especial en la línea de órdenes, incluido espacios, tabulaciones, saltos de línea y otros caracteres especiales: { } ( ) [ ] ’ ̀ ” \ / > < | ; ! # & ^ * %@ $. Si quiere separar palabras en un nombre, son buenas elecciones el punto, el guión y el guión bajo. Ademáspuede empezar cada palabra con mayúscula, «ComoEsto». Los usuarios con experiencia suelen evitar los espacios en los nombres de archivo.

nota
La palabra «root» puede referirse a «superusuario» o «directorio raíz». El contexto determinará su significado
correcto.

8 / 257

Guía de referencia de Debiannota
El término ruta se utiliza tanto para los nombres de archivos que especifican la ruta completa, como hemos
hecho con anterioridad, como en la ruta para la búsqueda de órdenes. El significado correcto vendrá determinado
por el contexto.

Las mejores prácticas detalladas para la jerarquía de ficheros se describen en el Filesystem Hierarchy Standard (”/usr/share/doc/dey hier(7)). Debes recordar los siguientes hechos como el arranque.
directorio//etc//var/log//home/

uso del directorio
directorio raízarchivos principales para la configuración del sistema
archivos de registro del sistema
todos los directorios personales de usuario sin privilegios
Cuadro 1.3: Relación de directorios clave y su uso

1.2.2. Sistemas de archivos internos
Siguiendo la tradición de Unix, el sistema Debian GNU/Linux ofrece el sistemas de archivos «/dev/» que representa de manera
unificada el almacenamiento físico en discos duros u otros dispositivos de almacenamiento y la interacción con los dispositivos
hardware como las consolas en modo texto o las consolas en serie remotas.
Cada archivo, directorio, tubería con nombre (sirve para compartir datos entre dos programas) o dispositivo físico tiene en elsistema Debian GNU/Linux una estructura con metainformación llamada inodo que describe sus propiedades como quién es su
dueño (owner), el grupo al que pertenece, la fecha de último acceso, etc. La idea de incluir todo en el sistema de archivos fue una
innovación de Unix y las versiones modernas de los núcleos de Linux la han llevado más allá. Hoy en día puede encontrar en elsistema de archivos incluso información de procesos en ejecución.
La representación unificada y abstracta tanto de entidades físicas como de procesos internos es sumamente útil ya que permite el
uso de la misma orden para el mismo tipo de operación en dispositivos totalmente diferentes. Incluso es posible cambiar la forma
de trabajar del núcleo escribiendo datos en archivos especiales que están enlazándolos a procesos en ejecución.
sugerencia
Si necesita determinar la correspondencia entre un árbol de archivos y un elemento físico, ejecute mount(8) sin
parámetros.

1.2.3. Permisos del sistema de archivos
Permisos del sistema de archivos del sistema Unix-like se definen para tres categorías de usuarios afectados.
El usuario que es dueño del archivo (u)Los usuarios que pertenecen al mismo grupo al que pertenece el archivo (h)el resto de usuarios (o) también denominado «universo» o «todos».
Para el fichero, cada permiso correspondiente permite las siguientes acciones.
El permiso de lectura (r) permite al dueño examinar el contenido del archivo.
El permiso de escritura (w) permite al dueño modificar el archivo.
el permiso de ejecución (x) permite al dueño ejecutar el archivo como una orden.

9 / 257

Guía de referencia de DebianPara el directorio, cada permiso correspondiente permite las siguientes acciones.
El permiso de lectura (r) permite al propietario listar el contenido del directorio.
El permiso de escritura (w) permite al propietario añadir o eliminar archivos en el directorio.
el permiso de ejecución (x) permite al dueño acceder a los archivos del directorio.
El permiso de ejecución de un directorio no solo indican que se puede leer los archivos que contiene, sí no también permite versus atributos, como el tamaño y la fecha de modificación.
ls(1) se utiliza para mostrar información de permisos (y más) para archivos y directorios. Cuando se invoca con la opción ”-l”,
muestra la siguiente información en el orden indicado.
tipo de fichero (primer carácter),permisos del archivo (nueve caracteres, tres para el usuario, tres para el grupo y los tres últimos para el resto, en este orden),número de enlaces duros al archivo,
nombre del usuario que es dueño del archivo,
nombre del grupo al que pertenece,
tamaño del archivo expresado en caracteres (bytes),fecha y hora del archivo (mtime),
nombre del archivo.
carácter
d
l
c
b
p
s

significado
archivo normal
directorio
enlace simbólico
nodo de dispositivo orientado a caracteresnodo de dispositivo orientado a bloques
tubería con nombre
socketCuadro 1.4: La interpretación del primer carácter de cada línea de la salida de «ls -l» se interpreta como se muestra
Para cambiar el dueño de un archivo, el superusuario utiliza la orden chown(1). Para alterar el grupo de un archivo, su dueño
utiliza la orden chgrp(1). Para modificar los permisos del acceso al archivo o directorio, su dueño o el superusuario utilizan laorden chmod(1). La sintaxis para operar sobre un archivo foo es la que se muestra.
# chown newowner foo# chgrp newgroup foo# chmod [ugoa][+-=][rwxXst][,...] foo

Por ejemplo, se puede asignar a un árbol de directorios como dueño al usuario foo y como grupo bar como se muestra.
# cd /some/location/# chown -R foo:bar .
# chmod -R ug+rwX,o=rX .

Existen tres bits adicionales de permisos especiales.
El bit set user ID (s o S en lugar del permiso del dueño x)
El bit set group ID (s o S en lugar del permiso del grupo x)

10 / 257

Guía de referencia de Debian

El bit sticky (t o T en vez del permiso de todos x)
Estos bits aparecerán en mayúsculas en la salida de la orden «ls -l» si los permisos de ejecución correspondientes están sin
asignar.
La configuración de set user ID en un archivo ejecutable permite a un usuario ejecutarlo con todos los privilegios de su dueño (alejecutarlo con el identificador del dueño, por ejemplo root). Igualmente la configuración set group ID en un archivo ejecutable
permite al usuario ejecutarlo con todos los privilegios de su grupo (al ejecutarlo con el identificador del grupo, por ejemplo root).
Esto crea riesgos de seguridad, por lo que su configuración debe ser extremadamente cuidadosa.
La configuración del bit set group ID en un directorio permite la creación de archivosal estilo BSD, donde todos los archivos
creados en el directorio pertenecen al mismo grupo que el directorio.
Activar el sticky bit en un directorio impide que sus archivos sean eliminados por alguien que no es su dueño. En los directorios
con permisos de escritura para todos, como «/tmp», o para su grupo, con el fin de asegurar la integridad de los archivos, sedebe eliminar los permisos de escritura de los archivos. Además se debe configurar el sticky bit en el directorio para evitar que
cualquier usuario con permiso de escritura en él pueda borrar un archivo y después crear otro con el mismo nombre.
Aquí están algunos ejemplos interesantes.
$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4
crw------T 1 root root
108, 0 Oct 16 20:57 /dev/ppp-rw-r--r-- 1 root root
2761 Aug 30 10:38 /etc/passwd-rw-r----- 1 root shadow
1695 Aug 30 10:38 /etc/shadow-rwsr-xr-x 1 root root973824 Sep 23 20:04 /usr/sbin/exim4$ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
drwxrwxrwt 14 root root 20480 Oct 16 21:25 /tmp
drwxrwsr-x 10 root staff 4096 Sep 29 22:50 /usr/local
drwxr-xr-x 10 root root
4096 Oct 11 00:28 /usr/src
drwxrwsr-x 2 root mail4096 Oct 15 21:40 /var/mail
drwxrwxrwt 3 root root
4096 Oct 16 21:20 /var/tmp

La orden chmod(1) tiene otra forma de describir los permisos mediante números. Este modo numérico utiliza 3 o 4 dígitos enbase octal (base 8).
dígito1º dígito (opcional)
2º dígito
3º dígito
4º dígito

significado
suma de set user ID (=4), set group ID (=2) y sticky bit (=1)
suma de los permisos de lectura (=4), escritura (=2) y ejecución (=1) para usuario
idem para el grupo
idem para todos
Cuadro 1.5: El modo numérico en chmod(1) es como se muestra.

Parece más complicado de lo que realmente es. Si se fija en las primeras columnas (de la 2 a la 10) de la salida de la orden «ls-l» y lee en binario (base 2) la representación de los permisos del archivo («-» siendo «0» y cualquiera de «rwx» un «1»), laconversión a octal (base 8) representarían los permisos del archivo.
Por ejemplo, intente lo siguiente$ touch foo bar$ chmod u=rw,go=r foo$ chmod 644 bar$ ls -l foo bar-rw-r--r-- 1 penguin penguin 0 Oct 16 21:39 bar-rw-r--r-- 1 penguin penguin 0 Oct 16 21:35 foosugerencia
Si necesita acceder a información de salida de la orden «ls -l» en un archivo de órdenes, es mejor utilizar lasórdenes como test(1), stat(1) y readlink(1). La funcionalidad interna del intérprete de órdenes como«[» o«test» también puede ser utilizada.

11 / 257

Guía de referencia de Debian

1.2.4. Gestión de permisos para nuevos archivos: umask
Los permisos que se asignan por defecto a los nuevos archivos y directorios cuando estos se crean están definidos por la ordeninterna del intérprete de órdenes umask. Consulte dash(1), bash(1) y builtins(7).
(file permissions) = (requested file permissions) & ~(umask value)

umask
0022
0002

permisos creados para unarchivo-rw-r--r--rw-rw-r--

permisos creados para un
directorio-rwxr-xr-x-rwxrwxr-x

uso
modificable solo por el usuario
modificable por el grupo

Cuadro 1.6: Ejemplos de valores de umask
El sistema Debian utiliza por defecto un esquema de grupos privados de usuarios (UPG). Un grupo privado de usuario se crea
cuando sea añade un nuevo usuario al sistema. El UPG tiene el mismo nombre que el usuario para el cual fue creado y ese usuario
es el único miembro de ese grupo. En el esquema UPG es seguro asignar a la máscara (umask) el valor 0002 ya que cada usuario
tiene un grupo privado propio. (En algunas variantes de Unix, es común que todos los usuarios no privilegiados pertenezcan almismo grupo users siendo buena idea asignar el valor 0022 a la máscara por motivos de seguridad.)sugerencia
Active UPG añadiendo «umask 002» en el archivo ~/.bashrc.

1.2.5. Permisos para grupos de usuarios (grupo)

aviso
Por favor, asegúrese de guardar los cambios no guardados antes de realizar reinicios o acciones similares.

Puedes añadir un usuario penguin a un grupo bird en dos pasos:
Cambie la configuración del grupo utilizando una de las siguientes opciones:• Ejecute ”sudo usermod -aG bird penguin”.
• Ejecute ”sudo adduser penguin bird” (sólo en sistemas Debían típicos)• Ejecute ”sudo vigr” para /etc/group y ”sudo vigr -s” para /etc/gshadow para añadir penguin en la línea
para bird.
Aplique la configuración utilizando una de las siguientes opciones:• Reinicio e inicio de sesión. (Mejor opción)• Ejecute ”kill -TERM -1” y realice algunas acciones de reparación como ”systemctl restart NetworkManager.ser• Cierre de sesión a través del menú GUI e inicio de sesión.
Puedes eliminar un usuario penguin de un grupo bird en dos pasos:
Cambie la configuración del grupo utilizando una de las siguientes opciones:• Ejecute ”sudo usermod -rG bird penguin”.
• Ejecute ”sudo deluser penguin bird” (sólo en sistemas Debian típicos)

12 / 257

Guía de referencia de Debian• Ejecute ”sudo vigr” para /etc/group y ”sudo vigr -s” para /etc/gshadow para eliminar penguin en lalínea para bird.
Aplique la configuración utilizando una de las siguientes opciones:• Reinicio e inicio de sesión. (Mejor opción)• Ejecute ”kill -TERM -1” y realice algunas acciones de reparación como ”systemctl restart NetworkManager.ser• El cierre de sesión a través del menú GUI no es una opción para Gnome Desktop.
Cualquier intento de reinicio en caliente es un frágil sustituto del verdadero reinicio en frío en el sistema de escritorio moderno.
nota
Otra manera dinámica consiste en añadir usuarios a grupos durante el proceso de acreditación añadiendo la línea «auth optional pam_group.so» al archivo «/etc/pam.d/common-auth» y configurar«/etc/security/group.conf». (Consulte Capítulo 4.)
En el sistema Debian los dispositivos hardware son también archivos. Si tiene problemas para que un usuario acceda a dispositivos
como el CD-ROM o dispositivos de memoria USB, podría solucionarse añadiendo el usuario al grupo pertinente.
Algunos grupos importantes del propio sistema permiten a sus miembros acceder a archivos y directorios específicos sin privilegios de superusuario.
grupo
dialout
dip
cdrom
audio
video
scanneradm
staff

descripción de archivos y dispositivos accesibles
acceso directo y completo a los puertos serie («/dev/ttyS[0-3]»)
acceso limitado a los puertos series para establecer conexiones a internet por via telefónica
(dialup IP) a pares confiables
dispositivos CD-ROM, DVD+/-RW
dispositivo audio
dispositivo de video
escánerregistros de supervisión del sistema
algunos directorios para la administración básica del sistema: «/usr/local», «/home»
Cuadro 1.7: Relación de grupos importantes del sistema para el acceso a archivos

sugerencia
Necesita pertenecer al grupo dialout para reconfigurar el modem, marcar, etc. Pero si el superusuario creaarchivos de configuraciones predefinidas para algunos pares en «/etc/ppp/peers/», únicamente necesitará
pertenecer al grupo dip para crear conexiones a internet porvia telefónica a estos pares usando las órdenes
pppd(8), pon(1) y poff(1).
Algunos grupos importantes proporcionados por el sistema permiten a sus miembros ejecutar determinadas órdenes sin privilegiosde superusuario.
grupo
sudo
lpadminórdenes permitidas
ejecuta sudo sin su contraseña
ejecuta órdenes para añadir, modificar y eliminar las impresoras disponibles
Cuadro 1.8: Relación de grupos importantes del sistema para la ejecución de órdenes específicas

Puede consultar una relación completa de los usuarios y grupos del sistema en el documento «Users and Groups« /usr/share/doc/ba
del paquete base-passwd.
Consulte las órdenes para la gestión de usuarios y grupos: passwd(5), group(5), shadow(5), newgrp(1), vipw(8), vigr(8)y pam_group(8).

13 / 257

Guía de referencia de Debian

1.2.6. Marcas de tiempo
Existen tres tipos de marcas o sellos de tiempo para un archivo GNU/Linux.
tipo
mtime
ctime
atime

significado (definición histórica en Unix)
el momento de modificación (ls -l)el momento de cambio de estado (ls -lc)
el momento del último acceso (ls -lu)
Cuadro 1.9: Relación de tipos de marcas de tiempo

nota
ctime no es el momento de creación del archivo.

nota
El significado actual de atime en sistemas GNU/Linux puede no ser diferente del de Unix clásico.

Al sobrescribir un archivo se cambian todos los atributos mtime, ctime y atime del archivo.
Cambiar la propiedad o el permiso de un archivo modifica los atributos ctime y atime del archivo.
la lectura de un archivo en un sistema Unix clásico modifica su propiedad atime.
La lectura de un archivo en GNU/Linux modifica su propiedad atime si está montado con la opción «strictatime»
La lectura de un archivo por primera vez o después de un día cambia la propiedad atime en un sistema GNU/Linux si el sistemade archivos está montado con la opción «relatime». (comportamiento por defecto desde Linux 2.6.30)
La lectura del archivo no cambia su propiedad atime en un sistema GNU/Linux si el sistema de archivos está montado con la
opción «noatime».
nota
Las opciones de montaje «noatime» y «relatime» se diseñaron para mejorar el desempeño de lectura delsistema de archivos de forma normal. La simple lectura de un archivo con la opción «strictatime» genera una
operación de escritura para actualizar la propiedad atime. El atributo atime se usa poco excepto para el archivo
mbox(5). Consulte mount(8).

Utilice la orden touch(1) para cambiar las marcas de tiempo de los archivos existentes.
Para la fecha, el comando ls genera cadenas localizadas en una configuración regional que no es inglesa (”fr_FR.UTF-8”).
$ LANG=C ls -l foo-rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo$ LANG=en_US.UTF-8 ls -l foo-rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo$ LANG=fr_FR.UTF-8 ls -l foo-rw-rw-r-- 1 penguin penguin 0 oct. 16 21:35 foosugerencia
Consulte Sección 9.3.4 para personalizar la salida de «ls -l».

Guía de referencia de Debian

14 / 257

1.2.7. Enlaces
Existen dos métodos para asociar a un archivo ”foo” con otro nombre de archivo ”bar”.
enlace duro,• Nombre duplicado de un fichero ya existente• «ln foo bar»enlace simbólico o «simlink».
• Fichero especial que apunta a otro fichero por su nombre• «ln -s foo bar».
Con el siguiente ejemplo se muestra los cambios en el contador de enlaces y las sutiles diferencias de la orden rm.
$ umask 002$ echo ”Original Content” > foo$ ls -li foo
1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 foo$ ln foo bar# hard link
$ ln -s foo baz # symlink$ ls -li foo bar baz
1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 bar
1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo
1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 foo$ rm foo$ echo ”New Content” > foo$ ls -li foo bar baz
1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 bar
1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo
1450183 -rw-rw-r-- 1 penguin penguin 12 Oct 16 21:48 foo$ cat bar
Original Content$ cat baz
New Content

Los enlaces duros deben ser construidos en el mismo sistema de archivos y comparten el mismo «inodo» como revela el parámetro«-i» de la orden ls(1) .
Los enlaces simbólicos siempre tienen permisos de acceso al archivo nominales «rwxrwxrwx», como se mostró en el ejemplo
anterior, con los permisos reales que tenga el archivo al que referencia.

atención
En general es preferible no crear nunca enlaces simbólicos o enlaces duros excepto que tenga poderosas
razones. Los enlaces simbólicos puede causar problemas graves al crear bucles en el sistema de archivos.

nota
En general es preferible crear enlaces simbólicos a enlaces duros, al menos que tenga alguna buena razón paraello.

El directorio . enlaza al propio directorio en el que aparece, por lo que la cuenta de enlaces de cualquier nuevo directorio es 2. El
directorio «..» enlaza al directorio padre, por lo que la cuenta de enlaces del directorio se incrementa con la creación de nuevos
subdirectorios.
Si proviene de Windows, pronto comprenderá lo bien diseñado que están los enlaces de Unix, comparados con su equivalenteen Windows que son los accesos directos (shortcuts). Gracias su implementación en el sistema de archivos, las aplicaciones no
distinguen entre el archivo original y su enlace. En el caso de los enlaces duros, ciertamente no existe diferencia.

Guía de referencia de Debian

15 / 257

1.2.8. Tuberías con nombre (FIFOs)
Una tubería con nombre es un archivo que se comporta como una tubería. Usted introduce algo dentro del archivo y sale por elotro lado. Por esa razón se dice que es FIFO o primero-en-entrar-primero-en-salir: lo primero que se introduce en la tubería es loprimero en salir por el otro lado.
Si se escribe en una tubería con nombre, los procesos que han escrito en la tubería no pueden terminar hasta que la información
que han escrito es leída de la tubería. Si se lee de una tubería con nombre, el proceso lector espera hasta que no hay nada que leerantes de terminar. El tamaño de la tubería es siempre cero --- no almacena datos, la tubería solo comunica los dos procesos deigual manera que lo hace el intérprete de órdenes mediante la sintaxis «|». Sin embargo, desde que la tubería tiene un nombre,los dos procesos no tienen que estar en la misma línea de órdenes y ni siquiera ser ejecutados por el mismo usuario. Las tuberías
fueron una innovación muy relevante de Unix.
Por ejemplo, intente lo siguiente$ cd; mkfifo mypipe$ echo ”hello” >mypipe & # put into background[1] 8022$ ls -l mypipe
prw-rw-r-- 1 penguin penguin 0 Oct 16 21:49 mypipe$ cat mypipe
hello[1]+ Doneecho ”hello” >mypipe$ ls mypipe
mypipe$ rm mypipe

1.2.9. «Sockets»
Los «sockets» se usan de forma generalizada en las comunicaciones en Internet, bases de datos y sistemas operativos. Son similares a las tuberías con nombre (FIFO) y permiten que los procesos intercambien información entre diferentes equipos. Para los«sockets» los procesos no necesitan estar ejecutandose al mismo tiempo, ni ser hijos del mismo proceso padre. Este es el mejor
sistema para la comuniación entre procesos (IPC). El intercambio de información puede ocurrir en la red entre equipos. Los dos
tipos de «sockets» más comunes son los «sockets« Internet y los «sockets» de dominio Unix.
sugerencia«netstat -an» ofrece una visión muy útil de los «sockets» abiertos en el sistema.

1.2.10.

Archivos de dispositivos

Los archivos de dispositivos se refieren a dispositivos físicos o virtuales del sistema, como el disco duro, la tarjeta de vídeo, lapantalla o el teclado. Un ejemplo de dispositivo virtual es la consola, representado por «/dev/console».
Hay dos tipos de archivos de dispositivo.
dispositivos orientados a carácter,• se accede a un carácter cada vez,
• 1 carácter = 1 byte,• p. ej. teclado, puerto serie, …
dispositivo orientado a bloque.
• se accede a unidades grandes llamadas bloques,• 1 bloque > 1 byte,16 / 257

Guía de referencia de Debian• p. ej. un disco duro, …
Los archivos de dispositivos se pueden leer y escribir, aunque el fichero pueda contener datos binarios los cuales son un galimatias
incomprensibles para los humanos. Algunas veces escribir datos directamente en esos ficheros puede ayudar a resolver problemasde conexión con los dispositivos. Por ejemplo, se puede enviar un archivo de texto al dispositivo de la impresora«/dev/lp0»
o mandar órdenes de modem por el puerto serie «/dev/ttyS0». Pero, al menos que se haga con cuidado, puede causar unproblema mayor. Así que tenga cuidado.
nota
Comúnmente a la impresora se accede utilizando lp(1).

El número de nodo del dispositivo se muestra por la ejecución de ls(1) como se muestra.
$ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero
brw-rw---T 1 root disk
8, 0 Oct 16 20:57 /dev/sda
brw-rw---T+ 1 root cdrom
11, 0 Oct 16 21:53 /dev/sr0
crw-rw---T 1 root dialout 4, 64 Oct 16 20:57 /dev/ttyS0
crw-rw-rw- 1 root root
1, 5 Oct 16 20:57 /dev/zero«/dev/sda» tiene como número de dispositivo mayor de 8 y como número de dispositivo menor de 0. Los usuario pueden
realizar operaciones de lectura/escritura haciendo si pertenecen al grupo disk.
«/dev/sr0» tiene como número de dispositivo mayor de 11 y como menor de 0. Los usuarios pueden realizar operaciones
de lectura/escritura si pertenecen al grupo cdrom.
«/dev/ttyS0» tiene el número de dispositivo mayor de 4 y menor de 64. Los usuarios pueden realizar operaciones delectura/escritura si pertenecen al grupo dialout.
«/dev/zero» tiene como número mayor de dispositivo 1 y como menor 5. Todos los usuarios pueden realizar operaciones
de lectura/escritura.
En un sistema Linux moderno, el sistema de archivos en «/dev/» se rellena de forma automática mediante udev(7).

1.2.11. Archivos de dispositivos especiales
Existen algunos archivos de dispositivos especiales.
archivo de dispostivo/dev/null/dev/nullacciónlecturaescritura/dev/zerolectura/dev/random

lectura/dev/urandom

lectura/dev/full

escrituradescripción de respuesta
devuelve el «carácter de final de archivo (EOF)»
no devuelve nada (un pozo sin fondo al que enviar datos)devuelve «el carácter \0 (NUL)» (difiere del número
cero representado en ASCII)
devuelve caracteres aleatorios creados por el generador denúmeros aleatorios confiable, ofreciendo entropía real
(baja)
devuelve caracteres de forma aleatoria desde el generadorde números pseudo-aleatorios de seguridad criptográfica
devuelve el error de disco lleno (ENOSPC)

Cuadro 1.10: Relación de archivos de dispositivos especiales
Con frecuencia son utilizados en las redirecciones del intérprete de órdenes (consulte Sección 1.5.8).

Guía de referencia de Debian

1.2.12.

17 / 257

procfs y sysfs

Los pseudo sistemas de archivos procfs y sysfs, que se montan en «/proc» y «/sys», son estructuras de datos internas delnúcleo que se muestran al espacio de usuario. Expresado de otra forma, estas entradas son virtuales actúan como una ventana
adecuada al funcionamiento del sistema operativo.
El directorio «/proc» contiene (entre otras cosas) un subdirectorio por cada proceso que se está ejecutando en el sistema operativo, cuyo nombre es el identificador del proceso (PID). Las herramientas del sistema que acceden a la información de los procesos,como ps(1), obtienen dicha información de la estructura de este directorio.
Los el subárboles de directorios «/proc/sys/» contienen interfaces que permiten cambiar algunos parámetros del núcleo entiempo de ejecución. (Se puede realizar las mismas operaciones por medio de la ordensysctl(8) o de su archivo de configuración«/etc/sysctl.conf».)
La gente normalmente se alarma del gran tamaño de un archivo en particular, «/proc/kcore». Es (más o menos) una copiadel contenido de la memoria del equipo. Es útil para depurar el núcleo y es un archivo virtual que es una referencia a la memoriadel equipo, así es que no hay que preocuparse por su tamaño.
El subdirectorio ”/sys” contiene las estructuras de datos del kernel exportadas, sus atributos y los enlaces entre ellos. También
contiene interfaces para cambiar ciertos parámetros del kernel que se están ejecutándose.
Consulte «proc.txt(.gz)», «sysfs.txt(.gz)» y otros documentos que forman parte de la documentación del núcleo deLinux («/usr/share/doc/linux-doc-*/Documentation/filesystems/*») incluidos en el paquete linux-doc-*.

1.2.13.

tmpfs

El sistema de archivos temporal tmpfs tiene la función de mantener todos los archivos en la memoria virtual. Los datos de «tmpfs«
de la caché de páginas de la memoria se puede enviar al área de intercambio en disco cuando sea necesario.
El directorio «/run» se monta como tmpfs al comienzo del proceso de arranque. Así se permite la escritura sobre él, incluso
cuando el directorio «/» está montado en solo lectura. Aquí se guardan los archivos en estado temporal y sustituye a varios
directorios de la Jerarquía Estándar del Sistema de Ficheros versión 2.3:«/var/run» → «/run»,«/var/lock» → «/run/lock»,«/dev/shm» → «/run/shm».

Ver el documento del núcleo de Linux «tmpfs.txt(.gz)» («/usr/share/doc/linux-doc-*/Documentation/filesysque está en el paquete linux-doc-*.

1.3. Midnight Commander (MC)Midnight Commander (MC) es una «navaja multiusos» GNU para la consola de Linux y otros entornos de terminal. Aporta a losnuevos usuarios una experiencia de consola basada en menús que es más sencilla de aprender que las órdenes estándar de Unix.
Necesitará instalar el paquete de Midnight Commander llamado «mc como se muestra.
$ sudo apt-get install mc

Usa el comando mc(1) para explorar el sistema Debian. Esta es la mejor forma de aprender. Por favor, explora algunos lugaresinteresantes sólo usando las teclas del cursor y la tecla Intro.
”/etc” y sus subdirectorios«/var/log» y sus subdirectorios«/usr/share/doc» y sus subdirectorios«/usr/sbin» y «/usr/bin».

18 / 257

Guía de referencia de Debian

1.3.1. Personalización de MC
Para cambiar el directorio de trabajo de MC después de salir y no tener que ejecutar una orden cd al último directorio, le sugieroque cambie «~/.bashrc» para incluir el archivo de órdenes que está en el paquete mc.
. /usr/lib/mc/mc.shConsulte mc(1) (en la opción «-P») para comprobar por qué. (Si no comprende exactamente lo que estoy diciendo puede hacerlo
más tarde.)

1.3.2. Comenzando con MC
Para ejecutar MC escribe lo siguiente.
$ mc

MC permite ejecutar todas las operaciones sobre archivos a través de sus menús, con el mínimo esfuerzo para el usuario. Para
acceder a la pantalla de ayuda presione F1. Puede probar MC con solo pulsar las teclas de los cursores y las teclas de función.
nota
En algunas consolas como gnome-terminal(1), la pulsación de las teclas de función las recibe la consola. Esta
funcionalidad se desactiva en «Editar» → «Atajos de teclado» para gnome-terminal.

Si encuentra problemas de codificación de los caracteres y parecen no tener sentido, añadir «-a» como parámetro a la orden MC
ayudará a evitar problemas.
Si esto no soluciona el problema consulte Sección 9.5.6.

1.3.3. Gestor de archivos de MC
Por defecto hay dos paneles con dos directorios y su contenido. Otro modo útil es asignar el panel derecho para que muestre lospermisos de los archivos, etc. A continuación mostraremos algunas claves. Con el demonio gpm(8) ejecutándose, se puede usar
el ratón en la consola de caracteres de Linux. (Asegurese de pulsar la tecla de mayúsculas para obtener el comportamiento normal
cuando corte y pegue en MC.)
tecla
F1
F3
F4
F9
F10
Tab
Insertar o Ctrl-T
Del
Cursoresfunción
menú de ayuda
visión del contenido del archivo
editor interno
activa el menú superior
salida de Midnight Commander
moverse entre los paneles
marcar el fichero para seleccionar varios para otra operación como copiar
borrar el archivo (tenga cuidado---active el modo seguro de borrado en MC)
se explican por si mismas
Cuadro 1.11: Funciones de las teclas en MC

1.3.4. Trucos de la línea de órdenes en MC
La orden cd cambia el directorio en el panel seleccionado

Guía de referencia de Debian

19 / 257

Ctrl-Intro o Alt-Intro copia el nombre del archivo a la orden en la línea de órdenes Se utiliza en combinación con lasórdenes cp(1) y mv(1) para añadir parámetros a las órdenes.
Alt-Tab muestra los posibles archivos elegibles por expansión del nombre en el intérprete de órdenes.
Se puede especificar los directorios de inicio de ambos paneles como parámetros a MC; por ejemplo, «mc /etc/root».
Esc + tecla numérica n → tecla de función n (p. ej., Esc + 1 → F1, etc.; Esc + 0 → F10).
Pulsando Esc antes que la tecla tiene el mismo efecto que presionar Alt y otra tecla a la vez.; p. ej. pulse Esc+c para obtener
Alt-C. Esc es llamada la meta-tecla y algunas veces se representa como «M-».

1.3.5. El editor interno de MC
El editor interno tiene un esquema de corta-y-pega interesante. Al pulsarF3 comienza la selección, una segunda pulsación de F3
finaliza la selección y resalta lo seleccionado. Entonces puede mover el cursor. Si presiona F6 el área seleccionada se moverá ala posición del cursor. Si presiona F5 el área seleccionada se copia e inserta en la posición del cursor. F2 guarda el archivo. F10
permite salir. La mayor parte de las teclas cursor funcionan de forma intuitiva.
Este editor puede iniciarse directamente en un fichero utilizando uno de los siguientes comandos.
$ mc -e filename_to_edit$ mcedit filename_to_edit

El editor posee una sola ventana, pero se pueden usar varias consolas de Linux para obtener el mismo comportamiento. Para
copiar entre ventanas, use las teclas Alt-Fn para cambiar entre consolas virtuales y utilice «Archivo→Insertar archivo» o «Archivo→Copiar a un archivo» para mover una parte de un archivo a otro.
El editor interno se puede reemplazar por cualquier otro editor de su elección.
De hecho, muchos programas usan la variable de entorno «$EDITOR» o «$VISUAL» para determinar el editor a utilizar. Si
al principio no está cómodo con vim(1) o nano(1), puede cambiar su valor a «mcedit» añadiendo la siguientes líneas a«~/.bashrc».
export EDITOR=mcedit
export VISUAL=mcedit

Si le parece, mi recomendación es asignarles el valor «vim».
Si está incómodo con vim(1) puede utilizar mcedit(1) para la mayor parte de las tareas de administración del sistema.

1.3.6. El visor interno de MC
MC posee un visor inteligente. Es una gran herramienta para buscar palabras en los documentos. Siempre lo uso para archivos deldirectorio «/usr/share/doc». Es la manera más rápida de navegar a través de la ingente cantidad de información de Linux.
Este visor puede iniciarse de forma separada utilizando una de las órdenes que se muestran.
$ mc -v path/to/filename_to_view$ mcview path/to/filename_to_view

1.3.7. Selección inteligente del visor en MC
Pulse Intro en un archivo y el programa, de acuerdo a su contenido, abrirá el archivo (consulte Sección 9.4.11). Es una funcionalidad de MC muy útil.
Para que opere de forma correcta el visor y las funciones virtuales de archivo, los archivos visibles no deben tener permisos deejecución. Puede cambiar su estado con chmod(1) o en el menú de archivo de MC.

20 / 257

Guía de referencia de Debiantipo de archivo
archivo ejecutablearchivo de página de manual
archivo html
archivos «*.tar.gz» y «*.deb»

acción de la tecla Introejecuta la orden
envía el contenido a la aplicación de visualización
envía el contenido al navegador web
muestra su contenido como si fuera un subdirectorio
Cuadro 1.12: Accion de la tecla Intro en MC

1.3.8. Sistema de archivos virtual de MC
MC puede acceder a archivos en Internet a través de FTP. Vaya al menú pulsando F9, ”Enter” y ”h” para activar el sistemade archivos Shell. Escriba la URL con el formato «sh://[user@]machine[:options]/[remote-dir]», que abre undirectorio remoto que aparece como uno local usando ssh.

1.4. Fundamentos de entornos de trabajo tipo Unix
Aunque MC permite realizar casi cualquier cosa, es importante aprender a utilizar la línea de órdenes y el intérprete de comandos
y acostumbrarse a un entorno de trabajo tipo Unix.

1.4.1. El intérprete de órdenes (shell)
Dado que algunos programas de inicialización del sistema pueden usar el shell de inicio de sesión, es prudente mantenerlo como
bash(1) y evitar cambiar el shell de inicio de sesión con chsh(1).
Si desea utilizar un prompt interactivo diferente de shell, hágalo desde la configuración del emulador de la terminal GUI o iniciélo
desde ~/.bashrc, por ejemplo, colocando ”exec /usr/bin/zsh -i -l”o”exec /usr/bin/fish -i -l”en ella.

paquetepopularidad

Intérpretetamaño de órdenes
POSIX

descripciónbash

V:838, I:999

7175

Sí

Bash: el intérprete de órdenes GNU Bourne Again
SHell (estándar de facto)

V:32, I:933

1454

N/A

terminación programable para la shell bashdash

V:884, I:997

191

Sí

zsh

V:40, I:73

2463

Sí

tcsh
mksh

V:6, I:20
V:6, I:11

1355
1579

No
Sí

csh

V:1, I:6

339

No

sash

V:0, I:5

1157

Sí

ksh

V:1, I:10

61

Sí

rc

V:0, I:1

178

No

posh

V:0, I:0190

Síbash-completion

Intérprete de órdenes Debian Almquist, bueno paraarchivos de órdenes
Intérprete de órdenes Z: un intérprete de órdenes con
muchas mejoras
TENEX C Shell: una versión mejorada de Berkeley csh
Versión de el intérprete de órdenes Korn
Intérprete de órdenes OpenBSD C, una versión de
Berkeley csh
Intérprete de órdenes Stand-alone con órdenes internas(no es el estándar «/usr/bin/sh»)la versión AT&T actual del intérprete de órdenes Korn
implementación del intérprete de órdenes rc de AT&T
Plan 9Intérprete de órdenes que cumple con las directrices
estándar (derivado de pdksh)Cuadro 1.13: Relación de intérpretes de órdenes

Guía de referencia de Debian

21 / 257

sugerencia
Aunque los intérpretes de órdenes tipo POSIX comparten la sintaxis básica, pueden cambiar el comportamientode algunos elementos básicos como sus variables o la expansión de nombres de archivos con comodines. Por
favor, compruebe su documentación para obtener más detalles.

En este capítulo se sobreentiende que el intérprete de órdenes es bash.

1.4.2. Personalización de bash
Puede personalizar bash(1) en el archivo de configuración «~/.bashrc».
Por ejemplo, pruebe con lo que se muestra.
# enable bash-completion
if ! shopt -oq posix; thenif [ -f /usr/share/bash-completion/bash_completion ]; then. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then. /etc/bash_completionfifi# CD upon exiting MC. /usr/lib/mc/mc.sh# set CDPATH to a good one
CDPATH=.:/usr/share/doc:~:~/Desktop:~export CDPATH
PATH=”${PATH+$PATH:}/usr/sbin:/sbin”# set PATH so it includes user’s private bin if it exists
if [ -d ~/bin ] ; then
PATH=”~/bin${PATH+:$PATH}”fi
export PATHEDITOR=vim
export EDITOR

sugerencia
Puede encontrar más posibilidades de personalización de bash, como Sección 9.3.6 en Capítulo 9.

sugerencia
El paquete bash-completion permite la finalización programable de bash.

1.4.3. Combinaciones de teclas
En un entorno tipo Unix, hay algunas teclas que tiene un uso especial. Tenga en cuenta que en una consola en modo texto deLinux, solo las teclas Ctrl y Alt del lado izquierdo funcionan de la forma esperada. He aquí algunas combinaciones de teclasque conviene recordar.
sugerencia
La funcionalidad del terminal de Ctrl-S puede deshabilitarse con stty(1).

22 / 257

Guía de referencia de Debiantecla
Ctrl-U
Ctrl-H
Ctrl-D
Ctrl-C
Ctrl-Z
Ctrl-S
Ctrl-Q
Ctrl-Alt-Del
tecla izquierda Alt (opcionalmente,tecla de Windows)
flecha arriba
Ctrl-R
Tab
Ctrl-V Tab

descripción de la combinación de teclasborra el contenido desde el cursor al inico de la línea
borra el carácter anterior al cursor
fin de la entrada (finaliza el intérprete de órdenes en uso)
finaliza el programa en ejecución
para temporalmente el programa que pasa a segundo planopara la salida por pantalla
reanuda la salida por pantalla
reinicia/apaga el sistema, ver inittab(5)meta-tecla para Emacs e interfaces similares de usuario
retrocede en el histórico de órdenes bash
búsqueda en el histórico de órdenes de bash
completa la entrada de la orden con el nombre de archivo en bash
introduce Tab sin completar la orden en bash

Cuadro 1.14: Relación de combinaciones de teclado en bash

1.4.4. Operaciones con el ratón
Las operaciones del ratón para el texto en el sistema Debian mezclan 2 estilos con algunos cambios:
Operaciones tradicionales del ratón al estilo de Unix:• usar 3 botones (clic)• usar PRIMARIO/A• usado por aplicaciones X tales como xterm y aplicaciones de linea de comando en la consola Linux
Operación del ratón al estilo GUI (interfaz gráfica de usuario) moderna:• usar 2 botones (arrastrar + clic)• usar PRIMARIO y PORTAPAPELES• usado en aplicaciones modernas GUI tales como gnome-terminal
acciónboton izquierdo y arrastre del ratón
botón izquierdo
botón derecho (tradicional)
botón derecho (moderno)
Clic central o Mayús-Ins
Ctrl-X
Ctrl-C (Shift-Ctrl-C en terminal)
Ctrl-V

respuesta
seleccionar un rango como selección PRIMARIA
seleccione el inicio del rango para la selección PRIMARIA
seleccione el final del rango para la selección PRIMARIA
menú dependiente del contexto (cortar/copiar/pegar)
insertar selección PRIMARIA en el cursor
cortar la selección PRIMARIA al PORTAPAPELES
copiar la selección PRIMARIA al PORTAPAPELES
pegue el contenido de CLIPBOARD en la ubicación del cursor

Cuadro 1.15: Lista de acciones de teclado relacionadas y operaciones con ratón en DebianAquí, la selección PRIMARIA es el rango de texto resaltado. Dentro del programa de terminal, Shift-Ctrl-C se usa en su
lugar para evitar terminar un programa en ejecución.
La rueda central del ratón moderno se considera el botón central del mismo y se puede usar para hacer clic en el medio. Hacer
clic en los botones izquierdo y derecho del ratón al mismo tiempo equivale como clic central en los ratones de 2 botones.
Para usar un ratón en las consolas de caracteres de Linux, debe tener gpm(8) ejecutándose como daemon.

Guía de referencia de Debian

23 / 257

1.4.5. El paginador
La orden less(1) es un paginador mejorado (permite navegar por el contenido de los archivos). Lee el archivo indicado como
parámetro en su orden o la entrada estándar. Pulse «h» si necesita ayuda mientras utiliza la orden less. Es más capaz quemore(1) y se puede mejorar ejecutando «eval $(lesspipe)» o «eval $(lessfile)» en el archivo de órdenes deinicio. Ver «/usr/share/doc/less/LESSOPEN». La opción «-R» permite la salida en crudo y permite las secuencias deescape ANSI coloreadas. Ver less(1).
sugerencia
En el comando less, escriba ”h” to see the help screen, type ”/” o ”?” to search a string, and type ”-i” paracambiar la sensibilidad entre mayúsculas y minúsculas.

1.4.6. El editor de texto
Debería ser competente con Vim o Emacs que son habituales en los sistemas tipo Unix.
Pienso que el correcto es Vim, ya que el editor Vi esta siempre disponible en el mundo Linux/Unix. (En realidad, los programas,
bien el original vi o el nuevonvi los puede encontrar en cualquier lugar. Yo elegí Vim en vez de la versión nueva ya que ofrece
ayuda a través de tecla F1 siendo similar y más potente.)
Si elige Emacs o XEmacs como su editor también son buenas opciones, especialmente para la programación. Emacs tiene una
extensa cantidad de características también, incluyendo funciones como lector de noticias, editor de directorios, aplicación decorreo, etc. Cuando se usa para programar o editar archivos de órdenes, reconocerá el formato en el que está trabajando y trataráde ayudarle. Algunos mantienen que el único programa que se necesita en Linux es Emacs. Aprender Emacs durante diez minutos
ahora puede ahorrar muchas horas después. Es recomendable usar el manual de GNU Emacs para aprender.
Todos estos programas normalmente incluyen un tutorial para que pueda aprender a través de la práctica. Se inicia en «vim»
pulsando la tecla F1. Debería al menos leer las primeras treinta y cinco líneas. Después realizar el curso de entrenamiento posicionando el cursor en«|tutor|» y pulsando Ctrl-].
nota
Los buenos editores, como Vim y Emacs, gestionan de manera adecuada codificaciones UTF-8 y otras menos
comunes o más exóticas. Es una buena idea usar el entorno X con la configuración regional UTF-8 e instalarlos programas y tipos de letra necesarias para ello. Los editores tienen opciones para asignar una codificación
independientemente de la del entorno X. Por favor, consulte su documentación sobre texto multibyte.

1.4.7. Configuración del editor de texto por defecto
Debian tiene un buen número de editores. Recomendamos instalar el paquete vim, como ya hemos mencionado.
Debian tiene un acceso unificado al editor por defecto del sistema mediante la orden «/usr/bin/editor», y así otros programas (p. ej. reportbug(1)) puedan llamarlo. Puede cambiarlo como se muestra.
$ sudo update-alternatives --config editor

Mi recomendación es la opción «/usr/bin/vim.basic» mejor que «/usr/bin/vim.tiny» para los usuario noveles yaque permite realzado de sintaxis.
sugerencia
Muchos programas utilizan las variables de entorno «$EDITOR» o «$VISUAL» para determinar el editor a usar (verSección 1.3.5 y Sección 9.4.11). Para un sistema Debian coherente asigne este valor a «/usr/bin/editor».
(Históricamente, «$EDITOR» era «ed» y «$VISUAL» era «vi».)

24 / 257

Guía de referencia de Debian

1.4.8. Usando vim
El reciente vim(1) se inicia en la sana opción ”nocompatible” y entra en el modo NORMAL.1
modo
NORMAL

entradas con el teclado
ayuda|solo

NORMAL:e filename.ext

NORMAL:w

NORMALNORMALNORMALNORMALNORMALNORMALNORMALNORMALNORMALexcepto TERMINAL-JOB
NORMALTERMINAL-NORMALTERMINAL-JOB:w filename.extq:q!
:solamente¿establecer nocompatible?
: establecer nocompatibleiR
v
V
Ctrl-V
Tecla ESC
:term
i
Ctrl-W N (o Ctrl-\ Ctrl-N)

TERMINAL-JOB

Ctrl-W :NORMALNORMAL

acciónmostrar el archivo de ayuda
abrir un nuevo búfer para editar
filename.ext
sobrescribir el búfer actual en el archivo
original
escribir el búfer actual en filename.ext
salir vim
forzar salir vim
cierre todas las demás ventanas abiertas
comprobar si vim está en el modo
nocompatible
establecer vim en el modo nocompatible
pulse el modo INSERTAR
entrar en el modo REEMPLAZAR
entrar en el modo VISUAL
ingrese al modo lineal VISUAL
Ingresar al modo VISUAL en bloqueentrar al modo NORMAL
entrar al modo TERMINAL-JOB
entrar al modo TERMINAL-JOB
entre el modo TERMINAL-NORMAL
entre el modo Ex-en modo
TERMINAL-NORMAL

Cuadro 1.16: Lista de comandos básicos de Vim
Por favor use el programa ”vimtutor” para aprender vim en un curso con tutorial interactivo.
El programa vim cambia su comportamiento al pulsar las teclas basadas en modo. La mayoría de las pulsaciones de teclas enel búfer se realizan en modo INSERTAR y modo REEMPLAZAR. El movimiento del cursor se realiza principalmente en modo
NORMAL. La selección interactiva se realiza en modo VISUAL. Escribir ”:” en modo NORMAL cambia su modo a Ex-modo. El
modo Ex acepta comandos.
sugerencia
El Vim viene con el paquete Netrw. ¡Netrw admite la lectura de archivos, la escritura de archivos, la exploraciónde directorios en una red y la exploración local! Pruebe Netrw con ”vim .” (un punto como argumento) y lea su
manual en ”:help netrw”.

Para la configuración avanzada de vim, ver Sección 9.2.

1.4.9. Grabación de las actividades del intérprete de órdenes
La salida del intérprete de órdenes puede colapsar su pantalla y puede perderse para siempre. Es una buena práctica registrar
la actividad del intérprete de órdenes en un archivo para poder revisarlo más tarde. Este registro es esencial para llevar a buen
término cualquier tarea de administración de un sistema.
1Incluso el antiguo vim puede comenzar en el sano modo ”nocompatible” al iniciarlo con la opción ”-N”.

Guía de referencia de Debian

25 / 257

sugerencia
El nuevo Vim (versión> = 8.2) se puede usar para registrar las actividades de shell limpiamente usando el modo
TERMINAL-JOB. Consulte Sección 1.4.8.
El método básico de registro del intérprete de órdenes es operar con script(1).
Por ejemplo, intente lo siguiente$ script
Script started, file is typescript

Ejecute las órdenes que desee después de script.
Pulse Ctrl-D para finalizar script.
$ vim typescript

Consulte Sección 9.1.1.

1.4.10.

Órdenes básicas de Unix

Aprendamos las órdenes fundamentales de UNIX. Aquí utilizaremos «Unix» en su sentido genérico. Normalmente cualquiersistema operativo tipo Unix tiene un conjunto de órdenes similares. El sistema Debian no es una excepción. No se preocupe si
en este momento algunas órdenes no funcionan como esperaba. Si se utiliza alias en el intérprete de órdenes, las salidas de lasórdenes correspondientes difieren. Estos ejemplos no pretenden ejecutarse en orden.
Pruebe las siguientes órdenes desde una cuenta de usuario sin privilegios.
nota
Unix tiene una tradición de ocultar los archivos que comienzan con «.». Tradicionalmente contienen informaciónde configuración y de preferencias de usuario.
Para la orden cd, consulte builtins(7).
El paginador por defecto del sistema Debian es more(1) que es básico y no permite el desplazamiento para atrás.
La instalación del paquete less con la orden «apt-get install less», convertirá a less(1) en el paginador
por defecto y este sí permite el desplazamiento hacia atrás con las teclas de cursor.
En la expresión regular de la orden «ps aux | grep -e «[e]xim4*«», «[» y «]» permite a grep que noencaje consigo mismo. La expresión regular «4*» significa cero o más repeticiones del carácter «4» y de estemodo permite a grep encajar con «exim» y con «exim4». Aunque el intérprete de órdenes utiliza «*» para elcompletado de nombres y las expresiones regulares, sus significados son distintos. Aprenda expresiones regularesconsultando grep(1).
Por favor, para entrenar recorra los directorios y de un vistazo al sistema utilizando las órdenes que acabamos de introducir. Si
tiene dudas sobre cualquier orden de consola, asegúrese de leer la página del manual.
Por ejemplo, intente lo siguiente$ man man
$ man bash
$ man builtins$ man grep
$ man ls

El estilo de la páginas de manual puede ser un poco áspero, ya que puede ser bastante conciso, especialmente las más antiguas ytípicas pero una vez que se acostumbre, llegará a apreciar su concisión.
Recuerde que muchas órdenes de la familia Unix, incluidas las que provienen de GNU y BSD muestran un resumen de la ayuda
si las ejecuta en alguna de las siguientes maneras (o sin parámetros en algunos casos).
$ commandname --help$ commandname -hGuía de referencia de Debian

orden
pwd
whowhoami
id
file footype -p nombre_de_la_orden
which nombre_de_la_orden
type nombre_de_la_orden
apropos palabra_clave
man -k palabra_clave
whatis nombre_de_la_orden
man -a nombre_de_la_orden
info nombre_de_la_orden
ls
ls -a
ls -A
ls -lals -lails -d
tree
lsof foolsof -p pid
mkdir foo
rmdir foo
cd foocd /cd
cd /foo
cd ..
cd ~foocd </etc/motd pager
touch junkfile
cp foo bar
rm junkfile
mv foo bar
mv foo bar
mv foo bar/baz
chmod 600 foo
chmod 644 foo
chmod 755 foo
find . -name expresión_regularlocate -d . expresión_regular

26 / 257

descripción
muestra el nombre del directorio actual/de trabajo
muestra el nombre del usuario actual
muestra la identidad del usuario actual (nombre, uid, gid y grupos a losque pertenece)
muestra el tipo de archivo de «foo»
muestra la ubicación del archivo de la orden«nombre_de_la_orden»,,
muestra información de la orden «nombre_de_la_orden»
apropoencuentra órdenes relacionadas con la «palabra_clave»,,
muestra una descripción de una línea de la orden«nombre_de_la_orden»
muestra la descripción de la orden «nombre_de_la_orden» (alestilo Unix)
muestra una descripción detallada de la orden«nombre_de_la_orden» (al estilo GNU)relación el contenido del directorio (excluye aquellos archivos odirectorios que comienzan por .)relación el contenido del directorio (todos los archivos y directorios)
relación el contendido del directorio (casi todos los archivos ydirectorios, a saber, oculta «..» y «.»)
relación todo el contenido del directorio con información detallada
relación el contenido completo del directorio con el número del inodo e
información detallada
relación los directorios que cuelgan del directorio actual
muestra el contenido de los directorios en formato de árbol
relación de los procesos que tienen abierto el archivo «foo»
relación de los archivos abiertos por el proceso con el identificador:«pid»crear un nuevo directorio «foo» en el directorio actual
borra el directorio «foo» del directorio actual
cambia al directorio «foo» que se encuentre en el directorio actual oen los directorios incluidos en la variable «$CDPATH»
cambia al directorio raíz
cambia al directorio principal del usuario actual
cambia al directorio con ruta absoluta «foo»
cambia al directorio padrecambia al directorio principal del usuario «foo»
cambia al directorio anterior
muestra el contenido de «/etc/motd» usando el paginador por
defectocrea un archivo vacio «junkfile»
copia el archivo existente «foo» en un archivo nuevo «bar»
borra el archivo «junkfile»renombra el archivo existente «foo» con un nuevo nombre «bar»(«bar» no debe existir con anterioridad)
mueve el archivo existente «foo» a una nueva ubicación «bar/foo»(el directorio «bar» debe existir previamente)
mueve un archivo existente «foo» a una nueva ubicación con elnombre nuevo «bar/baz» (el directorio «bar» debe existir con
anterioridad pero el archivo «bar/baz» no)el archivo existente «foo» únicamente tiene permisos de lectura yescritura para el dueño (y no se permite la ejecución por nadie)
hace que un archivo existente «foo» lo pueda leer cualquiera, queúnicamente el dueño pueda escribir sobre él (y nadie puede ejecutarlo)
hace que un archivo «foo» pueda ser leído por cualquiera ymodificado solo por el dueño (cualquiera puede ejecutarlo)encuentra archivos que cumplen la «expresión_regular» delintérprete de órdenes (lento)
encuentra archivos que cumplen «expresión_regular» delintérprete de órdenes (rápido ya que utiliza una base de datos que se27 / 257

Guía de referencia de Debian

1.5. Órdenes simples para el intérprete de órdenes
Ahora ya tiene una idea de como utilizar un sistema Debian. Vamos a ver en profundidad el mecanismo de la ejecución de órdenes
en el sistema Debian. En este tema haremos una simplificación de la realidad para las personas con poca experiencia. Para una
explicación más completa consultar bash(1).
Un comando simple es una secuencia de componentes.
1. asignación de variables (opcional),
2. nombre de la orden,
3. parámetros (opcional),
4. redirecciones (optional: > , >> , < , << , etc.),
5. operadores de control (optional: && , || , nueva_línea , ; , & , ( , ) ).

1.5.1. Ejecución de órdenes y variables de entorno
El comportamiento de algunas órdenes Unix cambia dependiendo del valor de algunas variables de entorno.
Los valores predeterminados de las variables de entorno los estable inicialmente el sistema PAM y luego algunos de ellos sepueden restablecer por algunos programas de la aplicación.
El sistema PAM como pam_env puede establecer variables de entorno mediante /etc/pam.conf”, ”/etc/environment”
y ”/etc/default/locale”.
Los gestores de inicio de sesión como gdm3 pueden restablecer las variables de entorno para la sesión de GUI por ”~/.profile”.

La inicialización del programa específico del usuario puede reajustar variables del entorno por ”~/.profile”, ”~/.bash_profil

1.5.2. La variable «$LANG»
La configuración regional predeterminada se define en la variable de entorno ”$LANG” y se configura como ”LANG=xx_YY.UTF-8”
por el instalador o por la configuración posterior de la GUI, por ejemplo, ”Configuración” → ”Región e idioma” → ”Idioma” /”Formatos” para GNOME.
nota
Recomiendo que se configure el entorno del sistema sólo con la variable ”$LANG” por ahora y mantenerse alejado
de las variables ”$LC_*” a menos que sea absolutamente necesario.

La variable de la configuración regional «$LANG» tiene tres partes: «xx_YY.ZZZZ».
valor de configuración regional
xx
YY
ZZZZ

significado
códigos de la lengua según la ISO 639 (en minúsculas) como «en»
código del país de la ISO 3166 (en mayúsculas) como «US»
codificación de caracteres, siempre «UTF-8»

Cuadro 1.18: Tres partes del valor de la configuración regional
La forma más común de ejecutar la orden en un intérprete de órdenes es como se muestra.

28 / 257

Guía de referencia de Debianrecomendación de la configuración regional
en_US.UTF-8
en_GB.UTF-8
fr_FR.UTF-8
de_DE.UTF-8
it_IT.UTF-8
es_ES.UTF-8
ca_ES.UTF-8
sv_SE.UTF-8
pt_BR.UTF-8
ru_RU.UTF-8
zh_CN.UTF-8
zh_TW.UTF-8
ja_JP.UTF-8
ko_KR.UTF-8
vi_VN.UTF-8

lengua (territorio)
Inglés (USA)Inglés (Gran Bretaña)
Francés (Francia)
Alemán (Alemania)
Italiano (Italia)
Español (España)
Catalán (España)
Sueco (Suecia)
Portugués (Brasil)
Ruso (Rusia)
Chino (República Popular de China)
Chino (República de China (Taiwan))
Japonés (Japón)
Coreano (República de Corea)
Vietnamita (Vietnam)

Cuadro 1.19: Relación de recomendaciones para la configuración regional$ echo $LANG
en_US.UTF-8$ date -u
Wed 19 May 2021 03:18:43 PM UTC$ LANG=fr_FR.UTF-8 date -u
mer. 19 mai 2021 15:19:02 UTC

Aquí, el programa date(1) se ejecuta con valores locales diferentes.
En la primera orden «$LANG» tiene el valor por defecto de la configuración regional «en_US.UTF-8».
En la segunda orden «$LANG» asigna la configuración regional a francés UTF-8 con el valor «fr_FR.UTF-8».
La mayor parte de las órdenes ejecutadas no van precedidas de la definición de variables de entorno. Otra forma alternativa delejemplo anterior es la que se muestra.
$ LANG=fr_FR.UTF-8$ date -u
mer. 19 mai 2021 15:19:24 UTC

sugerencia
Cuando envíe un informe de error, es una buena idea ejecutar y comprobar el comando bajo la configuración
regional ”en_US.UTF-8” si utiliza un entorno distinto al inglés.

Consultar Sección 8.1 para obtener más detalles de la configuracion regional.

1.5.3. La variable «$PATH»
Cuando escribe una orden en el intérprete de órdenes, este busca la orden en la relación de directorios contenidos en la variable
de entorno «$PATH». El valor de la variable de entorno «$PATH» también se le conoce como la ruta de búsqueda del intérpretede órdenes.
En la instalación por defecto de Debian, la variable de entorno «$PATH» de las cuentas de usuario puede no incluir «/usr/sbin»y «/usr/sbin». Por ejemplo, la orden ifconfig necesita ser ejecutada con la ruta completa con «/usr/sbin/ifconfig».
(Órdenes parecidas como ip están ubicadas en «/usr/bin».)
Puede cambiar la variable de entorno ”$PATH” del shell Bash mediante los archivos ”~/.bash_profile” o ”~/.bashrc”.

29 / 257

Guía de referencia de Debian

1.5.4. La variable «$HOME»
Muchas órdenes almacenan configuraciones específicas del usuario en su directorio principal y cambian su comportamiento en
función de estas. El directorio principal del usuario es determinado por el valor de la variable de entorno «$HOME».
valor de «$HOME»//root

características de ejecución del programa
programa ejecutándose por el proceso init (demonio)
programa ejecutándose desde el intérprete de órdenes del superusuario
programa ejecutándose desde el intérprete de órdenes de un usuario
normalprograma ejecutándose desde el menú en el escritorio gráfico de unusuario normal
programa ejecutándose como superusuario con «sudo programa»
programa ejecutándose como superusuario con «sudo -H
programa»/home/usuario_normal/home/usuario_normal/home/usuario_normal/root

Cuadro 1.20: Relación de valores de «$HOME»

sugerencia
El intérprete de órdenes sustituye «~/» por el directorio principal del usuario actual, esto es, «$HOME/». El intérprete de órdenes sustituye «~foo/» por el directorio principal del usuario foo, a saber, «/home/foo/».

Ver Sección 12.1.5 si $HOME no está disponible para su programa.

1.5.5. Opciones de la línea de órdenes
Algunas órdenes tienen parámetros. Se llaman opciones a los parámetros que comienzan con «-» o «--» y controlan el comportamiento de la orden.
$ dateThu 20 May 2021 01:08:08 AM JST$ date -R
Thu, 20 May 2021 01:08:12 +0900

En este caso, el argumento de la línea de comandos ”-R” cambia el comportamiento de date(1) para mostrar una cadena defecha compatible con RFC2822.

1.5.6. Expansión de un patrón en el intérprete de órdenes
A menudo querrá que una orden afecte a un grupo de archivos sin escribir el nombre de cada uno de ellos. Para cubrir esta
necesidad existe la expansión de patrones de nombres de archivos dentro del intérprete de órdenes glob, (algunas veces también
llamado uso de comodines).
Por ejemplo, intente lo siguiente$ mkdir junk; cd junk; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt$ echo *.txt
1.txt 2.txt$ echo *1.txt 2.txt 3.c 4.h$ echo *.[hc]3.c 4.h$ echo .*. .. .5.txt ..6.txt

30 / 257

Guía de referencia de Debianpatrón
*
.*
?
[…]
[a-z]

descripción de la regla de encaje
nombres de archivos que no comienza con «.»nombres de archivos que comienza con «.»un único carácter
un único carácter que pertenezca al grupo de caracteres entre corchetes
un único carácter con cualquier valor comprendido entre «a» y «z»
un único carácter que no pertenezca al grupo de caracteres encerrados
entre corchetes (excluyendo «^»)[^…]

Cuadro 1.21: Patrones para la expansión de nombres de archivos del intérprete de órdenes$ echo .*[^.]*.5.txt ..6.txt$ echo [^1-3]*
4.h$ cd ..; rm -rf junk

Ver glob(7).
nota
Si prueba «*» en la orden find(1) con «-name» test etc., encajará «.» como parte inicial del nombre de archivo,
al contrario que en la expansión de nombres del intérprete de órdenes . (Funcionalidad nueva de POSIX)

nota
BASH puede cambiar el comportamiento de la expansión de nombres de archivo con sus opciones internas como
«dotglob», «noglob», «nocaseglob», «nullglob», «extglob», etc. Ver bash(1).

1.5.7. Valor devuelto por la orden
Cada orden devuelve su estado de salida en el valor devuelto (en la variable: «$?»).
estado de salida de una orden
éxito
error

valor numérico devuelto
cero, 0diferente de cero, -1

valor lógico devuelto
CIERTO
FALSO

Cuadro 1.22: Códigos de salida de una orden
Por ejemplo, pruebe con lo que se muestra.
$ [ 1 = 1 ] ; echo $?
0$ [ 1 = 2 ] ; echo $?
1

nota
Tenga en cuenta que en el contexto lógico del intérprete de órdenes, éxito es tratado de forma lógica como CIERTO
que tiene un valor 0 (cero). Quizá esto sea poco intuitivo y por ello necesite ser recordado.

31 / 257

Guía de referencia de Debian

expresión de la orden
orden &
orden1 | orden2
orden1 2>&1 | orden2
orden1 ; orden2
orden1 && orden2

orden1 || orden2
orden > fooorden 2> fooorden >> fooorden 2>> fooorden > foo 2>&1
orden < fooorden << delimitador
orden <<- delimitador

descripción
ejecución en segundo plano de la orden en un intérprete de órdenes
hijo
envía a la tubería la salida estándar de la orden1 a la entrada
estándar de la orden2 (se ejecutan de forma concurrente )envía a la tubería la salida estándar y el error estándar de la orden1 ala entrada estándar de la orden2 (se ejecutan de forma concurrente )ejecuta la orden1 y la orden2 de forma secuencial
ejecuta la orden1; y si ha tenido éxito, ejecuta la orden2
secuencialmente (devuelve éxito si tanto la orden1 como laorden2 finalizan con éxito)
ejecuta la orden1; si no tiene éxito, se ejecuta la orden2 de forma
secuencial (devuelve éxito si orden1 o orden2 se ejecutan conéxito)
redirecciona la salida estándar de la orden al archivo foo (y si existe
lo sobreescribe)
redirecciona el error estándar de orden al archivo foo(sobreescribiendolo)redirecciona la salida estándar de orden al archivofoo(concatenándola)redirecciona el error estándar de orden al archivo foo(concatenándola)redirecciona salida estándar y el error estándar de orden al archivofoo
envía a la entrada estándar de orden el contenido del archivo foo
envía a la entrada estándar de orden las líneas siguientes hasta queencuentra un «delimitador» (aquí el documento)
envía a la entrada estándar de la orden las líneas siguientes hasta quese encuentre con el «delimitador» ( en las líneas de entrada lostabuladores al inicio son eliminados)
Cuadro 1.23: Expresiones de una orden

32 / 257

Guía de referencia de Debian

1.5.8. Secuencias de órdenes comunes y redirecciones del intérprete de órdenes
Intentemos recordar las siguientes expresiones como parte de una orden de una única línea.
El sistema Debian es un sistema multitarea. Mediante trabajos en segundo plano se pueden ejecutar por parte de los usuario
múltiples programas desde un único intérprete de órdenes. La gestión de los procesos en segundo plano se realiza con las órdenes
internas: jobs, fg, bg y kill. Por favor, ver las secciones de bash(1) «SIGNALS», «JOB CONTROL» y builtins(1).
Por ejemplo, intente lo siguiente$ </etc/motd pager$ pager </etc/motd$ pager /etc/motd$ cat /etc/motd | pager

Aunque los cuatro ejemplos de redirección del intérprete de órdenes son equivalentes, el último ejemplo ejecuta una orden más
cat y desperdicia recursos sin razón alguna.
El intérprete de órdenes permite abrir archivos utilizando la orden interna exec con un descriptor de archivo arbitrario.
$ echo Hello >foo
$ exec 3<foo 4>bar$ cat <&3 >&4$ exec 3<&- 4>&$ cat bar
Hello# open files# redirect stdin to 3, stdout to 4
# close files

Los descriptores de archivo de 0 a 2 están predefinidos.
dispositivo
stdinstdoutstderrdescripción
entrada estándar
salida estándar
error estándar

descriptor de archivo
0
1
2

Cuadro 1.24: Descriptores de archivos predefinidos

1.5.9. Alias de órdenes
Usted puede definir alias para las órdenes más utilizadas.
Por ejemplo, intente lo siguiente$ alias la=’ls -la’Ahora, «la» funciona como forma corta de «ls -la» la cual muestra una relación de todos los archivos en el formato largo.
Se pueden enumerar los alias existentes mediante alias (ver el epígrafe «SHELL BUILTIN COMMANDS» de bash(1)).
$ alias...
alias la=’ls -la’Se puede determinar la ruta exacta o la identidad de la orden mediante «type» (ver el epígrafe «SHELL BUILTIN COMMANDS»de bash(1)).
Por ejemplo, intente lo siguiente

Guía de referencia de Debian

33 / 257$ type ls
ls is hashed (/bin/ls)$ type lala is aliased to ls -la$ type echo
echo is a shell builtin$ type file
file is /usr/bin/file

En el ejemplo anterior ls fue consultado recientemente y «file» no lo fue, de este modo «ls» está indexado, a saber, el
intérprete de órdenes tiene un registro interno que determina rápidamente la ubicación de la orden «ls».
sugerencia
Ver Sección 9.3.6.

1.6. Operaciones de texto al estilo de Unix
En un entorno de trabajo del estilo de Unix, el tratamiento de texto se realiza mediante el uso de tuberías que unen un conjuntode herramientas para formar una cadena. Esta fue otra de las innovaciones esenciales de Unix.

1.6.1. Herramientas de texto Unix
Algunas herramientas que trabajan con texto son usada muy frecuentemente en un sistema tipo Unix.
No se usan expresiones regulares:• cat(1) concatena archivos y muestra el contenido completo.
• tac(1) concatena archivos y sale en sentido inverso.
• cut(1) selecciona las partes de las líneas y las salidas.
• head(1) muestra la primera parte de los archivos.
• tail(1) muestra la última parte de los archivos.
• sort(1) ordena las líneas de los archivos de texto.
• uniq(1) elimina las líneas duplicadas de un archivo ya ordenado.
• tr(1) traduce o borra caracteres.
• diff(1) compara archivos línea a línea.
La expresión regular básica (BRE) se utiliza por defecto:• ed(1) es un editor de líneas antiguo.
• sed(1) es un editor de flujos.
• grep(1) compara el texto con otros patrones.
• vim(1) es un editor de pantalla.
• emacs(1) es un editor interactivo (en cierta manera amplía BRE).
Las expresiones regulares ampliadas (ERE son utilizadas por:
• awk(1) realiza un simple procesamiento de texto.
• egrep(1) hace coincidencias de los patrones en el texto.
• tcl(3tcl) puede hacer cualquier procesamiento de texto imaginado: Ver re_syntax(3). A menudo se utiliza con tk(3tk).

Guía de referencia de Debian

34 / 257• perl(1) puede hacer cualquier procesamiento de texto que imágenes. Ver perlre(1).
• pcregrep(1) del paquete pcregrep empareja texto con el patrón Perl Compatible Regular Expressions (PCRE).

• python(1) utilizando el módulo re puede realizar cualquier procesamiento de textos imaginable. Ver «/usr/share/doc/pyth
Si no esta seguro de que hacen exactamente estas órdenes, por favor utilice «man orden» para averiguarlo por usted mismo.
nota
El orden de clasificación y la expresión de rango dependen de la configuración regional. Si desea obtener uncomportamiento tradicional para un comando, use la configuración regional C o la configuración regional C.UTF-8
en lugar de la configuración regional normal UTF-8 (ver Sección 8.1).

nota
Las expresiones regulares de Perl(perlre(1)), Perl Compatible Regular Expressions (PCRE) y las expresiones
regulares de Python ofrecidas por su módulo re tienen muchas expresiones comunes a las tradicionales ERE.

1.6.2. Expresiones regulares
Las expresiones regulares son utilizadas por muchas herramientas de procesamiento de texto. Son similares a la expansión denombres de archivo en el intérprete de órdenes, aunque más complicadas y poderosas.
Las expresiones regulares especifican un patrón de encaje y está compuesto por caracteres de texto y metacaracteres.
Un metacarácter es un carácter que tiene un significado especial. Existen dos tendencias principales, BRE y ERE dependiendode cada herramienta de texto, como ya se ha descrito.
Emacs utiliza principalmente el tipo de expresión regular BRE pero se ha ampliado para utilizar «+» y «?» como metacaracterescomo en ERE. De este modo, no es necesario añadirles el prefijo «\» en las expresiones regulares de emacs.
grep(1) puede utilizarse para realizar búsquedas de texto por medio de expresiones regulares.
Por ejemplo, intente lo siguiente$ egrep ’GNU.*LICENSE|Yoyodyne’ /usr/share/common-licenses/GPL
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
Yoyodyne, Inc., hereby disclaims all copyright interest in the program

sugerencia
Ver Sección 9.3.6.

1.6.3. Sustitución de expresiones
En la sustitución de expresiones, algunos caracteres tiene un significado especial.
Para la cadena de sustitución Perl, se utiliza ”$&” en lugar de ”&” y ”$n” en lugar de ”\n”.
Por ejemplo, intente lo siguiente$ echo zzz1abc2efg3hij4 | \sed -e ’s/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/’
zzz=1abc2efg3hij4=$ echo zzz1abc2efg3hij4 | \sed -E -e ’s/(1[a-z]*)[0-9]*(.*)$/=&=/’
zzz=1abc2efg3hij4=$ echo zzz1abc2efg3hij4 | \35 / 257

Guía de referencia de DebianBRE\ . [ ] ^ $ *ERE\ . [ ] ^ $ *\+ \? \( \) \{ \} \|+ ? ( ) { } |
c

c

\c

\c

.

.

^

^

$
\<
\>

$
\<
\>

[abc…][abc…][^abc…][^abc…]

r*

r*

r\+

r+

r\?

r?

r1\|r2

r1|r2\(r1\|r2\)(r1|r2)

descripción de la expresión regularmetacaracteres comunes
En BRE el único metacarácter de escape es«\»
En ERE el único metacarácter diferente de«\» de escapeque encaja con el no metacarácter «c»encaja con un carácter literal «c» incluso si«c» representa un metacarácter
encaja cualquier carácter incluyendo el denueva línea
posición al comienzo de la cadena decaracteres
posición al final de la cadena de caracteres
posición al comienzo de la palabra
posición al final de la palabra
encaja cualquier carácter incluido en«abc...»
coincide con cualquier carácter excepto en”abc...”
encaja con cero o más «r», siendo «r» una
expresión regular
encaja con una o más «r», siendo «r» una
expresión regular
encaja con cero o una «r», siendo «r» una
expresión regular
encaja una de las expresiones regulares «r1»o «r2»
encaja una expresión regular «r1» o «r2» ytratada el resultado como una expresión
regular entre paréntesis

Cuadro 1.25: Metacaracteres para BRE y ERE

expresión sustituida&\ndescripción del texto a reemplazarlo que encaja con la expresión regular (usar \& en emacs)
lo que encaja con la enésima expresión regular entre paréntesis (donde «n» es unnúmero)Cuadro 1.26: Sustitución mediante expresiones regulares

Guía de referencia de Debian

36 / 257

perl -pe ’s/(1[a-z]*)[0-9]*(.*)$/=$&=/’
zzz=1abc2efg3hij4=$ echo zzz1abc2efg3hij4 | \sed -e ’s/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/’
zzzefg3hij4===1abc$ echo zzz1abc2efg3hij4 | \sed -E -e ’s/(1[a-z]*)[0-9]*(.*)$/\2===\1/’
zzzefg3hij4===1abc$ echo zzz1abc2efg3hij4 | \perl -pe ’s/(1[a-z]*)[0-9]*(.*)$/$2===$1/’
zzzefg3hij4===1abc

En la sustitución de texto, en las diferentes herramientas, prestar especial atención al encaje de las expresiones regulares entre
corchetes o paréntesis con las cadenas de caracteres.
Algunos editores permiten la utilización de expresiones regulares para la búsqueda y/o sustitución de texto.
En el intérprete de órdenes se puede escribir una misma orden en varias líneas anteponiendo el caraćter de barra invertida «\» alcarácter de nueva línea que será sustituido por el vacío.
Por favor, consultar las páginas de manual de estas órdenes.

1.6.4. Sustituciones globales mediante expresiones regulares
La orden ed(1) permite sustituir todas las ocurrencias de «LA_EXPRESIÓN_REGULAR» por «EL_TEXTO» en el «archivo».
$ ed file <<EOF,s/FROM_REGEX/TO_TEXT/g
w
q
EOF

La orden sed(1) sustituye todas las ocurrencias de «LA_EXPRESIÓN_REGULAR» por «EL_TEXTO» en el «archivo».
$ sed -i -e ’s/FROM_REGEX/TO_TEXT/g’ file

La orden vim(1) puede sustituir todas las ocurrencias de «LA_EXPRESIÓN_REGULAR» por «EL_TEXTO» en el «archivo»utilizando las órdenes ex(1).
$ vim ’+ %s/FROM_REGEX/TO_TEXT/gc’ ’+update’ ’+q’ filesugerencia
La bandera «c» de la orden anterior hace que se pida la confirmación interactiva de cada una de las sustituciones.

Se pueden procesar varios archivos de forma similar («archivo1», «archivo2» y «archivo3») mediante las expresiones
regulares de vim(1) o perl(1).
$ vim ’+argdo %s/FROM_REGEX/TO_TEXT/gce|update’ ’+q’ file1 file2 file3

sugerencia
La bandera ”e” en lo anterior evita que el error ”No match” rompa un mapeo.

$ perl -i -p -e ’s/FROM_REGEX/TO_TEXT/g;’ file1 file2 file3

Guía de referencia de Debian

37 / 257

En el ejemplo en perl(1), «-i» es para la edición de cada elemento que encaja con el patrón y «-p» se utiliza para repetir laoperación sobre cada uno de los archivos que aparecen como argumentos.
sugerencia
La utilización del parámetro «-i.bak» en vez de «-i» mantiene cada archivo original añadiéndole «.bak» alnombre del archivo. Esto permite deshacer los cambios de forma sencilla si nos hemos equivocado al realizar lasustitución.

nota
ed(1) y vim(1) utiliza BRE; perl(1) utiliza ERE.

1.6.5. Extracción de datos en archivos de texto en forma de tabla
Consideremos un archivo de texto llamado «DPL» con los siguientes campos: nombres de los líderes del proyecto Debian con
anterioridad a 2004 y su fecha de inicio, utilizando como separador el espacio en blanco.
Ian
Murdock
August 1993
Bruce
Perens
April
1996
Ian
JacksonJanuary 1998
Wichert Akkerman January 1999
Ben
Collins
April
2001
Bdale
GarbeeApril
2002
Martin Michlmayr March2003

sugerencia
Ver «Una breve historia de Debian» para conocer quién es el último líder del proyecto Debian.

Awk se utiliza a menudo para obtener datos de este tipo de archivos.
Por ejemplo, intente lo siguiente$ awk ’{ print $3 }’ <DPL
# month started
AugustApril
January
January
April
April
March
$ awk ’($1==”Ian”) { print }’ <DPL
# DPL called Ian
Ian
Murdock
August 1993
Ian
JacksonJanuary 1998
$ awk ’($2==”Perens”) { print $3,$4 }’ <DPL # When Perens started
April 1996

Los intérprete de órdenes, como Bash, puede ser usado para analizar este tipo de archivos.
Por ejemplo, intente lo siguiente$ while read first last month year; doecho $monthdone <DPL... same output as the first Awk example

38 / 257

Guía de referencia de Debian

Aquí la orden interna read usa los caracteres de «$IFS» (separadores internos) para dividir las líneas en palabras.
Si asigna el valor «:» a «$IFS», se puede analizar «/etc/passwd» con el intérprete de órdenes de la forma adecuada.
$ oldIFS=”$IFS”# save old value$ IFS=’:’$ while read user password uid gid rest_of_line; do
if [ ”$user” = ”bozo” ]; thenecho ”$user’s ID is $uid”
fidone < /etc/passwd
bozo’s ID is 1000
$ IFS=”$oldIFS”# restore old value(Para hacer lo mismo con Awk asigne el separador de campos mediante «FS=’:’».)
El intérprete de órdenes utiliza IFS para separar los resultados de la expansión de parámetros, sustitución de órdenes y expansiones
aritméticas. Las palabras entre comillas dobles o simples no se tienen en cuenta en estas operaciones. El valor por defecto de IFS
es la relación espacio, tabulador y nueva_línea.
Tenga cuidado cuando utilice estos trucos en el intérprete de órdenes. Cuando el intérprete de órdenes trabaje en algunas partes
de un archivo de órdenes y su entrada pueden ocurrir cosas extrañas.
$ IFS=”:,”$ echo IFS=$IFS,
IFS=”$IFS”
IFS= , IFS=:,$ date -RSat, 23 Aug 2003 08:30:15 +0200$ echo $(date -R)
Sat 23 Aug 2003 08 30 36 +0200$ unset IFS$ echo $(date -R)Sat, 23 Aug 2003 08:30:50 +0200# use ”:” and ”,” as IFS# echo is a Bash builtin# just a command output# sub shell --> input to main shell# reset IFS to the default

1.6.6. Fragmentos de órdenes utilizados con tuberías
Los fragmentos de órdenes siguientes son muy potentes cuando forman parte de una cadena de órdenes unidas por tuberías.
Un archivo de órdenes de una sola línea puede repetirse sobre varios archivos utilizando find(1) y xargs(1) para realizar tareas
muy complicadas. Ver Sección 10.1.5 y Sección 9.4.9.
Cuando la utilización de órdenes de forma interactiva se complica demasiado debe considerarse escribir un archivo de órdenes(consulte Sección 12.1).

39 / 257

Guía de referencia de Debianfragmento de archivo de órdenes (escrito en
una única línea)find /usr -print
seq 1 100| xargs -n 1 orden| xargs -n 1 echo
| xargs echo
| grep -epatrón_de_expresión_regular| grep -v -epatrón_de_expresión_regular| cut -d: -f3 | awk ’{ print $3 }’| awk -F’\t’ ’{ print $3 }’| col -bx
| expand | sort| uniq
| tr ’A-Z’ ’a-z’| tr -d ’\n’
| tr -d ’\r’
| sed ’s/^/# /’| sed ’s/\.ext//g’| sed -n -e 2p| head -n 2 | tail -n 2 -efecto de la orden
lista todos los archivos que se encuentran por debajo de «/usr»
escribe del 1 al 100
ejecuta la orden de forma repetida para cada elemento de la tubería yutilizando este como argumento
divide los elementos de la tubería separados por espacios en líneas
une todas la líneas de la tubería en una
selecciona las líneas de la tubería que encajan con elpatrón_de_expresión_regularselecciona las líneas de la tubería que no tienen encaje con elpatrón_de_la_expresión_regularselecciona el tercer campo de cada línea de la tubería utilizando como
separado «:» (archivo de contraseñas etc.)
selecciona el tercer campo de cada línea de la tubería utilizando como
separador espacios en blancoselecciona el tercer campo de cada línea de la tubería utilizando como
separador el tabulador
elimina los retornos de carro y sustituye los tabuladores por espacios
sustituye los tabuladores por espacios
ordena y elimina duplicados
convierte mayúsculas a minúsculas
concatena las líneas en una sola
elimina el retorno de carroañade «#» al comienzo de cada línea
elimina «.ext»
imprime la segunda línea
imprimir las primeras dos líneas
imprime las últimas dos líneas

Cuadro 1.27: Relación de fragmentos de órdenes con tuberías

Guía de referencia de Debian

40 / 257

Capítulo 2

Gestión de paquetes Debiannota
Este capítulo se ha escrito según la última distribución estable, cuyo nombre de publicación es: bookworm.
La fuente de datos del sistema APT se denomina colectivamente lista de fuentes en este documento . Puede definirse en cualquier parte de los archivos ”/etc/apt/sources.list”, ”/etc/apt/sources.list.d/*.list”
o ”/etc/apt/sources.list.d/*.source”.

2.1. Prerequisitos de la gestión de paquetes Debian
2.1.1. Sistema de gestión de paquetes Debian
Debian es una organización constituida por voluntarios que construyen versiones de paquetes binarios precompilados compatibles
basados en software libre y lo distribuyen en su archivo,
El archivo de Debian lo constituyen múltiples nodos espejo a los que se accede por medio de los protocolos HTTP y FTP. También
esta disponible en CD-ROM/DVD.
El actual sistema de gestión de paquetes de Debian que puede utilizar todos estos recursos es Herramienta de empaquetado
avanzada (APT).
El sistema de gestión de paquetes Debian, cuando se usa de forma adecuada desde el archivo, ofrece al usuario la instalación en elsistema de un conjunto de paquetes binarios consistentes. Actualmente existen 74165 paquetes disponibles para la arquitectura
amd64.
El sistema de administración de paquetes de Debian tiene una rica historia y muchas opciones para el programa de usuario defront-end y el método de acceso al archivo de back-end que se utilizará. Actualmente, recomendamos lo siguiente.
apt(8) para todas las operaciones de la línea de órdenes, incluida la instalación, eliminación y actualización de paquetes.
apt-get(8) para llamar desde los archivos de órdenes al sistema de gestión de paquetes de Debian. Es una opción de reserva
en antiguos sistemas Debian en los que apt no esta disponible.
aptitude(8) para la gestión interactiva mediante interfaz de texto para la gestión de los paquetes instalados y búsquedas
sobre los paquetes disponibles

2.1.2. Configuración de paquetes
Estos son algunos puntos clave para la configuración de los paquetes en el sistema Debian.

41 / 257

Guía de referencia de Debianpaquetepopularidad

dpkg

V:912, I:999

apt

V:865, I:999

aptitude

V:48, I:253

tasksel
V:34, I:980
unattended-upgrades
V:182, I:278
gnome-software
synaptic

V:153, I:263
V:46, I:375

apt-utils

V:379, I:998

apt-listchanges

tamaño descripción
sistema de gestión de paquetes de bajo nivel para Debian (basado en
6388
archivos)
Front-end de APT para administrar paquetes con CLI:
4318
apt/apt-get/apt-cache
Front-end de APT para gestionar paquetes de forma interactiva con
4389
consola de pantalla completa: aptitude(8)347Front-end de APT para instalar las tareas seleccionadas: tasksel(8)paquete mejorado de APT, para permitir la instalación automática de
301
actualizaciones de seguridad
3085
Centro de software para GNOME (front-end GUI APT)
7627
gestor de paquetes gráfico (interfaz de GTK APT)
utilidades de APT: apt-extracttemplates(1),1065apt-ftparchive(1) y apt-sortpkgs(1)

V:358, I:872

398

herramienta de notificación de cambios en el histórico de paquetes

apt-listbugs

V:6, I:8477

apt-file

V:17, I:67

89

apt-rdepends

V:0, I:5

39

relación de bugs críticos después de cada instalación APT
utilidad APT para la búsqueda de paquetes —interfaz de línea deórdenesrelación de dependencias recursivas de los paquetes

Cuadro 2.1: Relación de herramientas para la gestión de paquetes de DebianSe respeta la configuración manual del administrador del sistema. Dicho de otra forma, por convenio el sistema de configuraciónde paquetes no realiza configuraciones de manera intrusíva.
Cada paquete viene con su propio archivo de órdenes para su configuración con un interfaz de usuario estándar llamado
debconf(7) que facilita el proceso de la instalación inicial del paquete.
Los desarrolladores de Debian lo hacen lo mejor posible para que tenga una experiencia de actualización perfecta a través delos archivos de órdenes para la configuración del paquete.
Las funcionalidades completas del software empaquetado están disponibles para el administrador del sistema. Sin embargo,
aquellas que representan riesgos para la seguridad están deshabilitadas en la instalación por defecto.
Si manualmente activa un servicio peligroso para la seguridad, será el responsable de los riesgos que contenga.
El administrador del sistema puede realizar manualmente configuraciones esotéricas. Esto puede interferir con los programas
de ayuda estándar que se utilizan para la configuración del sistema.

2.1.3. Precauciones principales
aviso
No mezcle paquetes de diferentes fuentes. Probablemente romperá la consistencia entre paquetes delsistema lo que requiere un conocimiento de su gestión interna, como son el compilador ABI, versiones debibliotecas, funcionalidades de intérpretes, etc.

El administrador del sistema Debian newbie deberías quedarte con la versión stable (estable) de Debian y aplicar sólo las
actualizaciones de seguridad. Hasta que entiendas muy bien el sistema Debian, deberías seguir las siguientes precauciones.
No incluyas testing (pruebas) o unstable (inestable) en la lista de fuentes.
No mezcles Debian estándar con otros archivos no Debian como Ubuntu en la lista de fuentes .
No crees ”/etc/apt/preferences”.

Guía de referencia de Debian42 / 257

No modifiques el comportamiento predeterminado de las herramientas de gestión de los paquetes a través de los archivos dela configuración sin conocer todas sus repercusiones.
No instales paquetes aleatorios mediante ”dpkg -i random_package”.
No instales nunca paquetes aleatorios mediante ”dpkg --force-all -i random_package”.
No borres ni modifiques los archivos de ”/var/lib/dpkg/”.
no sobreescriba el sistema de archivos al instalar software compilado directamente de su código fuente.
• Si lo necesita instálelos en «/usr/local» o «/opt».
Los efectos no compatibles causados por violar las precauciones anteriores al sistema de gestión de paquetes de Debian pueden
dejar tu sistema inutilizable.
Los administradores serios del sistema Debian responsables de los servidores de una misión crítica deben tomar precauciones
adicionales.
No instalar ningún paquete de Debian, incluyendo las actualizaciones de seguridad, sin probarlo con su configuración especifica
en un entorno seguro.
• Al final, tu como administrador del sistema, eres el responsable de tu sistema.
• el largo historial de estabilidad del sistema Debian no es una garantía por sí misma.

2.1.4. Conviviendo con actualizaciones continuas
atención
Para sus servidores de producción es recomendable la distribución stable (estable) con sus actualizaciones de seguridad. También es recomendable para los equipos de escritorio a los que quiera dedicar
poco tiempo en su administración.

A pesar de mis advertencias anteriores, muchos lectores de este documento pueden desear ejecutar las suites testing (pruebas)
o unstable (inestable) más nuevas.
La iluminación de las siguientes secciones salva a las personas de la eterna lucha kármica de actualizar el infierno y las dejan
llegar al nirvana de Debian.
Esta lista está destinada al entorno de escritorio self-administered.
Utilice la suite testing ya que es prácticamente la versión rolling -continua- gestionada automáticamente por la infraestructura de control de calidad del archivo de Debian, como la integración continua de Debian, la prácticas de carga solo de fuente,y el seguimiento de transición de biblioteca. Los paquetes de la suite testing se actualizan con la suficiente frecuencia para
ofrecer las funciones más recientes.
Establece el nombre de código correspondiente al conjunto testing (”trixie” durante el ciclo de publicación bookwormas-stable) en la lista de las fuentes.
Actualiza manualmente este nombre en clave en la lista de fuentes al nuevo solo después de evaluar la situación durante aproximadamente un mes después del lanzamiento de la suite principal. La lista de los correos de los usuarios y los desarrolladoresde Debian también es una buena fuente de información para esto.
No se recomienda el uso de la suite inestable. La suite inestable es buena para depurar paquetes como desarrolladorpero tiende a exponerle a riesgos innecesarios para el uso normal del escritorio. Aunque la suite inestable del sistema Debianparece muy estable la mayoría de las veces, ha habido algunos problemas con paquetes y algunos de ellos no eran tan triviales deresolver.
Aquí algunas ideas de las medidas de precaución básicas para asegurar una recuperación rápida y fácil de los fallos en los paquetes
Debian.

Guía de referencia de Debian43 / 257

Hacer el sistema de arranque dual instalando la suite stable del sistema Debian en otra partición.
Ten a mano el CD de instalación para un arranque de recuperación del sistema.
Considera instalar apt-listbugs para comprobar la información del Sistema de seguimiento de errores de Debian (BTS)
antes de la actualización.
Aprender la infraestructura del sistema de los paquetes lo suficiente como para solucionar un problema

atención
Si no puede tomar ninguna de estas precauciones, probablemente no estés listo para las versiones deprueba e inestables.

2.1.5. Fundamentos del archivo de Debiansugerencia
Las directrices oficiales del archivo de Debian están definidas en el Manual de Directrices Debian, Capítulo 2 - Elarchivo de Debian.

Examinemos el archivo de Debian desde el punto de vista de un usuario del sistema.
Para un usuario del sistema, se accede al archivo de Debian usando el sistema APT.
El sistema APT especifica tu fuente de datos como la lista de fuentes y se describe en sources.list(5).
Para el sistema bookworm con el típico acceso HTTP, la lista de las fuentes al estilo de una línea como la siguiente:deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-freedeb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-freedeb http://security.debian.org/debian-security bookworm-security main non-free-firmware ←contrib non-freedeb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware ←contrib non-free

Alternativamente, la lista de fuentes equivalentes al estilo de deb822 es como el siguiente.
Types: deb deb-src
URIs: http://deb.debian.org/debian/Suites: bookworm
Components: main non-free-firmware contrib non-free
Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: bookworm-security
Components: main non-free-firmware contrib non-free

Los puntos clave de las listas de las fuentes son los siguientes.
Formato de una sola línea• Tus archivos con la definición se encuentran en los archivos ”/etc/apt/sources.list” y ”/etc/apt/sources.list.d/• Cada línea define la fuente de los datos para el sistema APT.
• La línea ”deb” define el paquete binario.
• La línea ”deb-src” define los paquetes fuente.

Guía de referencia de Debian

44 / 257• El primer argumento es la URL root del archivo de Debian.
• El segundo argumento es el nombre de la distribución utilizando el nombre de la suite o el nombre en clave.
• el tercero y siguientes son la relación de nombres de área válidos del archivo de Debian.
El estilo del formato es Deb822• Tus definiciones se encuentran en los archivos ”/etc/apt/sources.list.d/*.source”.
• Cada bloque de líneas separado por una línea en blanco define la fuente de los datos para el sistema APT.
• La estrofa ”Types:” define la lista de tipos como ”deb” y ”deb-src”.
• La estrofa ”URIs:” define la lista de URIs raíz del archivo de Debian.
• La estrofa ”Suites:” define la lista de los nombres de la distribución utilizando el nombre de la suite o el nombre en clave.
• La estrofa ”Components:” define la lista de los nombres del área de los archivos válidos de Debian.
La definición para ”deb-src” puede omitirse con seguridad si es sólo para aptitude que que no accede a los metadatos
relacionados con la fuente. Acelera las actualizaciones de los metadatos del archivo.
La dirección URL puede ser ”https://”, ”http://”, ”ftp://”, ”file://”, ....
Las líneas que empiezan por ”#” son comentarios y se ignoran.
Aquí, tiendo a usar el nombre de código ”bookworm” o ”trixie” en lugar del nombre de la suite ”stable” (estable) o”testing” (pruebas) para evitar sorpresas cuando se publique el siguiente stable (estable).
sugerencia
Si se utiliza ”sid” en el ejemplo anterior en lugar de ”bookworm”, la línea ”deb:
http://security.debian.org/ ...” o su contenido equivalente en deb822 para las actualizaciones
de seguridad en la lista de fuentes no es necesaria. Esto se debe a que no existe un archivo de actualizaciones
de seguridad para ”sid” (inestable).

Aquí está la lista de direcciones URL de las páginas del archivo de Debian y el nombre de la suite o nombre del código usado enel fichero de configuración después de la publicación de bookworm.
atención
Sólo la versión stable (estable) pura con actualizaciones de seguridad proporciona la mejor estabilidad.
Ejecutar principalmente la versión stable (estable) mezclada con algunos paquetes de testing (pruebas) o unstable (inestable) es más arriesgado que ejecutar la versión unstable (inestable) pura por
desajuste de versiones de librerías, etc. Si realmente necesita la última versión de algunos programas dela versión stable (estable), utilice los paquetes de los servicios stable-updates y backports (consulte Sección 2.7.4). Estos servicios deben utilizarse con especial cuidado.

atención
Por defecto debería tener únicamente una de las distribuciones stable (estable), testing (pruebas)
o unstable (inestable) en la línea «deb». Si se tiene en línea «deb» una combinación de las distribuciones stable (estable), testing (pruebas) e unstable (inestable) los programas APT son máslentos y sólo la última distribución es útil. El uso de múltiples distribuciones requiere utilizar el archivo«/etc/apt/preferences» con un fin específico (consulte Sección 2.7.7).

sugerencia
Para el sistema Debian con la suite stable (estable), es una buena idea incluir el contenido con”http://security.debian.org/” en la lista de las fuentes para habilitar las actualizaciones de seguridad
como en el ejemplo anterior.

45 / 257

Guía de referencia de Debian

URL del archivo
https://deb.debian.org/debian/https://deb.debian.org/debian/https://deb.debian.org/debian/https://deb.debian.org/debian/https://deb.debian.org/debian/nombre delpaquetenombrede pufinalidad del repositorio
blicación

stablebookworm
Liberación stable cuasiestática tras exhaustivas comprobaciones

testing

trixieunstablesid«experimental»
N/A

Liberación dinámica de testing tras comprobaciones decentes ycortas esperas
Liberación dinámica unstable tras comprobaciones mínimas y sin
esperasExperimentos previos al lanzamiento por parte de los desarrolladores(opcional, sólo para desarrolladores)

stable-proposed-updates
bookworm-proposed-updates
Actualizaciones para la próxima versión stable (opcional)

Subconjunto del conjunto stable-proposed-updates que
https://deb.debian.org/stable-updates
bookworm-updates
necesita actualizaciones urgentes, como los datos de la zona horaria
debian/(opcional)
https://deb.debian.org/Colección aleatoria de paquetes recompilados, principalmente de lastable-backports
bookworm-backports
debian/versión testing (opcional)
http://security.debian.org/stable-security
bookworm-security
Actualizaciones de seguridad para la versión stable (importante)
debian-security/
http://security.debian.org/testing-security
trixie-security
El equipo de seguridad no lo utiliza ni lo apoya activamente
debian-security/
Cuadro 2.2: Relación de sitios de archivo de Debiannota
El equipo de seguridad de Debian soluciona los problemas de seguridad de la distribución stable (estable). Su
actividad es muy rigurosa y fiable. En la distribución testing (pruebas) las solucionan el equipo de seguridad
de Debian en pruebas. Por diferentes razones su actividad no es tan rigurosa como en la distribución stable(estable) y puede que tenga que esperar a la migración o la corrección de los paquetes de unstable (inestable).
Los problemas de seguridad de la distribución unstable (inestable) los corrigen los desarrolladores individuales.
Los paquetes de la distribución unstable (inestable) mantenidos habitualmente suelen estar en buen estado
aprovechando las últimas soluciones de seguridad ascendentes. Consulte Debian security FAQ para conocer
como se gestionan los problemas de seguridad en Debian.

área
main

número de paquetes
72806

non-free-firmware 39
contrib356

non-free964

criterio de componente del paqueteCompatible con DFSG y sin dependencia de non-free
no compatible con DFSG, firmware necesario para una experiencia
razonable de la instalación del sistema
cumplen con DFSG pero con dependencias con non-free
No cumple con las Directrices de software libre de Debian (DFSG) yno está en non-free-firmware

Cuadro 2.3: Relación de áreas de archivo Debian
El número de paquetes que se indica es para la arquitectura amd64. El área main proporciona el sistema Debian (consulte
Sección 2.1.6).
Al navegar por cada URL junto a dists o pool conocerá mejor la organización del archivo de Debian.
Se puede nombrar una distribución de dos formas, por la distribución o nombre de publicación. La palabra distribución se usa
alternativamente como sinónimo de la suite en muchas documentaciones. La relación entre la suite y el nombre en clave se puede
resumir de la siguiente manera.

46 / 257

Guía de referencia de Debian

Momentodespués de la publicaciónde bookworm
después de la publicaciónde trixie

distribución = stable(estable)nombre de publicación =bookworm
nombre de publicación =trixiedistribución = testing(pruebas)nombre de publicación =trixienombre de publicación =forky

distribución = unstable(inestable)
nombre de publicación =sidnombre de publicación =sidCuadro 2.4: Relación entre los nombres de publicación y distribución
La historia de los nombres de publicación se cuenta en ¿Debian FAQ: 6.2.1 Qué otros nombres clave se han usado en el pasado?
En la terminología de archivo de Debian de forma estricta, se usa la palabra «sección» especificamente para la categorización depaquetes por el tipo de aplicación. (Sin embargo las palabras «sección principal» algunas veces es usado para describir el área delarchivo Debian llamado «main».)Cada vez que un desarrollador Debian (DD) realiza una nueva entrega a la distribución «inestable» (a través del procesamiento de entrada), se le pide que se asegure que la entrega de paquetes sea compatible con el último conjunto de paquetes de ladistribución «inestable».
Si un desarrollador de Debian con su actualización rompe la compatibilidad de alguna biblioteca importante de forma intencionada
etc, normalmente se anuncia en la lista de correo de desarrollo (debian-devel mailing list) etc.
Después de que un conjunto de paquetes se han movido de forma automática desde la distribución «inestable» a la distribución «en pruebas» el archivo de órdenes de mantenimiento que lo movió comprueba su madurez (más de 2-10 días deantigüedad), el estado RC de los informes de errores de los paquetes y comprueba su compatibilidad con el último conjunto depaquetes de la distribución «en pruebas». Este proceso hace que la distribución «en pruebas» este actualizada y se pueda
utilizar.
Durante el proceso gradual de estabilización del archivo, liderado por el equipo de publicación, la distribución testing (pruebas)
se va corrigiendo por medio de intervenciones manuales para hacerla completamente consistente y libre de errores. Entonces secrea la nueva distribución stable (estable) asignándole a esta el nombre de publicación de la antigua distribución testing(pruebas). También se crea un nuevo nombre de publicación para la nueva distribución testing (pruebas). El contenido inicial
de la nueva distribución testing (pruebas) es exactamente el mismo que el de la nueva versión de la distribución stable(estable).
Tanto los repositorios unstable (inestable) como los testing (pruebas) pueden sufrir fallos temporales causados por varios
factores.
Los paquetes rotos se suben al repositorio (ver unstable (inestable) )Retrasos en la recepción de nuevos paquetes para archivar (principalmente para unstable (inestable))
Problemas con el tiempo de sincronización de los archivos (tanto para testing (pruebas) como los unstable (inestable))
acciones manuales sobre el archivo como la eliminación de paquetes (generalmente para testing (pruebas)) etc.
Así que si decide usar esos archivos, debe ser capaz de arreglar o indagar sobre este tipo de problemas.
atención
Durante unos pocos meses después de una nueva versión stable, la mayoría de los usuarios de escritorio
deberían usar el archivo stable con sus actualizaciones de seguridad incluso si normalmente usan losarchivos unstable o testing. Para este periodo de transición, tanto los archivos unstable como losarchivos testing no son buenos para la mayoría de la gente. Es difícil mantener su sistema en buenas
condiciones de funcionamiento con el archivo unstable ya que sufre oleadas de actualizaciones importantes para los paquetes principales. El archivo testing tampoco es útil ya que contiene casi el mismo
contenido que el archivo stable sin su soporte de seguridad (Debian testing-security-announce 2008-12).
Después de un mes más o menos, los archivos unstable o testing pueden llegar a ser útiles si se tiene
cuidado.

Guía de referencia de Debian

47 / 257

sugerencia
Al utilizar la distribución «en pruebas» el problema causado por la eliminación de un paquete normalmente sesoluciona temporalmente instalando el paquete correspondiente la distribución «inestable» que se carga paracorregir el error.

Ver el Manual de Directrices Debian para obtener más información sobre las definiciones del archivo.
«Secciones»«Prioridades»«Sistema base»«Paquetes esenciales»

2.1.6. Debian es 100 % software libre
Debian es 100 % software libre ya que:Debian instala por defecto únicamente software libre para respetar las libertades del usuario.
Debian proporciona únicamente software libre en el área principal.
Debian recomienda ejecutar únicamente el software libre del área principal.
Ningún paquete en principal depende ni recomienda paquetes en no libre ni el firmware no libre ni contribución.
Alguna se pregunta si los dos hechos siguientes se contradicen entre sí.
«Debian se mantendrá 100 % libre». (Es la primera claúsula del Contrato Social de Debian)Los servidores Debian alojan algunos paquetes non-free-firmware, non-free y contrib.
Estos no se contradicen, por lo siguiente.
el sistema Debian es 100 % libre y sus paquetes son albergados por los servidores Debian en el área principal
Los paquetes fuera del sistema Debian están alojados en los servidores de Debian en las áreas non-free, non-free-firmware
y contrib.
Se explica de forma precisa en las claúsulas cuarta y quinta del Contrato Social de Debian:
Nuestra prioridad son nuestros usuarios y el software libre• Nos guiaremos por las necesidades de nuestros usuarios y de la comunidad del software libre. Sus intereses serán una prioridad
para nosotros. Daremos soporte a las necesidades de nuestros usuarios para que puedan trabajar en muchos tipos distintos
de entornos de trabajo. No pondremos objeciones al software no libre que vaya a ejecutarse sobre Debian ni cobraremos
a las personas que quieran desarrollar o usar ese tipo de software (no libre). Permitiremos a otros crear distribuciones devalor añadido basadas en Debian sin cobrarles nada por ello. Es más, entregaremos un sistema integrado de alta calidad sin
restricciones legales que pudieran prevenir este tipo de uso.
Trabajos que no siguen nuestros estándares de software libre• Reconocemos que algunos de nuestros usuarios requieren el uso de trabajos que no se ajustan a las Directrices de Software
Libre de Debian. Hemos creado las áreas ”non-free”, ”non-free-firmware” y ”contrib” en nuestro archivo paraestos trabajos. Los paquetes de estas áreas no forman parte del sistema Debian, aunque han sido configurados para su uso con
Debian. Animamos a los fabricantes de CDs a que lean las licencias de los paquetes en estas áreas y determinen si pueden
distribuir los paquetes en sus CDs. Así, aunque los trabajos que no son libres no forman parte de Debian, apoyamos su uso yproporcionamos infraestructura para los paquetes que no son libres (como nuestro sistema de seguimiento de fallos y listasde correo). Los medios oficiales de Debian pueden incluir firmware que no forma parte del sistema Debian para permitir el
uso de Debian con hardware que requiera dicho firmware.

Guía de referencia de Debian

48 / 257nota
El texto actual del 5º término en el actual Contrato Social Debian 1.2 es ligeramente diferente del texto anterior.
Esta desviación editorial es intensional para hacer este documento de usuario sin cambiar el contenido real delContrato Social.

Los usuarios deben ser conscientes de los riesgos de utilizar paquetes de las zonas non-free, non-free-firmware ycontrib:
restricciones a la libertad con dichos paquetes
falta de soporte de Debian para dichos paquetes (Debian no puede ayudar al software propietario por no tener acceso a su
código fuente)contagio al 100 % del sistema libre Debian
Las Directrices de Software Libre Debian son los estándares del software libre de Debian. Debian entiende «software» en unámbito amplio, incluidos los documentos, firmware, logotipos y materia gráfico de los paquetes. Esto hace que el estándar desoftware libre de Debian sea uno de los más estrictos.
Los paquetes típicos non-free, non-free-firmware y contrib incluyen paquetes de libre distribución de los siguientes
tipos:
paquetes de documentación que cumplen la Licencia de Documentación Libre GNU con secciones fijas como las de GCC y
Make (la mayor parte se encuentran en la secciónnon-free/doc.)
Paquetes de firmware que contienen datos binarios sin fuente como los listados en Sección 9.10.5 como non-free-firmware.
(La mayoría se encuentran en la sección non-free-firmware/kernel).
paquetes de juegos y tipos de letra con restricciones para su uso comercial y/o modificación de su contenido
Por favor, ten en cuenta que el número de paquetes non-free, non-free-firmware y contrib es inferior al 2 % delos paquetes main. Permitir el acceso a las áreas non-free, non-free-firmware y contrib no oculta el origen delos paquetes. El uso interactivo a pantalla completa de aptitude(8) le proporciona visibilidad completa y control sobre qué
paquetes se instalan y desde qué área lo hacen. Para mantener tu sistema tan libre como desees.

2.1.7. Dependencias de paquetes
El sistema Debian proporciona un conjunto consistente de paquetes binarios a través de un mecanismo de declaración de dependencia binaria versionada en sus campos de archivo de control. Aquí hay algunas definiciones simples de ellos.
«Depende» (Depends)• Declara una dependencia obligatoria y es obligatorio que todos los paquetes enumerados sean instalados al mismo tiempo oque estén instalados previamente.
«Predepende» (Pre-depends)• Son como las dependencias, con la excepción de que es obligatorio que estén instalados completamente con anterioridad.
«Recomienda» (Recommends)• Determina una dependencia fuerte, pero no obligatoria. La mayoría de los usuarios no querrán instalar el paquete al menos
que todos los paquetes enumerados en este campo estén instalados.
«Sugiere»• Declara una dependencia débil. Muchos usuario podrían beneficiarse de su instalación si bien tendrán una funcionabilidad
suficiente sin ellos.

Guía de referencia de Debian

49 / 257«Mejora» (Enhances)• Declara una dependencia débil como Sugerida pero va en la dirección contraria.
«Rompe» (Breaks)• Declara una incompatibilidad, generalmente con una versión concreta. La solución más común es actualizar todos los paquetes que se encuentran enumerados en este campo.
«Incompatibles» (Conflicts)• Declara su total incompatibilidad. Todos los paquetes enumerados en este campo deben ser eliminados para conseguir instalar
el paquete.
«Sustituye» (Replaces)• Se declara cuando los archivos instalados por el paquete sustituyen a los archivos de los paquetes que se enumeran.
«Proporciona» (Provides)• Se declara cuando el paquete proporciona todos los archivos y funcionalidades de los paquetes enumerados.
nota
Tener en cuenta, que lo correcto es definir «Proporciona», «Imcompatible» y «Sustituye» a la vez en el caso de unpaquete virtual. Esto asegura que solo un paquete real que proporciona el virtual puede ser instalado a la vez.

La definición «oficial», incluyendo la dependencia del código fuente, está en Manual de directrices de Debian: Capítulo 7 Declaración de relaciones entre paquetes.

2.1.8. Flujo de hechos de las órdenes de gestión de paquetes
Aquí hay un resumen del flujo de hechos simplificado del manejo de un paquete por parte de APT.
«Update» («apt update», «aptitude update» o «apt-get update»):
1. Recupera los metadatos del archivo remoto
2. Reconstruye y actualiza la copia local de los metadatos del archivo que utiliza APT«Upgrade» («apt upgrade» y «apt full-upgrade» o «aptitude safe-upgrade» y «aptitude full-upgrade»o «apt-get upgrade» y «apt-get dist-upgrade»):1. Seleccione una versión candidata, que instala paquetes que suelen ser las últimas versiones disponibles (consulte Sección 2.7.7 para conocer las excepciones)
2. Realiza la resolución de dependencias del paquete
3. Recupera del archivo remoto los paquetes binarios que se han seleccionado si la versión candidata es diferente de laversión instalada
4. Desempaqueta los paquetes binarios recuperados
5. Ejecuta el archivo de órdenes preinst
6. Instala los archivos binarios
7. Ejecuta el arhivo de órdenes postinst«Install» («apt install …», «aptitude install …» o «apt-get install …»):
1. Selecciona los paquetes enumerados en la línea de comando
2. Realiza la resolución de dependencias del paquete
3. Recupera del repositorio remoto los archivos binarios que se han seleccionado

50 / 257

Guía de referencia de Debian

4. Desempaqueta los paquetes binarios recuperados
5. Ejecuta el archivo de órdenes preinst
6. Instala los archivos binarios
7. Ejecuta el arhivo de órdenes postinst«Remove» («apt remove …», «aptitude remove …» o «apt-get remove …»):
1. Selecciona los paquetes enumerados en la línea de comando
2. Realiza la resolución de dependencias del paquete
3. Ejecuta el archivo de órdenes prerm
4. Elimina los archivos instalados excepto los archivos de configuración
5. Ejecuta el archivo de órdenes postrm«Purge» («apt purge …», «aptitude purge …» o «apt-get purge …»):
1. Selecciona los paquetes enumerados en la línea de comando
2. Realiza la resolución de dependencias del paquete
3. Ejecuta el archivo de órdenes prerm
4. Elimina los archivos instalados incluidos los archivos de configuración
5. Ejecuta el archivo de órdenes postrm
Aquí, se han omitido de forma intencionada los detalles técnicos por el bien del panorama general.

2.1.9. Soluciones a problemas básicos en la gestión de paquetes

Se debe leer la excelente documentación oficial. El primer documento a leer es el específico de Debian ”/usr/share/doc/package_También otra documentación en ”/usr/share/doc/package_name/”. Si se configura el shell en Sección 1.4.2, ingresar
los siguientes comandos.
$ cd package_name$ pager README.Debian$ mc

Para obtener información especifica puede que necesite instalar el paquete de documentación correspondiente con el sufijo«-doc».
Si tiene problemas con un paquete concreto, asegúrese de comprobar primero el sistema de seguimiento de errores Debian (BTS).
sitio web
Página principal de el sistema deseguimiento de errores Debian(BTS)
El informe de errores con elnombre de un paquete
El informe del error, si se conoce
su número de error

orden
sensible-browser «https://bugs.debian.org/»
sensible-browser«https://bugs.debian.org/nombre_del_paquete»
sensible-browser«https://bugs.debian.org/número_de_error»

Cuadro 2.5: Relación de los principales sitios web para resolver problemas de un paquete concreto

Búsqueda en Google incluyendo alguno de los siguientes criterios de búsqueda «site:debian.org», «site:wiki.debian.org»«site:lists.debian.org», etc.
Cuando presente un informe de error, por favor utilice la orden reportbug(1).

Guía de referencia de Debian

2.1.10.

51 / 257

Como seleccionar paquetes DebianCuando encuentre más de 2 paquetes similares y se pregunte cuál instalar sin el esfuerzo de ”prueba y error”, hay que aplicar elsentido común para juzgar cuándo no sabe cuál instalar sin intentos repetidos. Creo que los siguientes puntos son las características que debe tener el paquete preferido.
Esencial: si > noÁrea: main > contrib > non-freePrioridad: required > important > standard > optional > extra
Tareas: paquetes enumerados como tareas como «Entorno de escritorio«
Los paquetes se eligen por paquetes que dependen de ellos (por ejemplo, gcc depende de gcc-10)
Estadísticas: a mayor número de votos e instalaciones
Registro de cambios: actualizaciones regulares del desarrollador
BTS: sin errores RC (ni críticos, ni graves, ni errores leves)
BTS: atención ofrecida por el desarrollador a los informes de errores
BTS: mayor número de errores solucionados recientemente
BTS: menor número de errores que no sean nuevas funcionalidades
Debian comenzó como un proyecto voluntario con un modelo de desarrollo distribuido, sus repositorios contienen muchos paquetes con diferentes objetivos y calidad. Se deben tomar las decisiones propias acerca de qué hacer con ellos.

2.1.11. Cómo hacer frente a requisitos contradictorios
Cualquiera que sea la suite del sistema Debian que decidas usar, puede que aún desees ejecutar las versiones de los programas
que no están disponibles en esa suite. Incluso si encuentras paquetes de dichos programas en otras suites de Debian o en otros
recursos no Debian, sus requisitos pueden entrar en conflicto con tu sistema Debian actual.
Aunque puedes modificar el sistema de gestión de los paquetes con la técnica apt-pinning, etc., tal y como se describe en
Sección 2.7.7 para instalar estos paquetes binarios desincronizados, estos métodos de modificación sólo tienen un uso limitado,
ya que pueden romper estos programas y tu sistema.
Antes de instalar a la fuerza estos paquetes desincronizados, deberías buscar todas las soluciones alternativas más seguras disponibles que sean compatibles con tu sistema Debian actual.
Instala estos programas utilizando los correspondientes paquetes binarios ”sandboxed” (vera Sección 7.7).
• Muchos programas, en su mayoría GUI, como LibreOffice y las aplicaciones GNOME, están disponibles como paquetes
Flatpak, Snap, o AppImage.
Crea un entorno chroot o similar y ejecuta dichos programas en él (consulta Sección 9.11).
• Los comandos CLI se pueden ejecutar fácilmente bajo chroot compatible (ver Sección 9.11.4).
• Se pueden probar fácilmente múltiples entornos de escritorio y completos sin reiniciar (ver Sección 9.11.5).
Construye tu mismo las versiones que deseas de los paquetes binarios que sean compatibles con tu sistema Debian actual.
• Se trata de una tarea no trivial (vere Sección 2.7.13).

52 / 257

Guía de referencia de Debian

2.2. Operaciones básicas de la gestión de paquetes
Un sistema Debian dispone de diferentes herramientas basadas en APT para llevar a cabo las operaciones de gestión de paquetes. En este documento explicaremos tres herrramientas básicas para la gestión de paquetes: apt, apt-get / apt-cache yaptitude.
Para realizar las operaciones de gestión de paquetes que incluyen su instalación o la actualización de su metainformación necesitará
privilegios de superusuario.

2.2.1. apt vs. apt-get / apt-cache vs. aptitude
A pesar de que aptitude es una herramienta interactiva muy amigable que utilizo personalmente por defecto, debe tener encuenta algunas advertencias:la orden aptitude no es recomendable para actualizaciones del sistema entre distribuciónes del sistema Debian stable(estable) tras la publicación de una distribución nueva .
• Está recomendado la utilización de «apt full-upgrade» o «apt-get dist-upgrade». Ver el Error #411280.
La orden aptitude algunas veces recomienda la eliminación masiva de paquetes para la actualización del sistema Debian
testing (pruebas) o unstable (inestable).
• Esta situación ha aterrado a muchos administradores de sistema. No se asuste.
• Parece causado principalmente por la distorsión de dependencias o recomendaciones de paquetes por metapaquetes como
gnome-core.
• Se resuelve eligiendo «Cancel pending actions» en el menú de órdenes de aptitude, saliendo de aptitude y utilizando«apt full-upgrade».
Las órdenes apt-get y apt-cache son las herramientas más básicas basadas en APT para la gestión de paquetes .
apt-get y apt-cache ofrecen únicamente interfaz de usuario por línea de órdenes.
apt-get es más adecuado para la actualización principal del sistema entre distribuciones, etc.
apt-get tiene un motor robusto para la resolución de dependencias entre los paquetes.
apt-get necesita menos recursos «hardware». Utiliza menos memoria y se ejecuta más rápido.
apt-cache tiene un sistema estándar de búsqueda que utiliza expresiones regulares sobre el nombre y la descripción delpaquete.
apt-get y apt-cache permiten gestionar varias versiones de mismo paquete utilizando /etc/apt/preferencesaunque es bastante difícil de manejar.
La orden apt es un interfaz de alto nivel para la gestión de paquetes desde la línea de órdenes. Es un recubrimiento de apt-get,
apt-cache y órdenes parecidas ideado para ser utilizado por el usuario final y mejorar por defecto algunas opciones de usointeractivo.
apt tiene una barra de progreso cuando se instalan paquetes mediante apt install.
por defecto apt borra los paquetes .deb descargados en la caché después de instalarlos con éxito
sugerencia
Se recomienda la utilización de la nueva orden apt(8) para el uso interactivo
apt-cache(8) para los archivos de órdenes.

y utilizar apt-get(8) yGuía de referencia de Debian

53 / 257

La orden aptitude es la herramienta de gestión de paquetes basada en APT más flexible.
aptitude tiene un interfaz de usuario interactivo a pantalla completa.
aptitude también posee un interfaz de usuario por línea de órdenes.
aptitude esta más pensado para operaciones de la gestión interactiva de paquetes diaria como examinar los paquetes
instalados y buscar entre los paquetes disponibles.
aptitude necesita más recursos «hardware». Utiliza más memoria y se ejecuta más lentamente.
aptitude tiene un sistema de búsqueda mejorado basado en expresiones regulares sobre metainformación de paquetes.
aptitude permite gestionar múltiples versiones de paquetes sin utilizar /etc/apt/preferences y es muy intuitivo.

2.2.2. Operaciones básicas de gestión de paquetes utilizando la línea de órdenes
Aquí están algunas operaciones básicas para la gestión de paquetes por medio de la línea de órdenes utilizando apt(8), aptitude(8)y apt-get(8) /apt-cache(8).
apt / apt-get y aptitude se pueden mezclar sin más problemas.
La orden «aptitude why expresión_regular» puede mostrar mas información si se utiliza «aptitude -v why
expresión_regular». Utilizando «apt rdepends paquete» o «apt-cache rdepends paquete» se puede obtener información parecida.
Cuando se ejecuta la orden aptitude en modo de línea de órdenes y aparece algún problema como un conflicto entre paquetes,
si pulsa la tecla «e» como respuesta al cursor puede cambiar al modo interactivo a pantalla completa.
nota
Aunque la orden aptitude proporciona funcionalidades sofisticadas como un mejor motor de resolución de dependencias de paquetes, su complejidad ha causado (y todavía puede causar) algunos problemas como el Error#411123, el Error #514930 y el Error #570377. En caso de duda, por favor, utilice las órdenes apt, apt-get y
apt-cache en vez de la orden aptitude.

Puede añadir opciones después de la orden «aptitude».
Para más información consulte aptitude(8) y «aptitude user’s manual» en «/usr/share/doc/aptitude/README».

2.2.3. Uso interactivo de aptitude
Para la administración de paquetes interactivos, inicia aptitude en modo interactivo desde el indicador de shell de la consolade la siguiente manera.
$ sudo aptitude -u
Password:

Con esto actualiza la copia local del archivo y muestra la relación de paquetes en un menú a pantalla completa. La configuraciónde aptitude está en «~/.aptitude/config».
sugerencia
Si deseas utilizar la configuración de root en lugar de la de usuario, utiliza ”sudo -H aptitude ...” en lugarde ”sudo aptitude ...” en la expresión anterior.

sugerencia
Aptitude automaticamente ejecuta las acciones pendientes como si hubiera empezado en modo interactivo.
Si esto no le gusta, puede inicializarlo desde el menú: «Acción» → «Cancelar las acciones pendientes».

54 / 257

Guía de referencia de Debian

Sintaxisdedescripción
apt-get/apt-cache
aptitudeapt-getapt update
actualiza la metainformación de los paquetes
updateupdateaptitudeapt-getapt install foo installinstallinstala la versión candidata del paquete «foo» y sus dependecias
foo
foo
aptitudeapt-getactualiza los paquetes ya instalados a las nuevas versiones candidatas
apt upgradesafe-upgrade
upgradesin eliminar ningún paquete
aptaptitudeapt-getactualiza los paquetes ya instalados a las nuevas versiones candidatas
full-upgrade
full-upgrade
dist-upgradey elimina los paquetes que necesite
aptitudeapt-getapt remove foo
removeremove elimina el paquete «foo» sin eliminar sus archivos de configuraciónfoo
foo
apt-getapt autoremove
N/A
elimina los paquetes autoinstalados que ya no son necesarios
autoremove
apt-getaptitudeapt purge foo
purge elimina el paquete «foo» y sus archivos de configuración
purge foo
foo
aptitudeapt-getlimpia por completo el repositorio local de los archivos de paquetes
apt clean
clean
clean descargados
aptitudeapt-getlimpia el repositorio local de los archivos de paquetes descargados
apt autoclean
autoclean autocleanque son obsoletos
apt-cache
aptitudeapt show foo
show
muestra información detallada sobre el paquete «foo»show foo
foo
aptitudeapt-cache
apt searchsearchsearch busca paquetes que concuerden con expresión_regularexpresión_regularexpresión_regularexpresión_regular
aptitudeargumenta la razón por la que el paquete que concuerda con la
N/A
N/A
why
expresión_regular debe instalarse
expresión_regular
aptitudeargumenta la razón por la que el paquete que concuerda con la
N/A
why-not
N/A
expresión_regular no debe instalarse
expresión_regular
aptitudeapt list
apt-mark
searchlista los paquetes instalados de forma manual--manual-installedshowmanual’~i!~M’
Sintaxis de apt

Sintaxis deaptitudeCuadro 2.6: Operaciones básicas de gestión de paquetes utilizando la línea de órdenes apt(8), aptitude(8) yapt-get(8)/apt-cache(8)opción de la orden
-s
-d
-D

descripción
simula el resultado de la orden
descarga únicamente pero no instala o actualiza
muestra aclaraciones breves antes de la instalación o eliminación
automáticos
Cuadro 2.7: Opciones más importantes de la orden aptitude(8)55 / 257

Guía de referencia de Debian

2.2.4. Combinaciones de teclado en aptitude
Las pulsaciones de teclas notables para examinar el estado de los paquetes y establecer la ”acción planificada” en ellos en estemodo de pantalla completa son las siguientes.
tecla
F10 o Ctrl-t?
F10 → Ayuda → Manual de usuario
u
+
_
=
U
g
q
x
Intro
C
l
/
\

función
menú
muestra la ayuda de las combinaciones de teclas (una relación máscompleta)
muestra el Manual de Usuario
actualiza la información de archivo del paquete
marca el paquete para que se actualice o instale
marca el paquete para que se elimine (mantiene los archivos deconfiguración)
marca el paquete para purgarlo (borra los archivos de configuración)
marca el paquete para conservalo (hold)marca todos los paquetes actualizables (sería el equivalente a una
actualización completa)
comienza la descarga y la instalación de los paquetes seleccionados
sale de la pantalla actual y guarda los cambios
sale de la pantalla actual sin guardar los cambios
muestra la información de un paquete
muestra el registro de cambios del paquetecambia el número de paquetes que se muestranbusca el primer encaje
repite la última búsqueda

Cuadro 2.8: Relación de combinaciones de teclado de aptitude
La especificación del nombre de archivo de la línea de comandos y el mensaje del menú después de presionar ”l ” y ”// ” tomanla expresión regular de aptitude como se describe a continuación. Aptitude regex puede hacer coincidir explícitamente un nombrede paquete utilizando una cadena iniciada por ” ~n” y seguida del nombre del paquete.
sugerencia
Necesita pulsar «U» para hacer que todos los paquetes se actualicen a la versión candidata en el interfaz visual.
De otra manera solo los paquetes seleccionados y otros que son dependencias de versiones de estos son actualizados a la versión candidata.

2.2.5. Visualización de paquetes en aptitude
En el modo interactivo de pantalla completa de aptitude(8), se muestran los paquetes en la lista de paquetes como en elsiguiente ejemplo.
idA

libsmbclient

El significado de izquierda a derecha de la fila es el siguiente.
La bandera del «estado actual« (primera letra)
La bandera de la «acción planeada« (segunda letra)
La bandera «automática« (tercera letra)
El nombre del paquete-2220kB 3.0.25a-1

3.0.25a-2

56 / 257

Guía de referencia de Debian

La variación del espacio de disco usado según la «acción planeada«
La versión actual del paquete
La versión candidata del paquetesugerencia
Pulsando ? se muestra al final de la pantalla de Ayuda una relación completa de las banderas.

La versión candidata se elige de acuerdo a la configuración local del equipo (ver apt_preferences(5) y Sección 2.7.7).
Existen diferentes formas de mostrar los paquetes en la opción de menú «Vistas».
vistaVista del paquete
Recomendaciones de auditoría
Relación plana de paquetes
Navegador de etiquetas Debian (Debtags)
Vista del Paquete Fuente

descripción de la vista
ver Tabla 2.10 (por defecto)
relación de paquete que se recomiendan por algún paquete
marcado para instalación pero sin instalar por el momento
relación de paquetes sin clasificar (para usar con
expresiones regulares)
relación de paquetes clasificados de acuerdo a sus etiquetas
Debian (debtags)
lista de paquetes agrupados por paquetes fuente

Cuadro 2.9: Relación de vistas en aptitudenota
Por favor, ¡ayúdenos mejorando el marcado de paquetes con debtags!

La vista estándar «Vista de paquetes» los clasifica en cierto modo como dselect con algunas funcionalidades extra.
categoría
Paquetes actualizables
Nuevos paquetes
Paquetes instalados
Paquetes no instalados
Paquetes creados localmente yobsoletos
Paquetes virtuales
Tareas (tasks)

descripción de la vista
la relación organizada de paquetes según sección → área →paquete,,,,,,,,relación de paquetes con la misma función
relación de paquetes con diferentes funciones que normalmente sonnecesarios para una tarea

Cuadro 2.10: La clasificación de la vista de paquetes estándar

sugerencia
La vista de tareas puede usarse para realizar una selección de paquetes para sus tareas.

Guía de referencia de Debian

57 / 257

2.2.6. Opciones del método de búsqueda con aptitude
Aptitude ofrece varias opciones para la búsqueda de paquetes usando su fórmula de expresiones regulares.
Línea de órdenes del intérprete de órdenes:• «aptitude search ’expresión_regular_de_aptitude’» enumera el estado de instalación, nombre del paquete y descripción corta de los paquetes que encajan• «aptitude show ’nombre_del_paquete’» muestra la descripción detallada del paquete
Modo interactivo de pantalla completa:• ”l” para limitar la vista de los paquetes a los paquetes coincidentes• «/» para buscar los paquetes que encajan• «\» busca hacia atrás el paquete que encaja• «n» para encontrar el siguiente• «N» para buscar el siguiente (hacia atrás)sugerencia
La cadena del nombre_del_paquete se trata como el encaje exacto de la cadena al nombre del paquete al menos
que empiece explícitamente con «~» para ser un fórmula de expresión regular.

2.2.7. La fórmula de la expresión regular de aptitude
La fórmula de expresiones regulares de aptitud es ERE extendida similar a mutt (ver Sección 1.6.2) y los significados de lacoincidencia especial específica aptitude Las extensiones de regla son las siguientes.
La parte regex es la misma ERE que la utilizada en las típicas herramientas de texto tipo Unix utilizando ”^”, ”. *”, ”$” etc.
como en egrep(1), awk(1) y perl(1).
La dependencia tipo es una de (depende, predepende, recomienda, sugiere, entra en conflicto, reemplaza, proporciona) especificando la interrelación del paquete.
El tipo de dependencia por defecto es «depends«.
sugerencia
Cuando el patrón_de_la_expresión_regular es la cadena «null«, coloca inmediatamente después de la orden «~T».

Aquí hay algunos atajos.
«~Ptérmino» == «~Dprovides:término»«~Ctérmino» == «~Dconflicts:término»«…~W término» == «(…|término)»Los usuarios familiarizados con mutt aprenderán rápidamente, ya que mutt fue la inspiración para la sintaxis de las expresiones.
Consulte «SEARCHING, LIMITING, AND EXPRESSIONS« en el «Manual de Usuario« «/usr/share/doc/aptitude/README
nota
Con la versión de lenny de aptitude(8), la nueva sintaxis en formato largo como «?broken» se puede usar
de forma equivalente para el uso de expresiones regulares en lugar de la anterior formato corto «~b». Ahora seconsidera el carácter de espacio « » como uno de los caracteres de finalización de la expresión regular al igual
que la tilde «~». Ver el «Manual de Usuario« para la nueva sintaxis de formato largo.

58 / 257

Guía de referencia de Debian

descripción de las reglas extendidas deencajenombre del paquete que encaja
encaja en la descripción
nombre de la tarea que encaja
encaja con las debtag
encaja con el desarrollador
encaja con la sección del paquete
encaja con la versión del paquete
encaja con la distribución
encaja con el origen
encaja con la prioridad
encaja con los paquetes esenciales
encaja con paquetes virtuales
encaja con nuevos paquetes
encaja con acciones pendientes
encaja con paquetes instalados
encaja con paquetes marcados con A-mark(paquetes auto-instalados)
encaja con paquetes instalados sin la marca A(paquetes seleccionados por el administrador)
encaja con paquetes instalados y que se pueden
actualizar
encaja con paquetes eliminados pero nopurgados
encaja con paquete eliminados y purgados oque se pueden eliminarencaja con paquetes que declaran una
dependencia rota
encaja con paquetes que declaran una
dependencia rota de un tipo
encaja el patrón sobre paquetes que tienen una
dependencia tipo
encaja el patrón con paquetes que tienen una
dependencia rota de tipo
encaja con paquetes en los cuales el patrón
encaja con paquetes que declaran una
dependencia tipo
coinciden con paquetes a los que el paquete
coincidente patrón declara dependencia rotatipo
encaja con los paquetes con los que lospaquetes instalados tienen dependencias
encaja con los paquetes que no dependen deningún paquete instalado
encaja con los paquete que dependen o son
recomendados por otros paquetes instalados
encaja con los paquetes según el patrón
filtrados por la versión
encaja con todos los paquetes (verdad)no encaja con ningún paquete (falso)

fórmula de la expresión regular~nnombre_de_la_expresión_regula~ddescripcion_de_la_expresión_regular~texpresión_regular_de_tareas~Gexpresion_regular_de_etiquetas~mexpresión_regular_del_desarrollador~sexpresión_regular_de_sección~Vexpresión_regular_de_la_versión~A{bookworm,trixie,sid}~O{debian,…}~p{extra,important,optional,required,standard}~E~v~N~a{install,upgrade,downgrade,remove,purge,hold,keep}
~i
~M
~i!~M
~U
~c
~g
~b
~Btype~D[tipo:]patrón~DB[tipo:]patrón~R[tipo:]patrón~RB[escribe:]patrón
~R~i
!~R~i
~R~i|~Rrecommends:~i~S filtro patrón~T~F

Cuadro 2.11: Relación de fórmulas de expresiones regulares de aptitute59 / 257

Guía de referencia de Debian

2.2.8. Resolución de dependencias en aptitude
La selección de un paquete con aptitude no marca únicamente los paquetes definidos en su relación de «dependencias:»sino también aquellos en la relación de «Recomendados:» si la opción «F10 → Options → Preferences → Dependency
handling« esta configurada de esa manera. Estos paquetes instalados de forma automática se eliminan de forma automatizada por
aptitude si no se van a necesitar en el futuro.
La bandera que controla el comportamiento de «autoinstalado« de la orden aptitude puede modifcarse también usando laorden apt-mark(8) del paquete apt.

2.2.9. Registro de la actividad de los paquetes
Usted puede comprobar el histórcio de acciones sobre paquetes en los archivos de registro.
archivo/var/log/dpkg.log/var/log/apt/term.log/var/log/aptitudecontenido
Registra la actividad a nivel de dpkg para todas las acciones sobrepaquetes
Registro de acciones genéricas APT
Registro de acciones de la orden aptitude

Cuadro 2.12: Los archivos de registro de acciones sobre paquetes
En realidad, no es fácil conseguir una comprensión rápida de estos registros. La manera más fácil se explica en Sección 9.3.9.

2.3. Ejemplos de operaciones con aptitude
A continuación se muestran algunos ejemplos de aptitude(8) en acción.

2.3.1. Buscando paquetes interesantes
Se pueden buscar los paquetes que cumplan sus requisitos con aptitude bien en base a la descripción del paquete o con larelación de «Tareas«.

2.3.2. Enumera los paquetes cuyos nombres encajan con la expresión regularLas órdenes siguientes enumeran los paquetes cuyos nombres encajan con la expresión regular.
$ aptitude search ’~n(pam|nss).*ldap’
p libnss-ldap - NSS module for using LDAP as a naming service
p libpam-ldap - Pluggable Authentication Module allowing LDAP interfaces

Es bastante útil para encontrar el nombre exacto de un paquete.

2.3.3. Navega por la relación de paquetes que encajan con la expresión regular
La expresión regular «~dipv6» con la nueva vista «New Flat Package List« con el símbolo «l» prompt, muestra en la vista lospaquetes cuya descripción encaja y le permite navegar de forma interactiva entre ellos.

Guía de referencia de Debian

60 / 257

2.3.4. Purga los paquetes eliminados definitivamente
Se pueden borrar todos los archivos de configuración de los paquetes eliminados.
Compruebe los resultados del siguiente comando.
# aptitude search ’~c’Si estás seguro de que los paquetes enumerados deben eliminarse por completo, ejecuta el siguiente comando.
# aptitude purge ’~c’

Puede hacer lo mismo en modo interactivo para tener un control más detallado.
En la «Nueva Vista de Paquetes«, puede añadir una expresión regular a «~c» con el cursor «|». Esto limita los paquetes que sevisualizan a únicamente los que encajan con la expresión regular, esto es, «eliminado pero no purgado«. Todos estos paquetes
que encajan con la expresión regular se mostrarán al presionar «[» en la cabecera de más alto nivel.
Entonces, pulse «_» en la cabecera de mayor nivel como «Paquetes no instalados«. Solo los paquetes que encajan con el patrón dela expresión regular bajo dicho encabezado se marcarán para ser purgados. Usted puede no incluir algunos paquetes de la purga
presionando «=» de forma manual sobre cada uno de ellos.
Esta técnica es bastante útil y funciona para muchas teclas de órdenes.

2.3.5. Estado de instalación ordenado de forma automática/manual
A continuación mostraremos como mantenemos en orden el estado de instalación de los paquetes (después de realizar instalaciones
sin usar aptitude etc.).
1. Lance aptitude en modo interactivo como «root«.
2. Pulse «u», «U», «f» and «g» para actualizar la relación de paquetes y los paquetes.
3. Pulse «l» para acceder a la pantalla de los paquetes limitandolos a «~i(~R~i|~Rrecommends:~i)» y pulse «M» sobre«Paquetes I» como auto instalados.
4. Pulse «l» para acceder a la pantalla de paquetes limitados como «~prequired|~pimportant|~pstandard|~E»
y pulse «m» sobre «Paquetes Instalados» como instalados de forma manual.
5. Escribe ”l” para entrar en el límite de la visualización de los paquetes como ”~i!~M” y elimina los paquetes no utilizados
escribiendo ”-” sobre cada uno de ellos después de exponerlos escribiendo ”[” sobre los ”Paquetes instalados”.
6. Pulse «|», para entrar en la pantalla de paquetes limitada por «~i»; entonces pulse «m» sobre Tareas», para marcar
aquellos paquetes instalados manualmente.
7. Salir de aptitude.
8. Ejecute «apt-get -s autoremove|less» como superusuario para comprobar lo que no usa.
9. Reinicie aptitude en modo interactivo y marque los paquetes que necesite con «m».
10. Volver a ejecutar «apt-get -s autoremove|less» como superusuario para volver a comprobar que solo ha ELIMINADO los paquetes que deseaba.
11. Ejecute «apt-get autoremove|less» como superusuario para eliminar los paquetes sin uso.
La acción «m» sobre «Tasks» es opcional y se usa para evitar la situación de eliminar paquetes de forma masiva en el futuro.

Guía de referencia de Debian

61 / 257

2.3.6. Actualización mayor del sistema
nota
Cuando se cambia a una nueva distribución etc, se debe considerar implantar una instalación limpia del nuevo
sistema incluso cuando Debian es actualizable como se describe a continuación. Proporciona la oportunidad deeliminar la basura almacenada y acceder a las mejores combinaciones de las últimas versiones de los paquetes.
Sin dudarlo, debería realizar una copia de respaldo completa del sistema a un lugar seguro (ver Sección 10.2)
antes de hacerlo. Nosotros recomendamos crear un arranque dual en una partición diferente para realizar una
transición suave.

Puedes realizar una actualización de todo el sistema a una versión más reciente cambiando el contenido de la lista de fuentes
apuntando a una nueva versión y ejecutando el comando ”apt update; apt dist-upgrade”.
Para actualizar de stable (estable) a testing (pruebas) o unstable (inestable) durante el ciclo de publicación de bookwormcomo-estable, debes sustituir ”bookworm ” en la lista de fuentes por ejemplo de Sección 2.1.5 con ”trixie” o ”sid”.
De hecho, se puede encontrar con algunas complicaciones debido a alguna transición entre paquetes, la mayor parte debido a
dependencias. Cuanto mayores es la actualización, más problemas importantes se puede encontrar. Para la transición desde una
distribución antigua de stable (estable) a la nueva stable (estable) después de su publicación, puede leer las nuevas «Release
Notes« y seguir el procedimiento concreto que se describe para minimizar los problemas.
Cuando decide migrar de stable (estable) a testing (pruebas) después de una publicación formal, no existen «Release Notes«
de ayuda. La diferencia entre stable (estable) y testing (pruebas) puede ser bastante mayor después de la liberación de una
nueva distribución stable (estable) y la actuailización se puede convertir en una situación complicada.
Debería ser precavido cuando realiza un actualización completa y consultar la información actualizada sobre ello y usar el sentido
común.
1. Lea las anterior «Release Notes«.
2. Realice una copia de respaldo (o de seguridad) completa (especialmente los datos y las configuraciones).
3. Disponga de un medio alternativo de arranque por si falla el cargador de arranque.
4. Informe con anterioridad y de forma correctamente a los usuarios.
5. Registre las operaciones de la actualización con script(1).
6. Para evitar su eliminación marque los paquetes que lo requieran como «sin marcado automático» (unmarkauto), p. ej.,
«aptitude unmarkauto vim».
7. Minimize los paquetes instalados con el de minimizar la posibilidad de conflictos, p. ej., elimine los paquetes de la tarea«Escritorio«.
8. Elimina el archivo ”/etc/apt/preferences” (desactiva apt-pinning).
9. Realice actualizaciones siguiendo los pasos de forma sensata: oldstable (vieja_estable) → stable (estable) → testing(pruebas) → unstable (inestable).
10. Actualiza la lista de fuentes para que apunte sólo al nuevo archivo y ejecuta ”aptitude update”.
11. Instale, opcionalmente, primero los nuevos paquetes fundamentales , p. ej., «aptitude install perl».
12. Ejecute la orden «apt-get -s dist-upgrade» para comprobar su efecto.
13. Finalmente , ejecute la orden «apt-get dist-upgrade».

atenciónNo es aconsejable omitir la distribución principal de Debian, la stable (estable), cuando se actualiza entre
distribuciones.

Guía de referencia de Debian

62 / 257

atenciónEn «Release Notes« anteriores, GCC, el núcleo de Linux , initrd-tools, Glibc, Perl, las herramientas APT,
etc. han necesitado una atención especial para la actualización mayor del sistema.

Para actualizar de forma diaria la versión unstable, ver Sección 2.4.3.

2.4. Operaciones avanzadas de gestión de paquetes
2.4.1. Operaciones avanzadas de gestión de paquetes desde la línea de órdenes
A continuación puede encontrar otras operaciones de gestión de paquetes para las cuales aptitude es demasiada abstracta ono posee la funcionalidad que se necesita.
nota
Para paquetes que sean multi-arch, puede necesitar especificar el nombre de la arquitectura para algunas órdenes.
Por ejemplo, use «dpkg -L libglib2.0-0:amd64» para enumerar el contenido del paquete libglib2.0-0
para la arquitectura amd64.

atención
Las herramientas de bajo nivel como «dpkg -i …» y «debi …» deben usarse con cuidado por el administrador del sistema. No tienen en cuenta de forma automática las dependencias entre paquetes. La
opción de la línea de órdenes «--force-all» y parecidas (ver dpkg(1)) están hechas para que las usenúnicamente usuarios expertos. Usarlas sin entender plenamente sus consecuencias puede corromper elsistema entero.

Ten en cuenta lo siguiente.
Todas las órdenes de configuración e instalación necesitan ser ejecutadas por el superusuario.
A diferencia de aptitude que usa expresiones regulares (ver Sección 1.6.2), otras órdenes para la gestión de paquetes usanpatrones como el intérprete de órdenes glob (ver Sección 1.5.6).
apt-file(1) que está en el paquete apt-file necesita ejecutar previamente «apt-file update».
configure-debian(8) que está en el paquete configure-debian usa como su motor dpkg-reconfigure(8).
dpkg-reconfigure(8) ejecuta los archivos de órdenes de los paquetes usando como su motordebconf(1).
Los comandos ”apt-get build-dep”, ”apt-get source” y ”apt-cache showsrc” requieren la entrada ”deb-src”
en la lista de fuentes.
dget(1), debuild(1) y debi(1) necesitan el paquete devscripts.
Consulte el procedimiento de (re)empaquetado mediante «apt-get source» en Sección 2.7.13.
La orden make-kpkg necesita el paquete kernel-package (ver Sección 9.10).
Para el empaquetado general ver Sección 12.9.

63 / 257

Guía de referencia de Debian

orden
acciónCOLUMNS=120 dpkg -l
enumera el estado de los paquetes instalados para el informe de errores
patrón_del_nombre_del_paquete
dpkg -L nombre_del_paquete
enumera el contenido de un paquete instalado
dpkg -L nombre_del_paquete |relación las páginas del manual para un paquete instalado
egrep ’/usr/share/man/man.*/.+’
dpkg -S
enumera los paquetes instalados que tienen un archivo que encaja con
patrón_del_nombre_de_archivo
el patrón
apt-file search
enumera los paquetes en el repositorio que encajan con el nombre depatrón_nombre_de_archivo
archivo
apt-file list
enumera el contenido de los paquetes del repositorio que encajanpatrón_nombre_de_paquete
dpkg-reconfigure
reconfigura el paquete dado
nombre_del_paquete
dpkg-reconfigure -plowreconfigura el paquete dado realizando el mayor número de preguntas
package_nameconfigure-debianreconfigura los paquetes desde el menú de pantalla completa
dpkg --audit
auditoría del sistema referente a paquete instalados parcialmente
dpkg --configure -a
configura todos los paquetes instalados parcialmente
apt-cache policy
muestra la versión, la prioridad y la información del repositorio de un
nombre_del_paquete_binario
paquete binario
apt-cache madison
muestra la versión disponible y la información del repositorio de un
nombre_del_paquetepaqueteapt-cache showsrc
muestra la información del paquete fuente que corresponde con elnombre_del_paquete_binario
paquete binario
apt-get build-dep
instala los paquetes requeridos para construir el paquete
nombre_del_paquete
aptitude build-dep
instala los paquetes requeridos para construir el paquete
nombre_del_paquete
apt-get source
descarga la fuente (desde el repositorio estándar)
nombre_del_paquete
dget URL del archivo dsc
descarga el código del paquete (desde otro repositorio)
dpkg-source -x
construye el árbol de las fuentes para un conjunto de paquetes fuente
nombre_del_paquete_version-versión_de_debian.dsc(«orig.tar.gz» y «debian.tar.gz»/«*.diff.gz»)
debuild binary
construye el/los paquete(s) desde un árbol de fuentes locales
make-kpkg kernel_image
construye el paquete del núcleo desde el árbol fuente del kernel
construye el paquete del núcleo desde el árbol fuente de este con
make-kpkg --initrd kernel_image
initramfs activado
dpkg -iinstala un paquete local en el sistema
nombre_del_paquete_versión-versión_de_debian_arquitectura.deb
apt installinstala un paquete local en el sistema y trata de resolver de forma/path/to/package_filename.deb
automática sus dependencias
debi
instala el(los) paquete(s) locales en el sistema
nombre_del_paquete_versión-versión_de_debian_arquitectura.dsc
dpkg --get-selections ’*’guardar información de estado de selección de nivel de paquete dpkg
>selección.txt
dpkg --set-selections
asigna la información de estado de selección de nivel del paquete dpkg
<seleccion.txt
establecer estado de selección de nivel de paquete dpkg para unecho nombre_paquete hold | dpkg
paquete a mantener (equivalente a ’ aptitude hold <--set-selections
nombre_del_paquete > ’)Cuadro 2.13: Relación de operaciones avanzadas con paquetes

Guía de referencia de Debian

64 / 257

2.4.2. Verificación de los archivos de un paquete instalado
La instalación de debsums permite de la verificación de los archivos de los paquetes instalados comparando los valores MD5sum
en el archivo «/var/lib/dpkg/info/*.md5sums» con debsums(1). Para saber como funciona MD5sum verSección 10.3.5.
nota
Ya que la base de datos de MD5sum la puede alterar un intruso, debsums(1) su uso como herramienta de seguridad es limitada. Solo es aceptable para que el administrador compruebe modificaciones locales o daños producidos
por errores del medio de almacenamiento.

2.4.3. Protección frente a problemas con paquetes
Muchos usuarios prefieren seguir las versiones testing (pruebas) (o unstable (inestable)) del sistema Debian por sus nuevas
características y paquetes. Esto hace que el sistema sea más propenso a sufrir fallos críticos en los paquetes.
La instalación del paquete apt-listbugs protege el sistema contra errores críticos comprobando estos de forma automáticaBTS de Debian cuando se actualiza mediante el sistema APT.
La instalación del paquete apt-listchanger aporta noticias importantes en «NEWS.Debian» cuando se actualiza mediante
el sistema APT.

2.4.4. Buscando metadatos en los paquetes
Aunque al visitar la página de Debian https://packages.debian.org/ facilita formas fáciles de buscar en los metadatos del paqueteen estos días, veamos otras formas más tradicionales.
Las órdenes grep-dctrl(1), grep-status(1) y grep-available(1) se pueden usar para buscar cualquier archivo que
tenga el formato general de un archivo de control de paquetes de Debian.
«dpkg -S patrón_de_archivo_de_nombres» se puede usar para buscar nombres de paquetes que contengan archivos
que coincidan con el nombre instalado por dpkg. Pero pasa por alto los archivos creados por los scripts de mantenimiento.
Si necesita realizar búsquedas más elaboradas de metadatos de dpkg , necesita ejecutar la orden «grep -e regex_pattern*» en el directorio «/var/lib/dpkg/info/». Esto realiza búsquedas de las palabras mencionadas en los archivos de órdenes
de los paquetes y textos de preguntas de la instalación.
Si desea realizar búsquedas recursivas en dependencias de paquetes , debería usar apt-rdepends(8).

2.5. Gestión interna de los paquetes DebianAprendamos como funciona internamente el sistema de paquetes Debian. Esto puede ayudar a encontrar su propia solución en
algunos problemas con paquetes.

2.5.1. Metadatos de archivos
Los metadatos de archivos para cada distribución se almacenan en «dist/codename» en cada sitio espejo de Debian , p. ej.,«http://deb.debian.org/debian/». La estructura del repositorio se puede navegar con un navegador web. Existen seistipos de metadatos clave.
En el archivo reciente, estos metadatos se almacenan como los archivos comprimidos y diferencial para reducir tráfico de red.

65 / 257

Guía de referencia de Debianarchivoubicación

Distribución

Alto de la distribución

Release.gpg

Alto de la distribución

Contenido-arquitectura

Alto de la distribución

Distribución
Paquetes
Fuentesraíz de cada combinación dedistribución/área/arquitecturaraíz de cada combinación
distribución/área/arquitecturabinariaraíz de cada combinación
distribución/área/fuente

contenido
descripción del archivo e información deintegridad
archivo de firma para el archivo firmado«Release» con el archivo llave
relación de todos los archivos para todos lospaquetes en el repositorio pertinente
descripción de archivo usado para la regla deapt_preferences(5)concatenado de debian/control parapaquetes binarios
concatenado de debian/control parapaquetes fuente

Cuadro 2.14: El contenido de metadatos del repositorio Debian

2.5.2. Archivo «Release» del nivel superior y autenticaciónsugerencia
El archivo de la raíz «Release» se usa para firmar el repositorio del sistema seguro APT.

Cada versión del archivo de Debian tiene un fichero de nivel superior ”Release”, por ejemplo, ”http://deb.debian.org/debia
como sigue.
Origin: DebianLabel: DebianSuite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips ←mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
...

nota
Aquí, puede encontrar la razón de ser entre la «versión« y el «nombre en clave« en Sección 2.1.5. «Distribución«
se utiliza cuando se refiere a la «versión« y «nombre en clave«. Todos los nombres de ”áreas” de archivo que
ofrece el archivo se enumeran en ”Componentes”.

La integridad del archivo de nivel superior ”Release” se verifica mediante una infraestructura criptográfica denominada secure
apt, tal y como se describe en apt-secure(8).
El archivo de firma criptográfica «Release.gpg» se crea desde el auténtico archivo «Release» de la raíz y el archivo dela clave secreta Debian.
Las claves del archivo público de Debian se instalan localmente mediante el último paquete debian-archive-keyring.

Guía de referencia de Debian

66 / 257

El sistema secure APT verifica automáticamente la integridad del fichero descargado de nivel superior ”Release” criptográficamente mediante este fichero ”Release.gpg” y las claves públicas del archivo de Debian instaladas localmente.
La integridad de todos los archivos «Packages» y «Sources» se verifican usando valores MD5sum del archivo raíz
«Release». La integridad de todos los archivos de paquetes se comprueban usando los valores de MD5sum en los archivos«Packages» and «Sources». Ver debsums(1) y Sección 2.4.2.
Ya que la verificación de la firma criptográfica es un proceso intensivo en uso de la CPU, el uso del valor MD5sum para cadapaquete mientras se usa el archivo de firma criptográfica de la raíz «Release» proporciona buena seguridad y eficiencia (verSección 10.3).
Si la entrada lista de fuentes especifica la opción ”firmado por”, la integridad del archivo de nivel superior ”Release”
descargado se verifica utilizando la clave pública especificada. Esto es útil cuando la lista de fuentes contiene archivos que no
son Debian.
sugerencia
El uso del comando apt-key(8) para la gestión de claves APT está obsoleto.
También puedes verificar manualmente la integridad del fichero ”Release” con el fichero ”Release.gpg” y la clave públicadel archivo Debian publicada en ftp-master.debian.org usando gpg.

2.5.3. Archivos «Release» a nivel de archivo
sugerencia
Los archivos “Release”a nivel de fichero se usan para la regla apt_preferences(5).

Existen ficheros a nivel del archivo ”Release” para todas las ubicaciones del archivo especificadas por la lista de fuentes, como
”http://deb.debian.org/debian/dists/unstable/main/binary-amd64/Release” o ”http://deb.debian.
como se indica a continuación.
Archive: unstable
Origin: DebianLabel: DebianComponent: main
Architecture: amd64

atención
Para la etiqueta «Archive:» , los nombres de distribución (stable (estable), testing (pruebas),
unstable (inestable), …) se utilizan en el repositorio Debian mientras que los nombres de publicación(«trusty», «xenial», «artful», …) se utilizan en el repositorio Ubuntu.

Para algunos archivos, como experimental, y bookworm-backports, que contienen paquetes que no deben instalarse automáticamente, hay una línea extra, por ejemplo, ”http://deb.debian.org/debian/dists/experimental/main/binar
como sigue.
Archive: experimental
Origin: DebianLabel: Debian
NotAutomatic: yes
Component: main
Architecture: amd64

Tenga en cuenta que los repositorios normales sin «NotAutomatic: yes», el valor por defecto de la prioridad de instalación(Pin-Priority) es 500, mientras que en los repositorios especiales con «NotAutomatic: yes», el valor por defecto de laprioridad de instalación (Pin-Priority) es 1 (ver apt_preferences(5) y Sección 2.7.7).

Guía de referencia de Debian

67 / 257

2.5.4. Actualizando la meta información de los paquetes
Cuando se usan herramientas APT, como aptitude, apt-get, synaptic, apt-file, auto-apt, ..., necesitamos actualizar las copias locales de los metadatos que contienen la información del archivo Debian. Estas copias locales tienen lossiguientes nombres que corresponden a los nombres especificados para: distribución, área y arquitectura en la lista
de fuentes (ver Sección 2.1.5).
«/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_Release»«/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_Release.gpg»«/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_area_binary-architecture_Pac«/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_area_source_Sources»«/var/cache/apt/apt-file/deb.debian.org_debian_dists_distribution_Contents-architecture.g(para apt-file)Los 4 primeros tipos de archivos son compartidos por todos los comandos APT pertinentes y actualizados desde la línea de comandos mediante ”apt-get update” o ”aptitude update”. Los metadatos ”Paquetes” se actualizan si se especifica”deb” en la lista de fuentes. Los metadatos ”Fuentes” se actualizan si se especifica ”deb-src” en la lista de fuentes.
La metainformación de los «paquetes» y de las «fuentes» contienen el campo «Filename:» que apunta a la ubicacióndel archivo de los paquetes fuente y binarios. En este momento, estos paquetes se ubican en el subárbol del directorio «pool/»para mejorar la transición entre distribuciones.
Se pueden realizar búsquedas interactivas en las copias locales de la metainformación de los «paquetes» mediante la orden
aptitude. La orden de búsqueda especializada grep-dctrl(1) puede buscar metainformación en las copias locales de los«paquetes» y las «fuentes».
La copia local de los metadatos ”Contents-architecture” se puede actualizar con ”apt-file update” y su ubicación es diferente de las otras 4 . Ver apt-file(1). (El auto-apt usa una ubicación diferente para la copia local de”Contents-architecture.gz” por defecto)

2.5.5. Estado del paquete para APT
Además de acceder de forma remota a la metainformación, desde lenny, la herramienta APT almacena la información local
referente al estado de la instalación en «/var/lib/apt/extended_states» el cual usan el resto de herramientas APTpara realizar el seguimiento de todos los paquetes autoinstalados.

2.5.6. El estado del paquete en aptitude
Además de acceder de forma remota a la metainformación, la orden aptitude almacena el estado de la instalación de forma
local en «/var/lib/aptitude/pkgstates» y este es usado únicamente por aptitude.

2.5.7. Copias locales de los paquetes descargados
Todos los paquetes descargados de forma remota mediante APT se almacenan en «/var/cache/apt/archives» hasta quese limpia.
Esta política de limpieza de los archivos de la caché para aptitude se puede configurar en ”Opciones” → ”Preferencias”
y se puede forzar por su menú ”Limpiar caché de los paquetes” o ”Limpiar los archivos obsoletos” en”Acciones”.

68 / 257

Guía de referencia de Debiantipo de paquete
El paquete binario (apodado deb)
El paquete binario para el instalador de debian(apodado udeb)
Paquete de código fuente (código fuente
ascendente)
El paquete fuente 1.0 (cambios Debian)
El paquete fuente 3.0 (quilt) (cambios deDebian)El paquete fuente (descripción)

estructura del nombre
nombre_del_paquete_versión_actual-debian-versión_arquit

nombre_del_paquete_versión_actual-debian-versión_arquit

nombre_del_paquete_versión_actual-debian-versión.orig.t

nombre_del_paquete_versión_actual-debian-versión.diff.g

nombre_del_paquete_versión_actual-debian-versión.debiannombre_del_paquete_versión_actual-debian-versión.dsc

Cuadro 2.15: La estructura del nombre de los paquetes Debian

2.5.8. Nombres de archivos de paquetes DebianLos archivos que son paquetes Debian tienen una estructura para nombrarlos determinada.
sugerenciaÚnicamente describiremos aquí el formato del paquete fuente. Para obtener mayor información consulte
dpkg-source(1).

nombre del campo
nombre_del_paqueteépoca:
versión_actual
debian.versión

Caracteres disponibles(expresión regular)[a-z0-9][-a-z0-9.+]+[0-9]+:[-a-zA-Z0-9.+:]+[a-zA-Z0-9.+~]+

existencia
obligatorio
opcional
obligatorio
opcional

Cuadro 2.16: Los caracteres permitidos en cada campo del nombre del paquete en Debiannota
Se puede comprobar el orden de las versiones de los paquetes con la ordendpkg(1), p. ej., «dpkg--compare-versions 7.0 gt 7.~pre1 ; echo $?» .

nota
El instalador debian (d-i) usa la extensión de archivo udeb para sus paquetes binarios en vez de la normal deb.
Un paquete udeb es una versión reducida de un paquete deb a la cual se le han eliminado los contenidos noesenciales como la documentación con el fin de ahorrar espacio mientras se relajan los requisitos de la directriz
de los paquetes. Ambos paquetes, deb y udeb, comparten la misma estructura de paquetes. La «u» tiene elsignificado de micro.

2.5.9. La orden dpkg
dpkg(1) es la herramienta de más bajo nivel para la gestión de paquetes Debian. Es una herramienta muy poderosa y por tanto
es necesario usarla con cuidado.
Al instalar el paquete llamado ”package_name”, dpkg lo procesa en el siguiente orden.
1. Desempaqueta el archivo deb (equivale a «ar -x»)

69 / 257

Guía de referencia de Debian

2. Ejecuta «nombre_del_paquete.preinst» usando debconf(1)3. Instala el paquete en el sistema (equivalente a ”tar -x”)
4. Ejecuta «nombre_del_paquete.postinst» usando debconf(1)El sistema debconf proporciona una interacción de usuario estandarizada con compatibilidad con I18N y L10N (Capítulo 8).
archivo
descripción del contenido/var/lib/dpkg/info/nombre_del_paquete.conffiles
relación de archivos de configuración (modificables por el usuario)/var/lib/dpkg/info/nombre_del_paquete.list
relación de archivos y directorios instalados por el paquete
relación de resumen criptográfico MD5 de los archivos instalados por/var/lib/dpkg/info/nombre_del_paquete.md5sums
el paquete/var/lib/dpkg/info/nombre_del_paquete.preinstarchivos de órdenes del paquete que se ejecutan antes de su instalación/var/lib/dpkg/info/nombre_del_paquete.postinst
archivo de órdenes que se ejecutan después de la instalación del paquetearchivo de órdenes del paquete que se ejecuta antes de la eliminación/var/lib/dpkg/info/nombre_del_paquete.prermdel paquetearchivo de órdenes del paquete para ser ejecutada después de la/var/lib/dpkg/info/nombre_del_paquete.postrm
eliminación del paquete/var/lib/dpkg/info/nombre_del_paquete.config
archivo de órdenes para el sistema debconf
la información alternativa usada por la orden/var/lib/dpkg/alternatives/nombre_del_paquete
update-alternatives/var/lib/dpkg/available
la información disponible para todo el paquete
la información de la ubicación alternativa usada por dpkg(1) y/var/lib/dpkg/diversions
asignada por dpkg-divert(8)la información estadística manual utilizada por dpkg(1) y asignada por/var/lib/dpkg/statoverride
dpkg-statoverride(8)/var/lib/dpkg/status
la información del estado de todos los paquetes
la copia de seguridad de la primera generación del archivo/var/lib/dpkg/status-old”var/lib/dpkg/status”
el segundo juego de copias de respaldo y anteriores del archivo/var/backups/dpkg.status*«var/lib/dpkg/status»
Cuadro 2.17: Los archivos destacados creados por dpkg

El archivo «status» además lo utilizan herramientas como dpkg(1), «dselect update» y «apt-get -u dselect-upgrade
El comando de la búsqueda especializada grep-dctrl(1) puede buscar las copias locales de los metadatos ”status” y”disponible”.
sugerencia
En el entorno del instalador de debian, la orden udpkg se usa para abrir los paquetes udeb. La orden udpkg es
una versión reducida de la orden dpkg.

2.5.10.

La orden update-alternatives

En sistema Debian existe un mecanismo para tener instalados a la vez varios programas que realizan la misma función sin problemas usando update-alternatives(1). Por ejemplo, se pueden hacer que la orden vi seleccione vim cuando se tienen
instalados los paquetes tanto vim y nvi.
$ ls -l $(type -p vi)
lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi$ sudo update-alternatives --display vi...
$ sudo update-alternatives --config vi

Guía de referencia de Debian

70 / 257

Selection
Command---------------------------------------------1/usr/bin/vim*+
2/usr/bin/nvi
Enter to keep the default[*], or type selection number: 1

El sistema «alternatives« de Debian mantiene un conjunto de enlaces simbólicos en «/etc/alternatives/». El uso delproceso de selección se encuentran en los archivos de «/var/lib/dpkg/alternatives/».

2.5.11. La orden dpkg-statoverride
El cambio de permisos (Stat overrides) que se realiza mediante la orden dpkg-statoverride(8) es una manera de conseguir
quedpkg(1) use un propietario o unos permisos de uso diferentes para un archivo cuando se instala un paquete. Si se especifica«--update» y el archivo existe , los nuevos permisos y propietario se cambian al instante.
atención
El cambio directo del propietario o modo de un archivo propiedad del paquete mediante los comandos
chmod o chown por parte del administrador del sistema se restablece en la siguiente actualización delpaquete.

nota
Hemos usado la palabra archivo en los párrafos anteriores, pero realmente estos cambios se pueden ser realizar
sobre cualquier objeto del sistema de archivos que gestione dpkg, incluidos directorios, dispositivos, etc.

2.5.12.

La orden dpkg-divert

Las ubicaciones alternativas de un archivo que se realizan mediante la orden dpkg-divert(8) son una forma de obligar
a dpkg(1) de instalar un archivo en una ubicación alternativa y no en su ubicación por defecto. Los archivos de órdenes
de mantenimiento del paquete son los encargados del uso de dpkg-divert. Es una práctica en desuso su utilización por eladministrador del sistema.

2.6. Recuperación de un sistema
Cuando se ejecuta el sistema testing (pruebas) o unstable (inestable), se espera que el administrador recupere la situaciónde administración de paquetes rotos.

atención
Algunos métodos descritos conllevan acciones muy peligrosas. ¡Está avisado!

2.6.1. Instalación fallida debido a dependencias incumplidas
Si fuerza la instalación de un paquete mediante ”sudo dpkg -i ...” en un sistema sin todas las dependencias instaladas, lainstalación del paquete fallará porque está incompleta.
Debería instalar todos los paquetes de dependencia utilizando APT-system o ”sudo dpkg -i ...”.
Luego, use los siguientes comandos para configurar todos los paquetes parcialmente instalados.
# dpkg --configure -a

Guía de referencia de Debian71 / 257

2.6.2. Errores de almacenamiento en la caché de los datos del paqueteLos errores de la caché de datos del paquete de software pueden causar errores extraños, como ”Error de GPG: ... no válido:
BADSIG ...” de APT.
Debes eliminar todos los datos almacenados en caché mediante ”sudo rm -rf /var/lib/apt/* ” y volver a intentarlo.
(Si se utiliza apt-cacher-ng, también debes ejecutar ”sudo rm -rf /var/cache/apt-cacher-ng/* ”)

2.6.3. Incompatibilidad con la configuración antigua del usuario
Si un programa de GUI de escritorio experimentó inestabilidad después de una actualización significativa de la versión anterior,debe sospechar una interferencia con los archivos de configuración locales antiguos creados por él. Si es estable bajo una cuenta
de usuario recién creada, se confirma esta hipótesis. (Este es un error de empaque y generalmente lo evita el empaquetador)
Para recuperar la estabilidad, se deben mover los archivos de la configuración local correspondientes y reiniciar el interfaz gráfico.
Puede que necesite leer los archivos de configuración antiguos para recuperar información de configuración posteriormente. ( Nolos borre antes de tiempo).

2.6.4. Superposición de archivos por diferentes paquetes
Los sistemas de gestión de paquetes, al nivel de archivo, como aptitude(8) o apt-get(1), ni siquiera tratan de instalar
paquetes con archivos superpuestos usando las dependencias de los paquetes (ver Sección 2.1.7).
Los errores de los mantenedores de paquetes o la inconsistencia en el despliegue de archivos de fuentes mezclados (ver Sección 2.7.6) por parte del administrador del sistema puede crear situaciones con una definición incorrecta de las dependencias delpaquete. Cuando se instala un paquete que superpone archivos usando aptitude(8) o apt-get(1), dpkg(1) se encarga dedevolver un error al programa que lo llamó sin sobreescribir los archivos existentes.
atención
El uso de paquetes de terceras partes añade riesgos significativos para el sistema a través de los archivosde órdenes de mantenimiento, ya que son ejecutados con los privilegios de superusuario y pueden realizar
cualquier cosa en su sistema. La orden dpkg(1) solo ofrece protección contra la sobreescritura en el desempaquetado.

Se puede arreglar una instalación deficiente eliminando en primer lugar el paquete incompatible anterior old-package.
$ sudo dpkg -P old-package

2.6.5. Arreglando un archivo de órdenes de un paquete roto
Cuando una orden en un archivo de órdenes de un paquete devuelve un error y el archivo de órdenes finaliza con el error, elsistema de gestión de paquetes cancela sus acciones y finaliza con paquetes instalados parcialmente. Cuando un paquete contiene
un error en los archivos de órdenes de eliminación, el paquete puede volverse imposible de eliminar y bastante molesto.
Para el problema del script del paquete de ”package_name”, debe buscar los siguientes scripts del paquete.
«/var/lib/dpkg/info/nombre_del_paquete.preinst»«/var/lib/dpkg/info/nombre_del_paquete.postinst»«/var/lib/dpkg/info/nombre_del_paquete.prerm»«/var/lib/dpkg/info/nombre_del_paquete.postrm»
Editar el script del paquete problemático con la cuenta de administrador utilizando las siguientes técnicas.

Guía de referencia de Debian72 / 257

deshabilitar la línea incorrecta anteponiéndole el carácter «#»forzar a devolver el éxito agregando la línea incorrecta «|| true»
Luego, sigue Sección 2.6.

2.6.6. Recuperación con la orden dpkg
Ya que dpkg es una herramienta de paquetes de muy bajo nivel, puede ser útil en situaciones críticas como un sistema que no
inicia sin conexión a la red. Asumamos que el paquete foo esta roto y necesita ser sustituido.
Se pueden encontrar versiones antiguas del paquete foo libres de errores en las copias locales (cachés) en el directorio de cachéde paquetes: «/var/cache/apt/archives/». (Si no, se pueden descargar del repositorio de https://snapshot.debian.org/
or copiar desde la caché de paquetes de un equipo en funcionamiento).
Si puedes iniciar el sistema, puedes instalarlo con el siguiente comando.
# dpkg -i /path/to/foo_old_version_arch.deb

sugerencia
Si el sistema tiene un error menor, otra alternativa es realizar un actualización del sistema completo a una versión
anterior (downgrade) como en Sección 2.7.11 por medio de las herramientas de alto nivel del sistema APT.

Si el sistema no se puede iniciar desde el disco duro, se pueden encontrar otras formas de iniciarlo.
1. Iniciar el sistema mediante un CD de instalación de Debian en modo rescate.
2. Montar el sistema que no inicia en el disco duro en «/destino».
3. Instale la versión anterior del paquete foo de la siguiente manera.
# dpkg --root /target -i /path/to/foo_old_version_arch.deb

Este ejemplo funciona incluso si la orden dpkg del disco duro está roto.
sugerencia
Cualquier sistema GNU/Linux iniciado por otro sistema en disco duro, CD live GNU/Linux, USB arrancable, o inicio
mediante red se puede usar para recuperar un sistema roto.

Si trata de instalar de esta manera un paquete y dicha instalación falla debido a la violación de alguna dependencia y es la única
manera de solucionarlo, se puede ignorar la dependencia utilizando dpkg’s «--ignore-depends», «--force-depends»
y otras opciones. Si lo hace así, será necesario un gran esfuerzo para más tarde restaurar la propia dependencia. Consulte paramás detalles dpkg(8).
nota
Si su sistema esta inoperativo por errores graves, debería realizar una copia de respaldo del sistema a un lugar
seguro (ver Sección 10.2) y realizar una instalación limpia. Esto le llevará menos tiempo y al final tendrá un mejor
resultado.

Guía de referencia de Debian73 / 257

2.6.7. Recuperando datos de la selección de paquetes
Si por alguna razón estuviera dañado el archivo «/var/lib/dpkg/status», el sistema Debian perdería la informaciónde la selección de los paquetes y quedaría seriamente dañado. Busque un archivo antiguo «/var/lib/dpkg/status» en«/var/lib/dpkg/status-old» o «/var/backups/dpkg.status.*».
Mantener «/var/backups/» en una partición separada puede ser una buena idea ya que dicho directorio contiene gran cantidadde información importante del sistema.
Cuando los daños son serios, recomiendo realizar una reinstalación limpia del sistema haciendo una copia de respaldo del sistema
anterior. Incluso si ha desaparecido todo lo que había en «/var/», todavía puede recuperar alguna información de los directoriosen «/usr/share/doc/» que le ayudarán en su nueva instalación.
Reinstalando un sistema mínimo (de escritorio).
# mkdir -p /path/to/old/system

Monte el sistema antiguo en ”/path/to/old/system/”.
# cd /path/to/old/system/usr/share/doc# ls -1 >~/ls1.txt# cd /usr/share/doc# ls -1 >>~/ls1.txt# cd# sort ls1.txt | uniq | less

A continuación se enumerarían los nombres de los paquetes a instalar. (Puede haber algunos nombres que no correspondan apaquetes como «texmf».)

2.7. Consejos para la gestión de paquetes
Para simplificar, los ejemplos de lista de fuentes de esta sección se presentan como ”/etc/apt/sources.list” en estilo
de una línea después de la versión bookworm.

2.7.1. ¿Quién sube los paquetes?

Aunque el nombre del desarrollador que aparece en «/var/lib/dpkg/available» y «/usr/share/doc/package_name/chaporta alguna información sobre «quién esta detrás del desarrollo del paquete«, la persona real que actualmente lo actualiza esalgo oscuro. who-uploads(1) en el paquete devscripts identifica quién es el actualizador real en este momento del paquete
fuente Debian.

2.7.2. Limitar el ancho de banda de descarga para APT
Si deseas limitar el ancho de banda de descarga del APT a 800 Kib/s (= 100 KiB/s), debes establecer los parámetros de configuración del APT como se indica a continuación.
APT::Acquire::http::Dl-Limit ”800”;

2.7.3. Descarga y actualización automática de paquetes

El paquete apt incluye su propio archivo de órdenes cron «/etc/cron.daily/apt» que se encarga de la descarga automática de paquetes. Este archivo de órdenes se puede mejorar para la actualización automática de paquetes mediante la instalación delpaquete unattended-upgrades. Se puede personalizar mediante los parámetros de los archivos «/etc/apt/apt.conf.d/02bay «/etc/apt/apt.conf.d/50unattended-upgrades» según se describe en «/usr/share/doc/unattended-upgrad

Guía de referencia de Debian74 / 257

El paquete unattended-upgrades se usa principalmente para actualizaciones de seguridad en sistemas stables (estable).
Si el riesgo de que las actualizaciones automáticas dañen un sistema stable (estable) es menor que el riesgo de que un intruso
explote un agujero de seguridad que se solucionó con una actualización de seguridad, debería considerar usar la actualización
automática con la siguiente configuración parámetros
APT::Periodic::Update-Package-Lists ”1”;
APT::Periodic::Download-Upgradeable-Packages ”1”;
APT::Periodic::Unattended-Upgrade ”1”;

Si estás ejecutando un sistema testing (pruebas) o unstable (inestable), no querrás usar la actualización automática ya
que seguramente romperá el sistema algún día. Incluso en estos casos de testing (pruebas) o unstable (inestable), puedeque quieras descargar los paquetes por adelantado para ahorrar tiempo en la actualización interactiva con los parámetros de laconfiguración como los siguientes.
APT::Periodic::Update-Package-Lists ”1”;
APT::Periodic::Download-Upgradeable-Packages ”1”;
APT::Periodic::Unattended-Upgrade ”0”;2.7.4. Actualizaciones y Backports
Existen stable-updates (”bookworm-updates” durante el ciclo de publicación de bookworm-as-stable) y backports. debian.org que proporcionan los paquetes de actualización para stable (estable).
Para utilizar estos archivos, enumera todos los archivos necesarios en el archivo ”/etc/apt/sources.list” de la siguiente
manera.
deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-freedeb http://security.debian.org/debian-security bookworm-security main non-free-firmware ←contrib non-freedeb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-freedeb http://deb.debian.org/debian/ bookworm-backports main non-free-firmware contrib non- ←free

No es necesario asignar un valor explícito Pin-Priority en el archivo «/etc/apt/preferences». Cuando hay nuevos paquetes disponibles, la configuración por defecto proporciona las actualizaciones más sensatas (ver Sección 2.5.3).
Todos los paquetes viejos se actualizan a los nuevos con origen en bookworm-updates.

Solo los paquetes antiguos instalados de forma manual desde bookworm-backports se actualizan a los nuevos de bookworm-bac
En el caso de que se desee instalar manualmente un paquete llamado «nombre_del_paquete» con su dependencia del repositorio bookworm-backports, se usa la siguiente orden mientras se cambia la distribución objetivo con la opción «-t».
$ sudo apt-get install -t bookworm-backports package-nameaviso
No instales demasiados paquetes de los archivos backports.debian.org. Puede causar complicaciones enla dependencia de los paquetes. Ver Sección 2.1.11 para las soluciones alternativas.

2.7.5. Archivos externos de los paquetes
aviso
Debes tener en cuenta que el paquete externo obtiene el privilegio root en tu sistema. Sólo debes utilizar elarchivo de los paquetes externos en sitios de confianza. Mira Sección 2.1.11 para soluciones alternativas.

Guía de referencia de Debian

75 / 257

Puedes usar un APT seguro con un archivo de paquetes externo compatible con Debian añadiéndolo a la lista de fuentes y tu
fichero de claves del archivo en el directorio ”/etc/apt/trusted.gpg.d/”. Ver sources.list(5), apt-secure(8)y apt-key(8).

2.7.6. Paquetes de origen mixto de archivos sin apt-pinning
atención
La distribución oficial de Debian no soporta la instalación de paquetes desde las fuentes mixtas de los archivos excepto para las combinaciones particulares de los archivos soportados oficialmente como stable(estable) con actualizaciones de seguridad y actualizaciones-estables.

Aquí hay un ejemplo, en el escenario original donde solo se realiza un seguimiento de testing (pruebas), la operación incluye
la nueva versión del paquete ascendente que se encuentra en unstable (inestable).
1. Cambie el archivo «/etc/apt/sources.list» de forma temporal a una entrada única «unstable» (inestable).
2. Ejecute «aptitude update».
3. Ejecute «aptitude install nombre_del_paquete».
4. Recupere la versión original de«/etc/apt/sources.list» para testing (pruebas).
5. Ejecute «aptitude update».
No crees el archivo ”/etc/apt/preferences” ni necesitas preocuparte por apt-pinning con este enfoque manual. Pero esto
es muy engorroso.
atención
Cuando se usan archivos de múltiples fuentes, debe de asegurarse la compatibilidad de los paquetes por
su cuenta, ya que Debian no lo garantiza. Si existe incompatibilidad entre paquetes, se puede romper elsistema. Ha de ser capaz de decidir dichos requisitos técnicos. El uso de archivos de múltiples fuentes
desconocidas es una operación completamente opcional y su uso es algo que se desaconseja encarecidamente.

Las reglas generales para instalar paquetes de diferentes archivos son las siguientes.
Los paquetes no binarios («Arquitectura: todas») son seguros de instalar.
• paquetes de documentación: no tienen requisitos especiales• paquetes de intérpretes: los intérpretes compatibles deben estar disponibles
Los paquetes binarios (no «arquitecturas: todas») generalmente se encuentran con bloqueos y son inseguros deinstalar.
• compatibilidad de las versiones de biblioteca (incluida «libc»)• relacionados con la compatibilidad de versiones de los programas de utilidad• Núcleo ABI de compatibilidad• C++ ABI de compatibilidad• …
nota
Para asegurar la instalación segura de un paquete, algunos paquetes binarios comerciales «non-free« pueden
incluir bibliotecas enlazadas estáticamente. Se debe comprobar su compatibilidad ABI.

Guía de referencia de Debian

76 / 257

nota
Excepto para evitar los paquetes rotos a corto plazo, instalar paquetes binarios desde archivos no Debian es
generalmente una mala idea. Deberías buscar todas las soluciones técnicas alternativas más seguras que sean
compatibles con tu sistema Debian actual (consulta Sección 2.1.11).

2.7.7. Ajustar la versión candidata con apt-pinningaviso
El uso de apt-pinning por parte de un usuario novato es una llamada segura a problemas mayores. Debes
evitar utilizar apt-pinning excepto cuando sea absolutamente necesario.

Sin el archivo «/etc/apt/preferences», el sistema APT elige la versión candidata como la última versión disponible
utilizando la versión de la cadena de caracteres. Este es el proceso normal y recomendado para el uso del sistema APT. Todas
las combinaciones de repositorios con soporte oficial no necesitan el archivo «/etc/apt/preferences» ya que algunos
repositorios no deberían usarse para realizar actualizaciones y para que el funcionamiento sea el correcto se marcan como NotAutomatic.
sugerencia
La forma en que se comparan las cadenas de caracteres de las versiones se pueden verificar mediante, p. ej.,
«dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?» (consulte dpkg(1)).

Cuanso se usa como origen para instalación de paquetes, un conjunto mixto de repositorios con regularidad (ver Sección 2.7.6),
mediante el archivo «/etc/apt/preferences» se puede automatizar este tipo de operaciones complejas, creando dicho
archivo con las entradas adecuadas y modificando la forma en que se seleccionan la versión candidata de los paquetes según sedescribe en apt_preferences(5). Esta operación recibe el nombre de alteración de la selección de paquetes (apt-pinning).
Cuando uses apt-pinning, debes asegurarte de la compatibilidad de los paquetes ya que Debian no los garantiza. apt-pinning es
una operación completamente opcional y su uso no te lo recomendamos.
Los ficheros de la distribución a nivel del archivo (ver Sección 2.5.3) se usan para la regla de apt_preferences(5). Así aptpinning funciona sólo con el nombre ”suite” para archivos Debian normales y archivos Debian de seguridad. (Esto es diferentede los archivos Ubuntu.) Por ejemplo, puede hacer ”Pin: release a=unstable” pero no puede hacer ”Pin: releasea=sid” en el archivo ”/etc/apt/preferences”.
Cuando uses archivos que no sean de Debian como parte de apt-pinning, deberías comprobar para qué están pensados y también
comprobar su credibilidad. Por ejemplo, Ubuntu y Debian no están pensados para mezclarse.
nota
Incluso si no creas el archivo ”/etc/apt/preferences”, puedes realizar operaciones de sistema bastante complejas (ver Sección 2.6.6 y Sección 2.7.6) sin apt-pinning.

He aquí una explicación simplificada de la técnica apt-pinning.
El sistema APT elige el valor de la prioridad de pin (Pin-Priority) mayor actualizando el paquete desde la fuente disponible
indicado en el archivo «/etc/apt/sources.list» como el paquete de la versión candidata. Si la «pin-priority« del paquetees mayor que 1000, esta restricción de la versión para la actualización se descarta para permitir realizar un «downgrading«(consulte Sección 2.7.11).
El valor Pin-Priority de cada paquete se define por las entradas de «Pin-Priority« en el archivo «/etc/apt/preferences»o usa su valor por defecto.
El archivo target release se puede establecer mediante la opción de la línea de comandos, por ejemplo, ”apt-get install-t testing some-package”

77 / 257

Guía de referencia de Debian

Pin-Priority
1001
990
500
100
100
1
-1

efectos de apt-pinning al paquete
instala el paquete incluso si esto significa una desactualización del paquete
se usa como valor por defecto para la distribución objetivo del repositorio
se usa como valor por defecto para el repositorio normal
utilizado por defecto para el archivo NotAutomatic y ButAutomaticUpgrades
usada para el paquete instalado
usado como el valor por defecto para repositorios «NotAutomatic«
no instalar nunca el paquete aunque se recomiende
Cuadro 2.18: Relación de valores Pin-Priority importantes para la técnica apt-pinning.

Los repositorios «NotAutomatic« y «ButAutomaticUpgrades« lo asigna el servidor teniendo su archivo de nivel «Release« (ver Sección 2.5.3) contiene tanto «NotAutomatic: yes» como «ButAutomaticUpgrades: yes». El repositorio«NotAutomatic« lo asigna el servidor teniendo su archivo de nivel «Release« «NotAutomatic: yes».
La situación de apt-pinning del paquete de múltiples fuentes de archivo se muestra mediante ”política apt-cachepaquete”.
Una línea que empieza por «Package pin:» muestra la versión del paquete de pin si la asociación se define solo con
package p. ej., «Package pin:0.190».
No existirá la línea !Package pin:» si no se ha definido ninguna asociación con el paquete.
El valor de «Pin-Priority« asociado con el paquete se muestra en el lado derecho de todas las cadenas de caracteres de lasversiones, p. ej. 0.181 700».
«0» se muestra a la derecha de todas las cadenas de caracteres de las versiones si esta definida la asociación con el paquete p.
ej., «0.181 0».

Los valores de la Pin-Priority de los repositorios (definido como «Package: *» en el archivo «/etc/apt/preferences») se muestra a la izquierda de todas las rutas de archivo, p.ej., «100 http://deb.debian.org/debian/ bookworm-backpo
Packages».

2.7.8. Bloqueo de la instalación de paquetes recomendados («Recommends«)

aviso
El uso de apt-pinning por parte de un usuario novato es una llamada segura a problemas mayores. Debes
evitar utilizar apt-pinning excepto cuando sea absolutamente necesario.

Si no deseas importar los paquetes específicos que se recomiendan, debes crear el archivo ”/etc/apt/preferences” yenumerar esos paquetes explícitamente en la parte superior del archivo como se muestra a continuación.
Package: package-1
Pin: version *Pin-Priority: -1
Package: package-2
Pin: version *Pin-Priority: -1

Guía de referencia de Debian78 / 257

2.7.9. Seguimiento «en pruebas» con algunos paquetes de «inestable»aviso
El uso de apt-pinning por parte de un usuario novato es una llamada segura a problemas mayores. Debes
evitar utilizar apt-pinning excepto cuando sea absolutamente necesario.

Este es un ejemplo de la técnica de apt-pinning para incluir paquetes específicos de versiones anteriores más recientes que seencuentran en unstable que se actualizan periódicamente durante el seguimiento de testing . Enumera todos los archivos
necesarios en el archivo ”/etc/apt/sources.list” de la siguiente manera.
deb http://deb.debian.org/debian/ testing main contrib non-freedeb http://deb.debian.org/debian/ unstable main contrib non-freedeb http://security.debian.org/debian-security testing-security main contrib

Establezca el archivo ”/etc/apt/preferences” de la siguiente manera.
Package: *Pin: release a=unstable
Pin-Priority: 100

Cuando desee instalar un paquete llamado «nombre_del_paquete» con sus dependencias desde el respositorio «inestable»
con esta configuración, debe ejecutar la orden siguiente que cambia la distribución del repositorio con la opción «-t» (Pin-Priorityof «inestable» con el valor 990).
$ sudo apt-get install -t unstable package-nameCon esta configuración la actualización de paquetes «apt-get upgrade» y «apt-get dist-upgrade» (o «aptitudesafe-upgrade» y «aptitude full-upgrade») se realiza de la siguiente manera: los paquetes que han sido instalados
desde el repositorio «en pruebas» usan su correspondiente repositorio «en pruebas» y los paquetes instalados desde ladistribución «inestable» usan su correspondiente repositorio «inestable».
atenciónTenga cuidado con eliminar la entrada «testing» del archivo «/etc/apt/sources.list». Sin dicha entrada «testing» en él, el sistema APT actualizará los paquetes usando la nueva distribución«inestable».

sugerencia
Generalmente edito el archivo «/etc/apt/sources.list» para comentar la entrada ««inestable»» del archivo justo después de realizar la operación anterior. Esto evita que el proceso de actualización se ralentice por
tener demasiadas entradas en el archivo «/etc/apt/sources.list» aunque esto impide que se actualicen lospaquetes que fueron instalados desde el repositorio «inestable» usando dicho repositorio actual.

sugerencia
Si se utiliza «Pin-Priority: 1 « en vez de «Pin-Priority: 100» en el archivo« /etc/apt/preferences «, los paquetes instalados con anterioridad que tienen un valor de Pin-Priority de
100 no se actualizarán del repositorio «inestable» incluso si se elimina la entrada ««en pruebas»» delarchivo «/etc/apt/sources.list».

Si deseas realizar un seguimiento de determinados paquetes en inestables de forma automática sin la instalación inicial de”-t inestables”, debes crear el archivo ”/etc/apt/preferences” y enumerar explícitamente todos esos paquetes enla parte superior del mismo como se indica a continuación.

Guía de referencia de Debian

79 / 257

Package: package-1
Pin: release a=unstable
Pin-Priority: 700
Package: package-2
Pin: release a=unstable
Pin-Priority: 700

Esto realiza un ajuste del valor de «Pin-Priority« para cada paquete. Por ejemplo, con el fin de mantener la última versión de«inestable» de esta «Referencia de Debian« en inglés, usted debe tener la siguiente entrada en el archivo «/ etc/apt/preferenc
Package: debian-reference-en
Pin: release a=unstable
Pin-Priority: 700
Package: debian-reference-common
Pin: release a=unstable
Pin-Priority: 700

sugerencia
Esta técnica de apt-pinning es válida incluso cuando se está rastreando el archivo stable (estable). Los paquetes
de documentación han sido siempre seguros de instalar desde unstable (inestable) archivo en mi experiencia,
hasta ahora.

2.7.10.

Mantener unstable (inestable) con algunos paquetes de experimental

aviso
El uso de apt-pinning por parte de un usuario novato es una llamada segura a problemas mayores. Debes
evitar utilizar apt-pinning excepto cuando sea absolutamente necesario.

He aquí otro ejemplo de la técnica apt-pinning para incluir paquetes específicos de versiones upstream más recientes encontrados en experimental mientras se rastrea unstable (inestable). Tu enumeras todos los archivos requeridos en el”/etc/apt/sources.list” como el siguiente.
deb http://deb.debian.org/debian/ unstable main contrib non-freedeb http://deb.debian.org/debian/ experimental main contrib non-freedeb http://security.debian.org/ testing-security main contrib

El valor por defecto de «Pin-Priority« para el repositorio experimental es siempre 1(<<100) ya que es un repositorio «NotAutomatic«(ver Sección 2.5.3). No es necesario asignar de forma explícita un valor «Pin-Priority« en el archivo «/etc/apt/preferences»
para usar el repositorio experimental a menos que quieras mantener determinados paquetes de forma automática en la siguiente actualización.

2.7.11. Volver al estado anterior por emergencia

aviso
El uso de apt-pinning por parte de un usuario novato es una llamada segura a problemas mayores. Debes
evitar utilizar apt-pinning excepto cuando sea absolutamente necesario.

Guía de referencia de Debian

80 / 257

atención
El hecho de volver a un estado anterior no esta soportado oficialmente por el diseño de Debian. Debe serhecho únicamente como parte de un proceso de recuperación de emergencia. Aparte de esta situación, es
una técnica que funciona muy bien para muchos problemas. En sistemas críticos debe realizar una copia
de respaldo de todos los datos del sistema antes de realizar una operación de recuperación y reinstalar elsistema desde el principio.

Puede tener suerte en volver de una versión nueva de un repositorio a una vieja al recuperarse de una actualización que rompa
el sistema manipulando la versión_candidata (see Sección 2.7.7). Esta es una posibilidad lenta a realizar la tediosa acción deejecutar muchas órdenes «dpkg -i paquete_roto_versión_antigua.deb» (consulte Sección 2.6.6).
Busca en el archivo ”/etc/apt/sources.list” las líneas que usan inestable como se muestra a continuación.
deb http://deb.debian.org/debian/ sid main contrib non-free

Sustitúyalo por lo siguiente para mantener «en pruebas».
deb http://deb.debian.org/debian/ trixie main contrib non-freeEstablezca el archivo ”/etc/apt/preferences” de la siguiente manera.
Package: *Pin: release a=testing
Pin-Priority: 1010

Ejecute «apt-get update; apt-get dist-upgrade» para forzar la vuelta al estado anterior del sistema completo.
Elimine es fichero particular «/etc/apt/preferences» después de la vuelta atrás de emergencia.
sugerencia
Es una buena idea eliminar (¡que no purgar!) tantos paquetes como sea posible para minimizar los problemasde dependencias. Puede necesitar eliminar de forma manual e instalar algunos paquetes para tener un sistema
restaurado. El núcleo de Linux, bootloader, udev, PAM, APT y los paquetes de red y sus archivos de configuración
pueden necesitar atención especial.

2.7.12.

El paquete «equivs«

Si ha compilado un programa fuente para sustituir a un paquete Debian, la mejor forma de hacerlo es crear un paquete local«debianizado« (*.deb) y usar un repositorio privado.
Si en lugar de ello elige compilar un programa desde su código fuente e instalarlo en «/usr/local» , puede que necesite
equivs para la menos satisfacer las dependencias ausentes del paquete.
Package: equivs
Priority: optional
Section: admin
Description: Circumventing Debian package dependencies
This package provides a tool to create trivial Debian packages.
Typically these packages contain only dependency information, but they
can also include normal installed files like other packages do.
.
One use for this is to create a metapackage: a package whose sole
purpose is to declare dependencies and conflicts on other packages sothat these will be automatically installed, upgraded, or removed.
.
Another use is to circumvent dependency checking: by letting dpkg
think a particular package name and version is installed when it
isn’t, you can work around bugs in other packages’ dependencies.
(Please do still file such bugs, though.)81 / 257

Guía de referencia de Debian

2.7.13.

Portar un paquete a un sistema estableatenciónNo hay garantía de que el procedimiento descrito aquí funcione sin esfuerzos manuales adicionales paralas diferencias del sistema.

Para actualizaciones parciales de un sistema stable (estable), es deseable reconstruir un paquete con su entorno usando elpaquete fuente. Esto evita las actualizaciones masivas de paquetes necesarias por sus dependencias.
Añada las siguientes entradas al archivo «/etc/apt/sources.list» de un sistema stable (estable).
deb-src http://deb.debian.org/debian unstable

main contrib non-free

Instala los paquetes necesarios para la compilación y descarga los paquetes de las fuente de la siguiente manera.
# apt-get update# apt-get dist-upgrade# apt-get install fakeroot devscripts build-essential# apt-get build-dep foo$ apt-get source foo$ cd foo*

Actualice los paquetes de herramientas como dpkg y debhelper de los paquetes «backport« si son necesarios para portarlo
hacia atrás.
Ejecuta lo siguiente.
$ dch -i

Cambie la versión del paquete, p. ej. concatenado con «+bp1» en «debian/changelog»
Crea los paquetes e instálalos en el sistema de la siguiente manera.
$ debuild$ cd ..
# debi foo*.changes

2.7.14.

Servidor proxy para APT

Debido a que duplicar toda la subsección del archivo Debian desperdicia ancho de banda del disco duro y de la red, es una buena
idea implementar un servidor proxy local para APT cuando administra muchos sistemas en una LAN . APT se puede configurar para usar servidores proxy web genéricos (http) como squid (ver Sección 6.5), ver apt.conf(5 ) y ”/usr/share/doc/apt/exampl
La variable de entorno ”$http_proxy anula el servidor proxy establecido en el archivo ”/etc/apt/apt.conf”.
Existen herramientas especiales proxy para repositorios Debian. Compruebe BTS antes de usarlos.
paquetepopularidad

approx

V:0, I:0

apt-cacher

V:0, I:0

apt-cacher-ng

V:4, I:4

tamaño descripción
Servidor de caché proxy para archivos del repositorio Debian7124(programa OCaml compilado)
Proxy caché para archivos de código fuente y paquetes Debian266(programa Perl)
Proxy caché para la distribución de paquetes de software (programa
1816
compilado en C++)

Cuadro 2.19: Relación de herramientas de proxy especificas para el repositorio Debian

Guía de referencia de Debian

82 / 257

atención
Cuando Debian reorganiza la estructura del repositorio, estas herramientas proxy especializadas necesitanla reescritura de su código por parte del desarrollador Debian y pueden no ser operativas durante cierto
tiempo. Por otro lado, los servidores proxy genéricos web (http) son más robustos y es más fácil hacer
frente a esos cambios.

2.7.15.

Más información acerca de la gestión de paquetes

Puedes obtener más información sobre la gestión de los paquetes en los siguientes documentos.
Documentación principal de la gestión de paquetes:• aptitude(8), dpkg(1), tasksel(8), apt(8), apt-get(8), apt-config(8), apt-key(8), sources.list(5), apt.conf
and apt_preferences(5);• «/usr/share/doc/apt-doc/guide.html/index.html» y «/usr/share/doc/apt-doc/offline.html/indedel paquete apt-doc; y• «/usr/share/doc/aptitude/html/en/index.html» para el paquete aptitude-doc-en.
Documentación oficial y detallada del repositorio Debian:• «Capítulo 2 del Manual de Directrices Debian - El repositorio Debian«,• «Capítulo 4 de la Referencia del Desarrollador Debian - Recursos para desarrolladores Debian 4.6 El repositorio Debian« y• «Capítulo 6 de las Preguntas frecuentes de Debian GNU/Linux - El repositorio FTP Debian«.
Tutorial para la construcción de paquetes Debian por usuarios de Debian:• «Guía para desarrolladores Debian».

Guía de referencia de Debian

83 / 257

Capítulo 3

La inicialización del sistema
Es inteligente por su parte como administrador de sistemas conocer profundamente como el sistema Debian comienza y se configura. Aunque los detalles concretos están en el código fuente de los paquetes instalados y su documentación, es un poco abrumadorpara la mayoría de nosotros.
Lo siguiente es una descripción general de los puntos principales de la inicialización de un sistema Debian. Dado que el sistema
Debian evoluciona constantemente, debe consultar la documentación más reciente.
El Manual del kernel de Debian Linux es la principal fuente de información sobre el kernel de Debian.
bootup(7) describe el proceso de arranque del sistema basado en systemd . (Debian reciente)boot(7) describe el proceso de arranque del sistema basado en UNIX System V Release 4. (Older Debian)

3.1. Un resumen del proceso de arranqueUn sistema informático pasa por diferentes fases en el proceso de arranque desde el encendido hasta que le ofrece al usuario lafuncionalidad completa del sistema operativo (SO).
Por simplicidad, limité la discusión a la de una típica plataforma PC con la instalación por defecto.
El proceso normal de arranque es como un cohete de cuatro fases. Cada fase del cohete cede el control del sistema a la siguiente.
Sección 3.1.1
Sección 3.1.2
Sección 3.1.3
Sección 3.1.4
Desde luego, esto puede ser configurado de otra manera. Por ejemplo, si compila su propio núcleo, puede saltar el paso del sistemamini-Debian. Así que, por favor, no asuma cuál es el caso de su sistema hasta que no lo compruebe por si mismo.

3.1.1. Fase 1: UEFILa Interfaz del firmware extensible unificada (UEFI) define un administrador de arranque como parte de la especificación UEFI.
Cuando se enciende un ordenador, el administrador de inicio es la primera etapa del proceso de inicio que verifica la configuraciónde inicio y, según su configuración, luego ejecuta el cargador de inicio del sistema operativo o el kernel del sistema operativo
especificado (generalmente el cargador de inicio). La configuración de arranque está definida por variables almacenadas en la
NVRAM, incluidas las variables que indican las rutas del sistema de archivos a los cargadores o kernels del sistema operativo.
Una partición de sistema EFI (ESP) es una partición de dispositivo de almacenamiento de datos que se usa en ordenadores que
se adhieren a la especificación UEFI. Accedido por el firmware UEFI cuando se enciende un ordeandor, almacena aplicaciones
UEFI y los archivos que estas aplicaciones necesitan para ejecutarse, incluidos los cargadores de arranque del sistema operativo.
(En el sistema de PC heredado, se puede usar la BIOS almacenada en el MBR)84 / 257

Guía de referencia de Debian

3.1.2. Fase 2: el cargador de arranque
El cargador de arranque es la segunda fase del proceso de arranque que comienza con la UEFI. Carga la imagen del núcleo delsistema y la imagen de initrd en memoria y pasa el control a estos. La imagen de initrd es la imagen del sistema de archivos raíz
y su compatibilidad depende del cargador usado.
El sistema Debian normalmente usa el kernel Linux como el kernel del sistema predeterminado. La imagen initrd para el kernelLinux 5.x actual es técnicamente la imagen initramfs (sistema de archivos RAM inicial).
Hay disponibles muchos cargadores de arranque y opciones de configuración.
paquetepopularidad

tamaño initrd

cargador dearranquegrub-efi-amd64

I:339

184

SoporteGRUB
UEFI

grub-pc

V:21, I:634

557

SoporteGRUB 2grub-rescue-pc

V:0, I:06625

SoporteGRUB 2syslinux

V:3, I:36

344

SoporteIsolinux

syslinux

V:3, I:36

344

SoporteSyslinux

loadlin

V:0, I:090

SoporteLoadlinmbr

V:0, I:4

47

No
soportado

MBR porNeil Turton

descripción
Esto es lo bastante inteligente como para
comprender las particiones de disco ylos sistemas de archivos como vfat, ext4,…. (UEFI)
Es lo bastante inteligente para
comprender las particiones de disco ylos sistemas de archivos como vfat, ext4,…. (BIOS)
Imagen de rescate de inicio GRUB 2(CD and disquete) (versión PC/BIOS)
Entiende el sistema de archivos
ISO9660. Es usado por arranque de CD.
Entiende el sistema de archivos MSDOS(FAT). Es usado para el arranque dedisquete.
Nuevo sistema para el arranque delsistema FreeDOS/MSDOS.
Este el software libre que sustituye
MBR de MSDOS. Solo comprende
particiones de disco.

Cuadro 3.1: Relación de cargadores de arranqueaviso
No pruebe cargadores de inicio sin tener un medio de inicio de rescate (USB, CD o disquete) creado delas imágenes del paquete grub-rescue-pc. Ello le permite iniciar su sistema incluso sin un cargador deinicio operativo en el disco duro.

Para el sistema UEFI, GRUB2 primero lee la partición ESP y usa el UUID especificado para search.fs_uuid en ”/boot/efi/EFI/para determinar el partición del archivo de configuración del menú GRUB2 ”/boot/grub/grub.cfg”.
Las secciones clave del archivo de configuración del menú de GRUB2 se ven así:menuentry ’Debian GNU/Linux’ ... {load_video
insmod gzio
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root fe3e1db5-6454-46d6-a14c-071208ebe4b1
echo’Loading Linux 5.10.0-6-amd64 ...’
linux
/boot/vmlinuz-5.10.0-6-amd64 root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ←ro quiet
echo’Loading initial ramdisk ...’

85 / 257

Guía de referencia de Debian

initrd/boot/initrd.img-5.10.0-6-amd64}

Para esta parte de /boot/grub/grub.cfg, esta entrada de menú significa lo siguiente.
configuración
Módulos GRUB2 cargados
usada la partición del sistema de archivos raízvalor
gzio, part_gpt, ext2
partición identificada por
UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1

ruta de la imagen del núcleo en el sistema dearchivos raíz/boot/vmlinuz-5.10.0-6-amd64

parámetro de arranque del núcleo utilizado”root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1
ro quiet”

ruta de la imagen initrd en el sistema dearchivos raíz/boot/initrd.img-5.10.0-6-amd64

Cuadro 3.2: El significado de la entrada del menú de la parte anterior de /boot/grub/grub.cfg

sugerencia
Puedes habilitar la visualización de los mensajes del registro de arranqueminando quiet en ”/boot/grub/grub.cfg”. Para el cambio persistente,”GRUB_CMDLINE_LINUX_DEFAULT=”quiet”” en ”/etc/default/grub”.

del kernel eliedita la línea

sugerencia
Puedes personalizar la imagen de presentación de GRUB configurando la variable GRUB_BACKGROUND en”/etc/default/grub” apuntando al archivo de imagen o colocando el archivo de imagen en ”/ boot/grub/”.

Consulte «info grub» y grub-install(8).

3.1.3. Fase 3: el sistema mini-Debian
El sistema mini-Debian es la fase 3 del proceso de arranque que comienza con el cargador de arranque. Este ejecuta el núcleo delsistema con el sistema de archivos raíz en memoria. Esta es una fase preparatoria opcional del proceso de arranque.
nota
En este documento el término «el sistema mini-Debian« es como el autor describe la tercera fase del proceso dearranque. El sistema se conoce como initrd o sistema initramfs. El instalador de Debian usa un sistema parecido
en memoria.

El primer programa que se ejecuta en el sistema de archivo raíz en memoria es /init». Es un programa que inicia el núcleo en elespacio de usuario y entrega el control para la próxima fase. Este sistema mini-Debian ofrece flexibilidad al módulo al proceso dearranque, como agregar módulos del núcleo antes de que el proceso principal de arranque o el montaje de un sistema de archivos
raíz cifrado.
El programa /inites una secuencia de códigos si initramfs ha sido creado por initramfs-tools.
• Puede interrumpir esta parte del proceso de arranque para obtener un intérprete de órdenes de supuerusuario dándole alarranque del núcleo el parámetro «break=init» etc. Consulte el archivo de órdenes /init» para conocer más formas deinteracción. Este entorno del intérprete de órdenes es suficientemente complejo para realizar una reconocimiento avanzadodel hardware de su equipo.

86 / 257

Guía de referencia de Debian• Las órdenes disponibles en este sistema mini-Debian son básicas y las funciones principales las aporta la herramienta GNU
llamada busybox(1).
El programa /init es un programa binario systemd si initramfs fue creado por dracut.
• Los comandos disponibles en este sistema mini-Debian son básicamente el ambiente systemd(1).

atención
Necesita utilizar el parámetro «-n» en la orden mount cuando interaccione con el sistema de solo lecturadel sistema de archivos raíz.

3.1.4. Fase 4: el sistema normal Debian
El sistema normal Debian es la cuarta fase del proceso de arranque el cual comienza con el sistema mini-Debian. El núcleo delsistema para el sistema mini-Debian continua ejecutándose en este entorno. El sistema de archivos raíz cambio del que existe en
memoria a uno real sobre el sistema de archivos en disco duro.
El programa init se ejecuta en primer lugar con el PID=1 preparando el proceso de arranque principal para el comienzo demuchos programas. La ruta de archivo por defecto para el programa init es «/usr/sbin/init» pero se puede modificar por
un parámetro de arranque del núcleo como «init=/path/to/init_program».
”/usr/sbin/init” tiene un enlace simbólico a ”/lib/systemd/systemd” después de Debian 8 Jessie (lanzado en 2015).
sugerencia
Puede comprobar cual es el sistema init real que usa su equipo mediante la orden «ps --pid 1 -f».

paquetepopularidad

systemd

V:860, I:966

cloud-init

V:3, I:5

systemd-sysv

V:832, I:964

tamaño descripción
Demonio init(8) basado en actos con concurrencia (opción a11168
sysvinit)
sistema de inicialización para instancias de la infraestructura en la
2870
nube
las páginas de manual y los enlaces necesarios para que systemd
80
reemplace a sysvinit

init-system-helpers
V:699, I:974

130

herramientas de ayuda para cambiar entre sysvinit y systemd

initscripts
sysvinit-coresysv-rc
sysvinit-utils

V:33, I:133
V:4, I:5
V:66, I:145
V:897, I:999

198
361
88
102

lsb-base

V:634, I:675

12

insserv

V:88, I:144

132

kexec-tools
V:1, I:6
systemd-bootchart
V:0, I:0316

archivos de órdenes de inicio y parada del sistema
Programa estilo System-V init(8)Mecanismo de cambio del nivel de ejecución estilo System-V
Programas estilo System-V (startpar(8), bootlogd(8), …)Funcionalidad de secuencia de órdenes «Linux Standard Base« init
3.2
herramientas para organizar la secuencia de arranque usando lasdependencias del archivo de órdenes init.d LSB
Reinicio (reinicio caliente) kexec(8) de la herramienta kexec

131

analizador de desempeño del proceso de arranque

V:0, I:2
V:0, I:036315únicamente para consola getty(8)sustituto de «modem« inteligente getty(8)mingetty
mgettyCuadro 3.3: Relación de sistemas de arranque en el sistema Debian

Guía de referencia de Debian

87 / 257

sugerencia
Ver la wiki de Debian : AcelerandoElProcesodeArranque para los consejos actualizados para mejorar la velocidaddel proceso de arranque.

3.2. Systemd
3.2.1. Arranque de systemd
Cuando se inicia el sistema Debian, /usr/sbin/init enlazado a /usr/lib/systemd se inicia como el proceso init delsistema (PID=1) propiedad de root (UID=0). Ver systemd(1).
El proceso de inicio de systemd genera procesos en paralelo en función de los archivos de configuración de la unidad (versystemd.unit(5)) que están escritos en estilo declarativo en lugar de un estilo de procedimiento similar a SysV .
Los procesos generados se colocan en grupos de control de Linux individuales con el nombre de la unidad a la que pertenecen enla jerarquía privada de systemd (ver cgroups y Sección 4.7.5).
Las unidades para el modo sistema se cargan desde la ”Ruta de la búsqueda de las unidades del sistema” descrita en systemd.unit(5).
Las principales por prioridad son las siguientes:”/etc/systemd/system/*”: Unidades del sistema creadas por el administrador”/run/systemd/system/*”: Unidades de tiempo de ejecución”/lib/systemd/system/*”: Unidades del sistema instaladas por el gestor de paquetes de la distribución
Las interdependencias se describen mediante directivas «Wants=», «Requires=», «Before=», «After=», …(ver ”MAPPING OF UNIT PROPERTIES TO THEIR INVERSES” en systemd.unit(5)). El control de recursos también se define (versystemd.resource-control(5)).
El sufijo del archivo de configuración de la unidad codifica sus tipos como:*.service describe el proceso que está controlado y supervisado por systemd. Consulte systemd.service(5).
*.device describe el dispositivo utilizado por sysfs(5) como el árbol de dispositivos udev(7). Consulte systemd.device(5).
*.mount describe el punto de montaje del sistema de archivos que está controlado y supervisado por systemd. Consulte
systemd.mount(5).
*.automount describe puntos de automontaje de sistemas de archivos que están controlados y supervisados por systemd.
Consulte systemd.automount(5).
*.swap describe dispositivos o archivos de intercambio controlado y supervisado por systemd. Ver systemd.swap(5).
*.path describe rutas supervisadas por systemd para la activación basada en la ruta. Consulte systemd.path(5).
*.socket describe conexiones controladas y supervisadas por systemd para la activación basada en conexiones. Consulte
systemd.socket(5).
*.timer describe el temporizador controlado y supervisado por systemd para la activación en función de temporizadores.
Consulte systemd.timer(5).
*.slice gestiona recursos mediante cgroups(7). Consulte systemd.slice(5).
*.scope se crean de forma programada utilizando los interfaces del bus de systemd para gestionar un conjunto de procesosdel sistema. Ver systemd.scope(5).
Los grupos *.target y otros archivos de configuración de unit se usan para crear puntos de sincronización durante el arranque.
Consulte systemd.target(5).

88 / 257

Guía de referencia de DebianTras el arranque del sistema (esencialmente init), el proceso systemd intenta iniciar /lib/systemd/system/default.target(normalmente enlazado simbólicamente a ”graphical.target”. Primero, algunas unidades objetivo especiales (ver systemd.spe
como ”local-fs.target”, ”swap.target” y ”cryptsetup.target” son llamadas a montar el sistema de archivos.
Luego, otras unidades objetivo son llamadas por las dependencias de la unidad objetivo. Para más detalles, lea bootup(7).
Systemd ofrece características de compatibilidad con versiones anteriores. Los archivos de órdenes de inicio de estilo SysV
en «/etc/init.d/rc[0123456S].d/[KS]< name» son también analizados y telinit(8) se traducen a peticiones deactivación de systemd.

atención
Los niveles de inicio emulados«multi-user.target».

del

dos

al

cuatroson

enlacessimbólicos

al

mismo

3.2.2. Inicio de sesión en Systemd
Cuando un usuario se conecta al sistema Debian a través de gdm3(8), sshd(8), etc., /lib/systemd/system --user seinicia como el proceso de gestor de servicios del usuario propiedad del usuario correspondiente. Ver systemd(1).
El proceso de gestor de servicios del usuario systemd genera procesos en paralelo basándose en los archivos declarativos de laconfiguración de unidades (ver systemd.unit(5) y user@.service(5)).
Las unidades para el modo de usuario se cargan desde la ”Ruta de búsqueda de unidades del usuario” descrita en systemd.unit(5).
Las principales son las siguientes en orden de prioridad:”~/.config/systemd/user/*”: Unidades de configuración del usuario”/etc/systemd/user/*”: Unidades de usuario creadas por el administrador”/run/systemd/user/*”: Unidades de tiempo de ejecución”/lib/systemd/user/*”: Unidades del usuario instaladas por el gestor de paquetes de la distribución
Se gestionan del mismo modo que Sección 3.2.1.

3.3. Los mensajes del núcleo
El mensaje de error que se muestra en la consola se determina mediante la configuración de su nivel de umbral.
# dmesg -n3

valor del nivel de error
0
1
2
3
4
5
6
7

nombre del nivel de error
KERN_EMERGKERN_ALERTKERN_CRIT
KERN_ERRKERN_WARNING
KERN_NOTICEKERN_INFOKERN_DEBUG

significado
sistema no usable
se deben tomar medidas de forma inmediata
estado crítico
estado de error
estado de aviso
estado normal pero significativo
información
mensajes de depuración

Cuadro 3.4: Lista de niveles de error del núcleo

89 / 257

Guía de referencia de Debian

3.4. El sistema de mensajes

En systemd, se registran diariamente tanto los mensajes del núcleo como los del sistema por el servicio systemd-journald.servi(también conocido como journald) ya sea en un archivo binario persistente debajo de ”/var/log/journal” o en datos binarios volátiles debajo de ”/run/log/journal/”. Se accede a estos datos de registro binario mediante el comando
journalctl(1). Por ejemplo, puede mostrar el registro desde el último arranque como:$ journalctl -b

Operación
Ver el registro de los servicios del sistema y el
kernel desde el último arranque
Ver el registro de los servicios del usuario
actual desde el último arranque
Ver el registro de las tareas de ”$unit” delúltimo arranque
Ver el registro de trabajos de ”$unit” (estilo”tail -f”) desde el último arranque.

nombre de la orden,”journalctl -b --system””journalctl -b --user””journalctl -b -u $unit””journalctl -b -u $unit -f”

Cuadro 3.5: Lista de fragmentos de comando típicos de journalctl

En systemd, la utilidad de registro del sistema rsyslogd(8) puede estar desinstalada. Si está instalada, cambia su comportamiento para leer los datos de registro binarios volátiles (en lugar del valor predeterminado anterior al sistema ”/dev/log”) y paracrear datos de registro permanentes tradicionales del sistema ASCII. Esto se puede personalizar mediante ”/etc/default/rsyslog”
y ”/etc/rsyslog.conf” tanto para el archivo de registro como para la visualización en pantalla. Ver rsyslogd(8) yrsyslog.conf(5). Ver también Sección 9.3.2.

3.5. Gestión del sistema
systemd ofrece no solo init system sino también operaciones genéricas de administración del sistema con el comando systemctl(1).
Aquí, ”$unit” en los ejemplos anteriores puede que sea solo nombre de unidad (los sufijos como .service y .target son
opcionales) o , en muchos casos, especificaciones de unidades múltiples (shell-style globs ”*”, ”?”, ”[]” usando fnmatch(3)que se comparará con los nombres principales de todas las unidades actualmente en memoria).
Los comandos de cambio de estado del sistema en los ejemplos anteriores suelen estar precedidos por ”sudo” para tener elprivilegio administrativo necesario.
La salida de ”systemctl status $unit|$PID|$device” usa puntos de colores (”●”) para resumir el estado de la unidad
de un vistazo.
Un ”●” blanco indica un estado ”inactivo” o en estado de ”desactivación”.
Un ”●” rojo indica un estado de ”fallo” o ”error”.
Un ”●” verde indica el estado ”Activo”, ”Recargando” o ”Activando”.

3.6. Otros monitores del sistema
Aquí hay una lista de otros comandos de monitoreo impares bajo systemd. Lee las páginas más relevantes, incluidas cgroups(7).

90 / 257

Guía de referencia de DebianOperación
Lista de todos los tipos de unidades disponibles
Lista de todas las unidades de destino enmemoria
Lista de todas las unidades de servicio en
memoria
Listar todas las unidades de dispositivo enmemoria
Listar todas las unidades de montaje enmemoria
Listar todas las unidades socket en memoria
Listar todas las unidades de temporizador en
memoria
Iniciar ”$unit”
Detener ”$unit”
Recargar la configuración específica delservicioParar y arrancar todo ”$unit”
Iniciar ”$unit” y detener todas las demás
cambiar a ”graphical” (sistema de interfaz
gráfica)
Cambiar a ”multiusuario” (sistema delínea de comandos)
Cambiar a ”rescate” (sistema CLI deusuario único)Enviar kill a ”$unit”
Ver si el servicio ”$unit” está activado
Ver si el servicio ”$unit” ha fallado
Comprobar el estado de”$unit|$PID|device”
Mostrar las propiedades de”$unit|$job”
Fallo en el reset ”$unit”
Listar la dependencia de todos los servicios dela unidad
Lista de archivos de unidad instalados en elsistema
Habilitar ”$unit” (añadir symlink)
Desactivar ”$unit” (eliminar enlacesimbólico)desbloquear ”$unit” (eliminar el enlacesimbólico a ”/dev/null”)
Máscara ”$unidad” (enlace simbólico
agregado a ”/dev/null”)
Obtener la configuración del destinopredeterminado
Establece el objetivo predeterminado en”graphical” (sistema gráfico)
Establece el objetivo predeterminado en”multiusuario” (sistema CLI)
Mostrar el entorno de trabajo
Establecer entorno de trabajo ”variable” a”value”
Entorno de trabajo no fijado en”variable”
Recargar todos los archivos de unidades y
demonios
Apagar el sistema
Apagar y reinicio del sistema
Suspender el sistema
Hibernar el sistema

nombre de la orden,”systemctl list-units --type=help””systemctl list-units --type=target””systemctl list-units --type=service””systemctl list-units --type=device””systemctl list-units --type=mount””systemctl list-sockets””systemctl list-timers””systemctl start $unit””systemctl stop $unit””systemctl reload $unit””systemctl restart $unit””systemctl isolate $unit””systemctl isolate graphical””systemctl isolate multi-user””systemctl isolate rescue””systemctl kill $unit””systemctl is-active $unit””systemctl is-failed $unit””systemctl status $unit|$PID|$device””systemctl show $unit|$job””systemctl reset-failed $unit””systemctl list-dependencies --all””systemctl list-unit-files””systemctl enable $unit””systemctl disable $unit””systemctl unmask $unit””systemctl mask $unit””systemctl get-default””systemctl set-default graphical””systemctl set-default multi-user””systemctl show-environment””systemctl set-environment variable=value””systemctl unset-environment variable””systemctl daemon-reload””systemctl poweroff””systemctl reboot””systemctl suspend””systemctl hibernate”

Cuadro 3.6: Lista de típicos snippets de comandos systemctl

91 / 257

Guía de referencia de DebianOperación
Mostrar el tiempo dedicado a cada paso de la
inicialización
Lista de todas las unidades en el momento deinicializar
Cargar y detectar errores en el archivo”$unit”
Mostrar breve información del estado detiempo de ejecución del usuario que llama
Mostrar breve información del estado detiempo de ejecución del usuario que llama
Seguimiento del proceso de arranque por elcgroups
Seguimiento del proceso de arranque por elcgroups
Seguimiento del proceso de arranque por elcgroups

nombre de la orden,”systemd-analyze time””systemd-analyze blame””systemd-analyze verify $unit””loginctl user-status””loginctl session-status””systemd-cgls””ps xawf -eo pid,user,cgroup,args”
Leer sysfs bajo ”/sys/fs/cgroup/”

Cuadro 3.7: Lista de otros fragmentos de comandos de supervisión en systemd

3.7. Configuración del sistema
3.7.1. El nombre del equipo (hostname)El núcleo mantiene el nombre del equipo del sistema. El archivo de órdenes de init en el nivel de ejecución S, el cual es unenlace simbólico a «/etc/init.d/hostname.sh» asigna el nombre del sistema en tiempo de arranque (usando la orden
hostname) al nombre almacenado en «/etc/hostname». Este archivo debería contener únicamente el nombre del sistema,no un nombre de dominio totalmente cualificado (FQDN).
Para obtener el nombre del equipo actual ejecute hostname(1) sin ningún parámetro.

3.7.2. El sistema de archivos
Las opciones de montaje de discos normales y de sistemas de archivos en red se configuran en «/etc/fstab». Ver fstab(5)y Sección 9.6.7.
Los sistemas de archivos cifrados se configuran en «/etc/crypttab». Ver crypttab(5)La configuración de RAID mediante software con mdadm(8) está en «/etc/mdadm/mdadm.conf». Ver mdadm.conf(5).

aviso
Una vez montados todos los sistemas de archivos , los archivos temporales en «/tmp», «/var/lock» y«/var/run» se borran en cada inicio.

3.7.3. Inicialización del interfaz de red
Comunmente el interfaz lo se inicializa mediante «networking.service» y el resto de interfaces de un sistema de escritorio
moderno Debian que use systemd mediante «NetworkManager.service».
Para configurarlos consulte Capítulo 5.

Guía de referencia de Debian

92 / 257

3.7.4. Inicialización del sistema en la nube
La instancia del sistema en la nube puede lanzarse como un clon de ”Imágenes oficiales de la nube de Debian” o imágenes
similares. Para dicha instancia del sistema, personalidades como el nombre de host, el sistema de archivos, la red, la configuración
regional, las claves SSH, los usuarios y los grupos pueden configurarse utilizando funcionalidades proporcionadas por los paquetes
cloud-init y netplan.io con múltiples fuentes de datos como archivos colocados en la imagen original del sistema y datos
externos proporcionados durante su lanzamiento. Estos paquetes permiten la configuración declarativa del sistema utilizando datos
YAML.
Más información en ”Computación en nube con Debian y sus descendientes”, ”Documentación de Cloud-init” y Sección 5.4.

3.7.5. Ejemplo de personalización para ajustar el servicio sshd
Con la instalación predeterminada, muchos servicios de red (ver Capítulo 6) se inician como procesos demonios después denetwork.target en el arranque por systemd. No es una excepción ”sshd”. Cambiemos esto a inicio bajo demanda de”sshd” como ejemplo de personalización.
Primero, deshabilite la unidad de servicio instalada en el sistema.
$ sudo systemctl stop sshd.service$ sudo systemctl mask sshd.service

El sistema de activación de sockets bajo demanda de los clásicos servicios de Unix era a través del superservidor inetd (oxinetd). Bajo systemd, se puede habilitar el equivalente añadiendo *.socket y *.service archivos de configuración de launidad.
sshd.socket para especificar un socket de escucha[Unit]
Description=SSH Socket for Per-Connection Servers[Socket]
ListenStream=22
Accept=yes[Install]WantedBy=sockets.target

sshd@.service como el archivo de servicio de sshd.socket[Unit]
Description=SSH Per-Connection Server[Service]
ExecStart=-/usr/sbin/sshd -i
StandardInput=socket

Entonces, vuelve a cargar.
$ sudo systemctl daemon-reload

3.8. El sistema udev
Desde el núcleo de Linux 2.6 en adelante, udev system > aporta mecanismos automáticos de descubrimiento e inicialización (verudev(7)). Después del descubrimiento de cada dispositivo por parte del núcleo, el sistema udev comienza un proceso de usuario
el cual usa la información del sistema de archivos sysfs filesystem (ver Sección 1.2.12), carga los módulos necesarios para elnúcleo mediante el programa modprobe(8) (ver Sección 3.9) y crea los nodos de dispositivo correspondientes.

Guía de referencia de Debian

93 / 257

sugerencia
Si por cualquier motivo «/lib/modules/núcleo-version/modules.dep» no fue generado correctamente
por depmod(8) , los módulos no pueden ser cargados por el sistema udev como se debería. Para solucionarlo
ejecute «depmod -a».
Para las reglas de montaje de «/etc/fstab», los nodos de dispositivos no necesitan nombres estáticos. Se
puede usar UUID para los dispositivos montados en lugar de los nombres de los dispositivos como «/dev/sda».
Ver Sección 9.6.3.

Ya que udev es un sistema en evolución, dejaré los detalles para otra documentación y se describirá de forma mínima aquí.
aviso
No intente ejecutar programas de larga duración como el script de copia de seguridad con RUN en las reglasudev como se menciona en udev(7). Por favor, cree un archivo systemd.service(5) apropiado y actívelo
en su lugar. Ver Sección 10.2.3.2.

3.9. La inicialización del módulo del núcleo
El programa modprobe(8) nos permite configurar el núcleo de Linux en ejecución desde el proceso de usuario añadiendo oeliminando módulos al núcleo. El sistema udev (ver Sección 3.8) automatiza su llamada para ayudar a la inicialización de módulos
en el núcleo.
No existen módulos que no correspondan a hardware ni módulos controladores de hardware especiales como los que necesitan
ser precargados al estar enumerados en el archivo «/etc/modules» (ver modules(5)).
Los módulos TUN/TAP aportan el dispositivo virtual de red punto a punto (TUN) y el dispositivo virtual de red ethernet (TAP),
Los módulos netfilter aportan capacidades de cortafuego (iptables(8), Sección 5.7) ylos módulos del controlador watchdog timer.
Los archivos de configuración del programa modprobe(8) están ubicados en el árbol bajo el directorio «/etc/modprobes.d/»como se detalla en modprobe.conf(5). (Si quiere evitar que algunos módulos del núcleo se carguen de forma automática, inclúyalos en la lista negra que es el archivo «/etc/modprobes.d/blacklist».)El archivo «/lib/modules/version/modules.dep» creado por el programa depmod(8) describe las dependencias delos módulos usados por el programa modprobe(8).
nota
Si tiene problemas en la carga de módulos cuando se inicia su carga de módulos o con modprobe(8), «depmod-a» puede solucionarlo reconstruyendo «modules.dep».

El programa modinfo(8) muestra información acerca de los módulos del núcleo de Linux.
El programa lsmod(8) da formato al contenido de «/proc/modules», mostrando los módulos del núcleo que están cargados
en este momento.
sugerencia
Puede determinar cual es el hardware de su sistema. Ver Sección 9.5.3.
Puede configurar su hardware en tiempo de arranque y activar las funcionalidades del hardware conocidas. Ver
Sección 9.5.4.
Seguramente pueda añadir soporte a sus dispositivos especiales recompilando el núcleo. Ver Sección 9.10.

94 / 257

Guía de referencia de Debian

Capítulo 4

Autenticación y controles de acceso
Cuando una persona (o programa) necesita acceso al sistema, la acreditación confirma que la identidad es confiable.
aviso
Una configuración errónea de PAM puede bloquearlo en su propio sistema. Debe tener un CD de rescatea mano o configurar una partición de arranque alternativa. Para recuperarlo inicie el sistema con uno deestos y corrija los errores cometidos.

4.1. Acreditación normal de Unix
La autenticación Unix normal la proporciona el módulo pam_unix(8) bajo PAM (Módulos de autenticación conectables). Sus
3 archivos de configuración importantes, con entradas separadas ”:”, son los siguientes.
archivo/etc/passwd

permisos-rw-r--r--usuario
root

grupo
root

/etc/shadow-rw-r-----

root

shadow/etc/group-rw-r--r--

root

root

descripción(limpia) información de la cuenta de usuario
información de seguridad de la cuenta deusuario
información de grupo

Cuadro 4.1: los tres archivos importantes de configuración de pam_unix(8)”/etc/passwd” contiene lo siguiente.
...
user1:x:1000:1000:User1 Name,,,:/home/user1:/bin/bash
user2:x:1001:1001:User2 Name,,,:/home/user2:/bin/bash...

Como se explica en contraseña(5), cada entrada separada ”:” de este archivo significa lo siguiente.
Nombre de acceso
Entrada de especificación de contraseña
ID de usuario numérico
ID numérico de grupo
Nombre de usuario o comentario

95 / 257

Guía de referencia de Debian

Directorio raíz del usuario
Intérprete de órdenes opcional de usuario
La segunda entrada de «/etc/passwd» se usaba para guardar la contraseña cifrada. Después de la introducción de «/etc/shadow»,
esta entrada se usa para especificar la entrada de la contraseña.
contenido(vacio)x

significado
cuenta sin contraseña
la contraseña cifrada esta en «/etc/shadow»
Cuadro 4.2: El contenido de la segunda entrada de «/etc/passwd»”/etc/shadow” contiene lo siguiente.
...
user1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7:::
user2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7:::...

Como se explica en shadow(5), cada entrada separada ”:” de este archivo significa lo siguiente.
Nombre de acceso
Contraseña cifrada (El «$1$» inicial indica el uso del cifrado MD5. El carácter ”*” indica sin acceso a la cuenta.)
Fecha del último cambio de contraseña, expresado en el número de días desde el 1 de Enero de 1970
Número de días que el usuario tiene que esperar antes de que se le permita cambiar la contraseña de nuevo
Número de días después del cual el usuario puede cambiar su contraseña
Número de días antes de que la contraseña deje de ser válida durante los cuales se avisará al usuario de ello
Número de días después de que una contraseña ha dejado de ser válida en los cuales la contraseña todavía será aceptada
Fecha de expiración de la cuenta, expresada en el número de días desde 1 de Enero de 1970…
”/etc/group” contiene lo siguiente.
group1:x:20:user1,user2

Como se explica en grupos(5), cada entrada separada ”:” de este archivo significa lo siguiente.
Nombre del grupo
Contraseña cifrada (no usado)
ID numérico de grupo
relación de los nombres de usuario separados por ”,”
nota«/etc/gshadow» aporta la misma funcionalidad que «/etc/shadow» para «/etc/group» pero no se usa en
realidad.

96 / 257

Guía de referencia de Debiannota
La pertenencia real a un grupo por parte de un usuario puede ser añadido de forma dinámica si lalínea «auth optional pam_group.so» esta añadida en «/etc/pam.d/common-auth» y activada en«/etc/security/group.conf». Ver pam_group(8).

nota
El paquete base-passwd contiene una relación de acreditaciones«/usr/share/doc/base-passwd/users-and-groups.html».

deusuariosygrupos:4.2. Gestionando información de cuentas y contraseñas
Aquí están algunas órdenes relevantes para la gestión de información de cuentas.
orden
getent passwd nombre_de_usuario
getent shadow nombre_de_usuario
getent group nombre_del_grupo
passwdpasswd -e
chage

función
navega por la información de la cuenta de «nombre_de_usuario»
navega por la información de cuenta «oculta« de«nombre_de_usuario»
navega por la información del grupo «nombre_del_grupo»
gestiona la contraseña de la cuenta
asigna una contraseña de un solo uso para la activación de la cuenta
gestión de la información de la vejez de la contraseña

Cuadro 4.3: Relación de órdenes para la gestión de información de las cuentas
Puede necesitar privilegios de superusuario para que funcionen alguna operación. Ver crypt(3) sobre el cifrado de la contraseña
y datos.
nota
En un sistema configurado con PAM y NSS como el equipo Debian salsa, el contenido local de «/etc/passwd»,«/etc/group» y «/etc/shadow» pueden no estar activados en el sistema. Incluso bajo estas circunstancias
las órdenes son válidas.

4.3. Buenas contraseñas
Cuando se crea una cuenta durante la instalación de su sistema o con la orden passwd(1), puede elegir una buena contraseña lacual consiste al menos de 6 a 8 caracteres incluyendo uno o más caracteres de cada uno de los conjuntos siguientes de acuerdo a
passwd(1).
letras en minúscula
Dígitos de 0 hasta 9
Signos de puntuación
aviso
No elija para la contraseña palabras fáciles de adivinar. Nombre de la cuenta, número de la Seguridad
Social, nombre del teléfono, dirección, fecha de nacimiento, nombre de los miembros de su familia o mascotas, palabras del diccionario, secuencias simples de caracteres como «12345« o «qwerty«, son una malaelección para la contraseña.

97 / 257

Guía de referencia de Debian

4.4. Creando una contraseña cifrada
Existen herramientas independientes para generar contraseñas cifradas con una semilla.
paquetepopularidad

tamaño

orden

whois

V:25, I:251

387

mkpasswd

openssl

V:841, I:995

2111

openssl
passwdfunción
interfaz con múltiples funcionalidades de la
biblioteca crypt(3)resúmenes criptográficos de las contraseñas(OpenSSL). passwd(1ssl)

Cuadro 4.4: Relación de herramientas para generar contraseñas

4.5. PAM y NSS
Los sistemas modernos similares a Unix (como los sistemas Debian) proporcionan PAM (módulos de autenticación conectables,
módulos de autenticación conectables) y NSS (Cambio de servicio de nombres, Cambio de servicio de nombres) mecanismo paraadministradores de sistemas locales, que les permite configurar sus propios sistemas. Sus funciones se pueden resumir en lossiguientes puntos.
PAM ofrece mecanismos flexibles de acreditación que los usan las aplicaciones software mediante el intercambio de datos decontraseñas.
NSS ofrece un mecanismo de servicios de nombre flexible el cual se usa de forma habitual por la biblioteca C estándar paraobtener el nombre del usuario y el grupo para programas como ls(1) e id(1).
Estos sistemas PAM y NSS necesitan configurarse de forma coherente.
Los paquetes importantes en los sistemas PAM y NSS son los siguientes.
paquetelibpam-modules
libpam-ldap
libpam-cracklib

popularidad
V:889, I:999
V:0, I:6

tamaño descripción
984
Módulos de acreditación conectables (servicios básicos)
249
PAM permite conectar con servicios LDAP

V:0, I:8

117

libpam-systemd

V:571, I:936

627

libpam-doc

I:0

152

libc6

V:917, I:999

12988

glibc-doc
I:8
glibc-doc-reference
I:4

3503
13841

libnss-mdns

I:510

141

libnss-ldap

I:5

265

libnss-ldapd

I:15

129

PAM para dar soporte a cracklib
Módulo de autenticación conectable (PAM) para logind pararegistrar sesiones de usuario
PAM (documentación en html y texto)
Biblioteca GNU C: bibliotecas compartidas que ofrecen también elintercambio del servicio de nombres
Biblioteca GNU C: Manpages
Biblioteca GNU C: Manual de Referencia en info, formatos pdf yhtml («non-free«)Módulo NSS para resolución de nombres DNS sin servidor DNS
Módulo NSS para su integración con el servicio de nombres por
LDAP
Módulo NSS para utiliza LDAP como servicio de nombres (nueva
bifurcación de libnss-ldap)

Cuadro 4.5: Relación de sistemas PAM y NSS relevantes

Es esencial para aprender a configurar PAM «The Linux-PAM System Administrators’ Guide« en libpam-doc.

98 / 257

Guía de referencia de Debian

El documento principal para aprender a configurar NSS es «System Databases and Name Service Switch« section en glibc-doc-ref
nota
Puede obtener una relación más completa y actualizada mediante la orden «aptitude search’libpam-|libnss-’». El acrónimo NSS también tiene el significado de «Servicio de Seguridad de Red(Network Security Service) que es diferente de «Intercambio del Servicio de Nombres« (Name Service Switch).

nota
PAM es la forma fundamental para la inicialización de las variables de entorno para cada programa con un valordiferente al que ofrece el sistema por defecto.

En systemd, se instala el paquete libpam-systemd para administrar los inicios de sesión de los usuarios especificando logind se
implementa mediante el registro de sesiones de usuario en la jerarquía del grupo de control systemd. Ver systemd-logind(8),logind.conf(5) y pam_systemd(8).

4.5.1. Archivos de configuración utilizados por PAM y NSS
Aquí están algunos de los archivos de configuración más importantes usados por PAM y NSS.
archivo de configuración/etc/pam.d/nombre_de_programa/etc/nsswitch.conf/etc/nologin/etc/securetty/etc/security/access.conf/etc/security/group.conf/etc/security/pam_env.conf/etc/environment/etc/default/locale/etc/security/limits.conf/etc/security/time.conf/etc/systemd/logind.conf

función
Realice la configuraciñon de PAM para el programa«nombre_del_programa»; consulte pam(7) y pam.d(5)Realice la configuración NSS con una registro para cada servicio.
Consulte nsswitch.conf(5)Acote los usuario con permisos de inicio por medio del módulo
pam_nologin(8)acote el acceso a tty para el superusuario por medio del módulo
pam_securetty(8)acote los permisos de acceso mediante el módulo pam_access(8)restrinja los grupos básicos por medio del módulo pam_group(8)asigne variables de entorno mediante el módulo pam_env(8)asigne más variables de entorno mediante el módulo pam_env(8) conel parámetro «readenv=1»
establecer la configuración regional mediante el módulo pam_env(8)con el argumento ”readenv=1
envfile=/etc/default/locale” (Debian)establecer la restricción de los recursos (ulimit, core, ...) mediante elmódulo pam_linits(8)establecer la restricción de tiempo mediante el módulo pam_time(8)Establece la configuración del administrador de inicio de sesión parasystemd (ver logind.conf(5) ysystemd-logind.service(8))

Cuadro 4.6: Relación de archivos de configuración utilizados por PAM y NSS
Las normas para la selección de contraseñas se desarrolla en los módulos PAM, pam_unix(8) y pam_cracklib(8). Se pueden
configurar por sus parámetros.
sugerencia
Los nombres de archivos de los módulos de PAM usan el sufijo «.so».

Guía de referencia de Debian

99 / 257

4.5.2. La actual gestión centralizada de sistemas
La gestión moderna de sistemas centralizados puede desplegarse empleando un servidor central LDAP (Protocolo Ligero deAcceso a Directorios) que administre los sistemas en la red, sean estos tipo Unix o de otro tipo. La implementación de código
libre de este protocolo es el software OpenLDAP.
El servidor LDAP proporciona información de la cuenta mediante PAM y NSS con los paquetes libpam-ldap y libnss-ldap
del sistema Debian. Se necesitan distintas acciones para activarlo (La siguiente configuración no está comprobada y es información totalmente secundaria. Por favor léala en este contexto).
Puede configurar un servidor centralizado LDAP ejecutando un programa como el demonio LDAP centralizado, slapd(8).
Cambie los archivos de configuración PAM en el directorio «/etc/pam.d/» para usar «pam_ldap.so» en vez de la opción
por defecto «pam_unix.so».

• Debian utiliza los archivos «/etc/pam_ldap.conf» para la configuración de libpam-ldap y «/etc/pam_ldap.secret»para archivar la contraseña de root.
Cambie la configuración NSS en el archivo «/etc/nsswitch.conf» para usar ldap en vez de la opción por defecto(«compat» o «file»).
• Debian utiliza el archivo «/etc/libnss-ldap.conf» para la configuración de libnss-ldap.
Una contraseña segura necesita que libpam-ldap use conexiones SSL (o TLS).
La integridad de los datos necesita que libnss-ldap utilice conexiones SSL (o TLS) con la sobrecarga de red de LDAP.
Debería ejecutar nscd(8) para que la caché almacene cualquier resultado de una búsqueda de LDAP con el fin de reducir eltráfico de red de LDAP.

Consulte los documentos pam_ldap.conf(5) y «/usr/share/doc/libpam-doc/html/» que contiene el paquete libpam-doe «info libc ’Name Service Switch’» que contiene el paquete glibc-doc.
De forma parecida, se pueden instalar sistemas centralizados para otro métodos.
Integración de usuarios y grupos con sistemas Windows.
• Se accede a servicios de dominio Windows por medio de los paquetes winbind y libpam_winbind.
• Consulte winbindd(8) y Integración de redes MS Windows con Samba.
Integración de usuarios y grupos con sistemas tipo Unix antiguos.
• Acceso a NIS (originalmente llamado páginas amarillas (YP) o NIS+ mediante el paquete nis.
• Consulte «The Linux NIS(YP)/NYS/NIS+ HOWTO«.

4.5.3. «Razones por las que GNU no tienen la funcionalidad del grupo wheel«
Esta frase famosa al final de la página antigua de «info su» de Richard M. Stallman. Para no preocuparse: la orden actual su en Debian usa PAM, así este puede limitar el uso de su al grupo root habilitando la línea «pam_wheel.so» en«/etc/pam.d/su».

4.5.4. Regla estricta para contraseñas
Instale el paquete libpam-cracklib y podrá aplicar estrictas reglas de contraseña.
En un sistema GNOME típico, donde se instalaría libpam-gnome-keyring, ”/etc/pam.d/common-password” severía así:100 / 257

Guía de referencia de Debian# here are the per-package modules (the ”Primary” block)password requisite
pam_cracklib.so retry=3 minlen=8 difok=3
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass
yescrypt# here’s the fallback if no module succeeds
password requisite
pam_deny.so# prime the stack with a positive return value if there isn’t one already;# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump aroundpassword required
pam_permit.so# and here are more per-package modules (the ”Additional” block)password optional pam_gnome_keyring.so# end of pam-auth-update config←-

4.6. Acreditación de seguridadnota
La información que se facilita aquí puede no ser suficiente para la seguridad que necesita pero puede ser unbuen comienzo.

4.6.1. Contraseñas seguras en Internet
Los servicios de la capa de transporte más usados usan mensajes que incluyen la acreditación mediante contraseñas en texto plano.
Es una mala idea emitir contraseñas en texto plano en una red descentralizada donde se pueden interceptar. Puede ejecutar estos
servicios sobre la «Capa de Transporte Segura« (TLS) o su predecesor «Secure Sockets Layer« (SSL) para asegurar por mediodel cifrado todas las comunicaciones incluidas las contraseñas.
Nombre del servicio
inseguro
www (http)smtp (mail)ftp-data
ftp
telnet
imap2
pop3
ldap

puerto
80
25
20
21
23
143
110
389

nombre del servicio
segurohttps
ssmtp (smtps)
ftps-data
ftps
telnets
imaps
pop3s
ldaps

puerto
443
465
989
990
992
993
995
636

Cuadro 4.7: Relación de servicios y puertos seguros e inseguros
El coste de tiempo de CPU del cifrado. Como alternativa más eficiente para la CPU, se pueden mantener las comunicaciones
en texto plano y securizando la contraseña con el protocolo de acreditación como «Protocolo de Acreditación de Oficina deCorreos (Authenticated Post Office Protocol, APOP )« para POP y «Mecanismo de acreditación reto-respuesta MD5(ChallengeResponse Authentication Mechanism MD5, CRAM-MD5)« para SMTP e IMAP. (Para el envío de mensajes de correo en Internet
a su servidor de correo desde su cliente de correo, se ha vuelto usual el uso del puerto 587 para la recepción de mensajes en vez deltradicional puerto 25 SMTP para evitar el bloqueo del puerto 25 por el proveedor de red mientras se acredita con CRAM-MD5.)

4.6.2. «Secure Shell«
El programa Secure Shell (SSH) ofrece comunicaciones cifradas seguras entre dos equipos no confiables sobre una red insegura
con acreditación segura. Consiste en el cliente OpenSSH, ssh(1) y el demonio OpenSSH, sshd(8). Este SSH se puede usar para101 / 257

Guía de referencia de Debian

realizar un túnel de un protocolo de comunicación inseguro como es POP y asegurar X sobre Internet con la funcionalidad dereenvío de puerto (port forwarding).
El cliente intenta acreditarse a si mismo usando la acreditación basada en equipos, acreditación de clave pública, acreditación
reto-respuesta, o acreditación por contraseña. El uso de acreditación por clave pública permite acceso remoto sin contraseña.
Consulte Sección 6.3.

4.6.3. Medidas extraordinarias de seguridad en Internet
Incluso si ejecutas servicios de seguridad como Secure Shell (SSH) y protocolo de tunelización punto a punto (PPTP), En Internet,
todavía existe la oportunidad de obtener acceso mediante ataques de adivinación de contraseñas de fuerza bruta. El uso de una
política de firewall (ver Sección 5.7), junto con las siguientes herramientas de seguridad, puede mejorar la situación de seguridad.
paqueteknockdfail2banlibpam-shieldpopularidad
V:0, I:2
V:98, I:111
V:0, I:0

tamaño
110
2126
115

descripción
Pequeño demónio port-knock knockd(1) y cliente knock(1)prohibición de las IPs con múltiples errores de acreditación
bloquea atacantes remotos que intentan adivinar contraseñas

Cuadro 4.8: Relación de herramientas que aportan medidas extra de seguridad

4.6.4. Asegurando la contraseña de root
Para evitar que las personas accedan a tu máquina con privilegios de root, debes realizar las siguientes acciones.
Impide el acceso físico al disco duro
Bloquee UEFI/BIOS y evita el arranque desde los medios extraíbles
Asigne una contraseña a las sesiones interactivas de GRUB
Bloquee la edición del menú de GRUB
Si tienes acceso físico al disco duro, puedes restablecer la contraseña con relativa facilidad siguiendo los siguientes pasos.
1. Lleve el disco duro a un ordenador que pueda configurar UEFI/BIOS para que arranque desde un CD.
2. Arranque el sistema con un medio de rescate (disco de arranque Debiam. Knoppix CD, GRUB CD, ...).
3. Monte la partición raíz con permisos de lectura/escritura.
4. Edita ”/etc/passwd” en la partición root y haz que la segunda entrada para la cuenta root esté vacía.
Si tienes acceso de edición a la entrada del menú del GRUB (consulta Sección 3.1.2) para grub-rescue-pc en el momentodel arranque, es aún más fácil con los siguientes pasos.
1. Arranque el sistema con el argumento del núcleo cambiado a algo como «root=/dev/hda6 rw init=/bin/sh».
2. Edite «/etc/passwd» y cree una segundo registro para una cuenta de root vacía.
3. Reinicie el sistema.
El intérprete de órdenes del superusuario del sistema es accesible sin contraseña.

Guía de referencia de Debian

102 / 257

nota
Una vez que tiene acceso al intérprete de órdenes del superusuario, tiene acceso a todo en el sistema y puedecambiar cualquier contraseña del sistema. Incluso, se pueden comprometer las contraseñas de todos los usuarios
por medio de herramientas de «cracking« de fuerza bruta como los paquetes john y crack packages (ver Sección 9.5.11). Estas contraseñas pirateadas pueden servir para comprometer otros sistemas.

La única solución software razonable es evitar lo anterior con la utilización de software que cifra la partición raíz (o la partición«/etc») usando dm-crypt e initramfs (ver Sección 9.9). Sin embargo, siempre necesitará la contraseña para arrancar el sistema.

4.7. Otros controles de acceso
Existen controles de acceso al sistema además de la autenticación basada en contraseña y los permisos de archivo.
nota
Ver Sección 9.4.16 como limitar la funcionalidad clave de atención segura (SAK) del núcleo.

4.7.1. Listas de control de acceso (ACL)
Las ACL son un superconjunto de los permisos normales, como se explica en Sección 1.2.3.
En los entornos de escritorio modernos, las ACL entran en acción. Cuando un dispositivo de almacenamiento USB formateado semonta automáticamente como, por ejemplo, ”/media/penguin/USBSTICK”, un usuario normal penguin puede ejecutarlo:$ cd /media/penguin$ ls -latotal 16
drwxr-x---+ 1 rootroot
16 Jan 17 22:55 .
drwxr-xr-x 1 rootroot
28 Sep 17 19:03 ..
drwxr-xr-x 1 penguin penguin 18 Jan 6 07:05 USBSTICK”+” en la undécima columna indica que las ACL están en acción. Sin ACLs, un usuario normal pingüino no debería poderlistar así ya que pingüino no está en el grupo root. Puedes ver ACLs como:$ getfacl .
# file: .
# owner: root
# group: root
user::rwx
user:penguin:r-xgroup::--mask::r-x
other::---

Aquí:”usuario::rwx”, ”grupo::---” y ”otro::---” corresponden a los permisos normales de propietario, grupo y otro.
La ACL ”user:penguin:r-x” permite que un usuario normal pingüino tenga permisos ”r-x”. Esto permite a ”ls-la” listar el contenido del directorio.
La ACL ”mask::r-x” establece el límite superior de los permisos.
Ver ”Listas de control de acceso POSIX en Linux”, acl(5), getfacl(1) y setfacl(1) para más información.

Guía de referencia de Debian

103 / 257

4.7.2. sudo

sudo(8) es un programa diseñado para permitir que el administrador de sistemas conceda ciertos privilegios de superusuario a losusuarios y registre su actividad. sudo necesita únicamente la contraseña del usuario normal. Una vez instalado el paquete sudo laconfiguración se realiza en el archivo «/etc/sudoers». Ver una configuración de ejemplo en «/usr/share/doc/sudo/exampley Sección 1.1.12.
En un sistema monousuario, el uso que yo realizo de sudo (verSección 1.1.12) pretende evitar mi propia estupidez. Personalmente, considero el uso de sudo como la mejor alternativa al uso de la cuenta de superusuario de forma constante. Por ejemplo,
lo siguiente cambia el dueño de «un_archivo» a «mi_nombre».
$ sudo chown my_name some_file

Desde luego si conoce la contraseña de «root« (como la conoce cualquier usuario que se instala Debian), cualquier orden puede
ser ejecutada por «root« desde cualquier cuenta de usuario utilizando «su -c».

4.7.3. PolicyKit
PolicyKit es un componente del sistema operativo con el fin de controlar los privilegios del sistema en toda su extensión parasistemas operativos tipo Unix.
Los nuevas aplicaciones de interfaz gráfico de usuario no están diseñadas para ejecutarse como procesos privilegiados. Se comunican con los procesos privilegiados a través de PolicyKit realizando de forma eficiente las operaciones administrativas.
PolicyKit restringe cada operación a cuentas de usuario que pertenecer al grupo sudo en el sistema Debian.
Ver polkit(8).

4.7.4. Restricción de acceso a algunos servicios del servidor
Para la seguridad del sistema, es una buena idea deshabilitar tantos programas del servidor como sea posible. Esto es crítico enservidores en red. Tener servidores sin utilidad, ejecutándose como demonios o por medio de un programa super servidor, seconsidera un riesgo de seguridad.
Muchos programas, como sshd(8), utilizan PAM como control de acceso. Existen muchas maneras de limitar el acceso a algunos
servicios de servidor.
archivos de configuración: «/etc/default/nombre_programa»
Configuración de la unidad de servicio Systemd para demonio
PAM (Módulos de Autenticación Insertables (Pluggable Authentication Modules))«/etc/inetd.conf» para el super servidor«/etc/hosts.deny» y «/etc/hosts.allow» para TCP wrapper, tcpd(8)«/etc/rpc.conf» para Sun RPC«/etc/at.allow» y «/etc/at.deny» para atd(8)«/etc/cron.allow» y «/etc/cron.deny» para crontab(1)Cortafuegos de red de la infraestructura netfilter
Ver Sección 3.5, Sección 4.5.1, y Sección 5.7.
sugerencia
Los servicios Sun RPC necesitan estar activos para NFS y otros programas basados en RPC.

Guía de referencia de Debian

104 / 257

sugerencia
Si tiene problemas de acceso remoto en sistemas Debian recientes, comente las configuraciones que lo restringen como «ALL: PARANOID« en «/etc/hosts.deny» si existe. (Pero debe tener cuidado con los riesgos deseguridad que este tipo de acciones tienen.)

4.7.5. Características de seguridad de LinuxEl kernel de Linux ha evolucionado y admite características de seguridad que no se encuentran en las implementaciones tradicionales de UNIX.
Linux soporta atributos extendidos que amplían los atributos tradicionales de UNIX (ver xattr(7)).
Linux divide los privilegios tradicionalmente asociados con el superusuario en distintas partes, conocidas como capacidades(7),que se puede habilitar y deshabilitar de forma independiente. Las capacidades son un atributo por subproceso desde la versión
2.2 del kernel.
La infraestructura Linux Security Module (LSM proporciona un mecanismo para varias pruebas de seguridad para que sean unidas
por nuevas extensiones del kernel. Por ejemplo:
AppArmor
Security-Enhanced Linux (SELinux)
Smack (Kernel de control de acceso obligatorio simplificado)Linux Tomoyo
Dado que estas extensiones pueden endurecer el tipo de privilegio más estricto que las políticas ordinarias de tipo de seguridad
similares a las de Unix, incluso se puede restringir el poder de root. Recomendamos leer el documento marco de Linux Security
Module (LSM) en kernel.org.
Linux namespaces empaqueta un recurso del sistema global en una abstracción que hace aparecer a los procesos dentro del espaciode nombres que tienen su propia instancia aislada del recurso global. Los cambios en el recurso global son visibles a otros procesos
que son miembros del espacio de nombres, pero son invisibles a otros procesos. Desde el kernel 5.6, hay 8 tipos de espacios denombres (ver namespaces(7), unshare(1), nsenter(1)).
A partir de Debian 11 Bullseye (2021), Debian utiliza jerarquía de grupos unificados (a.k.a. cgroups-v2).
Ejemplos de uso de namespaces con cgroups para aislar sus procesos y permitir el control de recursos son:
Systemd. Ver Sección 3.2.1.
Sandbox environment. Ver Sección 7.7.
Contenedores Linux tales como Docker, LXC. Ver Sección 9.11.
Estas funcionalidades no se pueden realizar por Sección 4.1. Estos temas avanzados están fuera del alcance de este documento
introductorio.

Guía de referencia de Debian

105 / 257

Capítulo 5

Configuración de redsugerencia
Como guía de especifica de red moderna de Debian, lea Manual del Administrador de Debian - Configuración dered.

sugerencia
Con systemd, networkd se puede usar para la gestión de redes. Ver systemd-networkd(8).

5.1. La infraestructura de red básica
Revisemos la infraestructura de red básica de un moderno sistema Debian.

5.1.1. La resolución del nombre del equipo
La resolución de nombres de host actualmente es compatible con el mecanismo NSS (Name Service Switch). El flujo de esteanálisis es el siguiente.
1. El archivo «/etc/nsswitch.conf» con la entrada como «hosts: files dns» determina el orden de la resolución
del nombre de equipos. (Esto sustituye la vieja funcionalidad del «orden» de la entrada en «/etc/host.conf».)
2. El método files se llama en primer lugar. Si el nombre del equipo se encuentra en el archivo «/etc/hosts», devuelve
todas las direcciones válidas de esta y finaliza. (El archivo «/etc/host.conf» contiene «múltiples posibilidades».)
3. Se llama al método dns. Si el nombre del equipo se encuentra por la pregunta al Sistema de Internet de Nombres de
Dominio (DNS) que se identifican por el archivo «/etc/resolv.conf», devuelve todas las direcciones correctas paraél si existen.
Una estación de trabajo típica puede instalarse con su nombre de host establecido, por ejemplo, en ”host_name” y su nombre dedominio opcional establecido en una cadena vacía. Entonces, ”/etc/hosts” tiene el siguiente aspecto.
127.0.0.1 localhost
127.0.1.1 host_name# The following lines are desirable for IPv6 capable hosts::1
localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters106 / 257

Guía de referencia de Debianpaquetes
network-manager

popularidad

tamaño tipo

V:392, I:459

15542

config::NM

network-manager-gnome
V:121, I:369

5583

config::NM

descripción
NetworkManager (demonio): gestión de red
automatizada
NetworkManager (interfaz de usuario GNOME)

Netplan (generador): Interfaz unificada y declarativa
config::NM+networkd
para los backends NetworkManager ysystemd-networkd
herramienta estándar para subir o bajar la red
config::ifupdown(específico de Debian)config::lowcliente DHCP
level
config::helper ayudante de configuración para conexiones PPPoE
config::helper cliente que soporta WPA y WPA2 (IEEE 802.11i)
cliente Qt de interfaz de usuario para
config::helper«wpa_supplicant«herramientas para manejar las Extensiones
config::helper
Inalámbricas Linux («Linux Wireless Extensions«)
herramienta para configurar dispositivos inalámbricos
config::helper
en Linux
iproute2, IPv6 y otras configuraciones de red
config::iproute2
avanzadas: ip(8), tc(8), etc
herramientas de administración para el filtrado deconfig::Netfilter
paquetes y NAT (Netfilter)
herramientas de administración para filtrado deconfig::Netfilterpaquetes y NAT (Netfilter) (sucesor de{ip,ip6,arp,eb}tables)
prueba la accesibilidad a un equipo remoto a través depruebala red por su nombre de equipo o dirección IP(iproute2)
prueba la accesibilidad por red de un equipo remoto
pruebaespecífico mediante la dirección ARP

netplan.io

V:1, I:5319

ifupdown

V:608, I:979

199

V:217, I:981

2875

pppoeconf
wpasupplicant

V:0, I:5
V:353, I:513

186
3862

wpagui

V:0, I:1774

wireless-tools

V:179, I:244

292

iw

V:34, I:475

302

iproute2

V:736, I:972

3606

iptablesV:319, I:718

2414

nftables

V:106, I:701

182

iputils-ping

V:194, I:997

122

iputils-arping

V:3, I:36

50

iputils-tracepath
V:2, I:30

47

pruebadetermina la ruta de red a un equipo remoto

pruebamuestra o cambia la configuración de dispositivos
Ethernet

isc-dhcp-client

ethtool

V:95, I:267

739

mtr-tiny

V:5, I:46

156

mtr

V:4, I:41

209

gnome-nettool

V:0, I:17

2492

nmap

V:25, I:199

4498

tcpdump

V:17, I:175

1340

wireshark

I:45

10417

tshark

V:2, I:25

400

tcptrace

V:0, I:2

401

snort

V:0, I:02203

ntopng

V:0, I:1

15904

dnsutils

V:16, I:280

276

dlint

V:0, I:3

53

dnstracer

V:0, I:1

59

test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel
test::lowlevel

determina la ruta de red a un equipo remoto (curses)
determina la ruta de red a un equipo remoto (curses y
GTK)herramientas para operaciones de información de red
comunes (GNOME)
descubridor de red / escáner de puertos (Nmap,
consola)analizador de tráfico de red (Tcpdump, consola)
analizador de tráfico de red (Wireshark, GTK)
analizador de tráfico de red (consola)produce un resumen de las conexiones de salida con
tcpdumpsistema flexible de detección de intrusos en la red(Snort)muestra el uso de red en un navegador web
clientes de red proporcionado con BIND:
nslookup(8), nsupdate(8), dig(8)comprueba la información de zona DNS medianteconsultas al servidor de nombres
determina una cadena de servidores DNS a la fuente

Guía de referencia de Debian

107 / 257

Cada línea comienza con una dirección IP y es seguido por su nombre de equipo asociada.
La dirección IP 127.0.1.1 de la segunda línea del ejemplo puede no aparecer en otros sistemas tipo Unix. El Instalador
Debian crea esta entrada para un sistemas sin una dirección IP permanente como una solución temporal para algunos software (p.
ej. GNOME) como se documenta en el error #719621.
El nombre_host coincide con el nombre de host definido en ”/etc/hostname” (ver Sección 3.7.1).
En sistemas que tienen un dirección IP permanente, la dirección permanente se podría usar aquí en vez de 127.01.1.
En sistemas con una IP permanente y un nombre cualificado completo de dominio (FQDN) provisto por el Sistema de Nombre de
Dominio (DNS), ese canónico nombre_del_equipo.nombre_del_dominiose podría usar en lugar de solo el nombre_del_equipo.
Si el paquete resolvconf no está instalado, ”/etc/resolv.conf” es un archivo estático. Si está instalado, es un enlacesimbólico. Además, contiene información de inicialización para la estrategia de análisis. Si la DNS es IP=”192.168.11.1”,
incluye lo siguiente.
nameserver 192.168.11.1

El paquete resolvconf hace que «/etc/resolv.conf» sea un enlace simbólico y gestiona su contenido por su archivode órdenes «hook« automáticamente.
Para PC en el típico entorno LAN adhoc, el nombre del host puede resolverse a través de Multicast DNS (mDNS) además de losmétodos básicos files y dns.
Avahi ofrece un marco para el Servicio de Descubrimiento DNS «Multicast« en Debian.
Es similar a Apple Bonjour / Apple Rendezvous.
El paquete conector libnss-mdns aporta la resolución de nombres de equipo por medio de mDNS para la funcionalidad delIntercambio del Servicio de Nombres GNU (NSS) de la biblioteca GNU C (glibc).

El fichero ”/etc/nsswitch.conf” debería tener una estrofa como ”hosts: files mdns4_minimal [NOTFOUND=retu
dns” (ver /usr/share/doc/libnss-mdns/README.Debian para otras configuraciones).
Un nombre del host con el sufijo ”.local” pseudominio de nivel superior se resuelve enviando un mensaje de consulta mDNS
en un paquete UDP multidifusión utilizando la dirección IPv4 ”224.0.0.251” o la dirección IPv6 ”FF02::FB”.
nota
La expansión de los dominios genérico de alto nivel (gTLD) en el Sistema de Nombres de Dominio está en desarrollo. Tenga cuidado con la colisión de nombres cuando elige un nombre de dominio utilizado únicamente en la
LAN.

nota
El uso de paquetes como libnss-resolve junto con systemd-resolved, o libnss-myhostname, olibnss-mymachine, con listados corespondientes en la línea ”hosts” en el fichero ”/etc/nsswitch. conf”
puede anular la configuración de la red tradicional comentada anteriormente. Para más información, vernss-resolve(8), systemd-resolved(8), nss-myhostname(8) y nss-mymachines(8).

5.1.2. El nombre del interfaz de red
El systemd utiliza ”Predictable Network Interface Names” como ”enp0s25”.

108 / 257

Guía de referencia de Debian

5.1.3. EL rango de direcciones de red para una LAN
Recordemos que los rangos de direcciones de IPv4 de 32 bits reservadas para cada clase de las redes de áreas locales (LANs) delrfc1918. Estas direcciones garantizan que no existan conflictos con las direcciones propias de Internet.
nota
Las direcciones IP escritas con dos puntos son dirección IPv6, por ejemplo, ”::1” para localhost.

Clase

direcciones de redmáscara de red

ABC

10.x.x.x
172.16.x.x —172.31.x.x
192.168.0.x —192.168.255.x

255.0.0.0
255.255.0.0
255.255.255.0

bits de lamáscarade red/8/16/24

númerode lassubredes1
16
256

Cuadro 5.2: Relación de rangos de direcciones de rednota
Si una de estas direcciones se asigna a un equipo, entonces ese equipo no puede acceder a Internet de forma
directa si no a través de una pasarela que actúa como «proxy« para servicios individuales o realiza Traducciónde Direcciones de Red (NAT). El enrutador de banda ancha normalmente realiza NAT para los entornos LAN delcliente.

5.1.4. El mantenimiento de los dispositivos de red
Aunque la mayoría de los dispositivos «hardware« son admitidos por el sistema Debian, existen algunos dispositivos de red quenecesitan DFSG firmware propietario para su uso. Por favor consulte Sección 9.10.5.

5.2. La configuración moderna de red en el escritorio
Comunmente el interfaz lo se inicializa mediante «networking.service» y el resto de interfaces de un sistema de escritorio
moderno Debian que use systemd mediante «NetworkManager.service».
Debian puede gestionar la conexión de red mediante el software de gestión daemon como NetworkManager (NM) (networkmanager y paquetes asociados).
Ellos tienen sus propios interfaz gráfico de usuarios y programas de línea de órdenes como interfaces de usuario.
Tienen su propio demonio así como su motor de sistema.
Permiten la conexión sencilla entre su sistema e Internet.
Permiten la gestión sencilla de la configuración inalámbrica y cableada.
Nos permiten configurar la red de forma independiente del histórico paquete ifupdown.
nota
No use las herramientas de configuración de red automática para servidores. Estos están pensados para escritorios
móviles y portátiles.

Estas herramientas modernas de red necesitan configurarse adecuadamente para evitar conflictos con el histórico paquete ifupdown
y su archivo de configuración «/etc/network/interfaces».

Guía de referencia de Debian

109 / 257

5.2.1. Herramientas de interfaz gráfico de usuario para la configuración de red
La documentación oficial de NM en Debian se encuentra en ”/usr/share/doc/network-manager/README.Debian”.
Basicamente, la configuración de red para escritorios se hace como sigue.
1. Haga que el usuario de escritorio, p. ej. foo, pertenezca al grupo «netdev» como sigue (de otra forma, se puede hacer
de forma automática mediante D-bus en entornos de escritorio modernos como GNOME y KDE).
$ sudo usermod -a -G foo netdev

2. Mantenga la configuración de «/etc/network/interfaces» tan simple como sigue.
auto lo
iface lo inet loopback

3. Reinicia NM de la siguiente manera.
$ sudo systemctl restart network-manager

4. Configure al red por medio del interfaz gráfico de usuario.
nota
Sólo las interfaces que están no listadas en ”/etc/network/interfaces” son gestionadas por NM para evitar
conflictos con ifupdown.

sugerencia
Si
deseasampliarlascapacidadesdeconfiguración
de
la
red
de
NM,
busquelosmódulos
complementariosypaquetessuplementarios
adecuados,como
network-manager-openconnect,
network-manager-openvpn-gnome,
network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, etc.

5.3. La moderna configuración de la red sin GUI
Con systemd, la red puede configurarse en su lugar en /etc/systemd/network/. Consulte systemd-resolved(8),resolved.conf(5) y systemd-networkd(8).
Esto permite la configuración moderna de la red sin GUI.
Se puede establecer una configuración de cliente DHCP creando ”/etc/systemd/network/dhcp.network”. Por ejemplo:[Match]Name=en*[Network]
DHCP=yes

Se puede establecer una configuración de red estática creando ”/etc/systemd/network/static.network”. Por ejemplo:[Match]Name=en*[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1

Guía de referencia de Debian

110 / 257

5.4. La moderna configuración de la red para la nube
La configuración de red moderna para la nube puede utilizar los paquetes cloud-init y netplan.io (véase Sección 3.7.4).
El paquete netplan.io soporta systemd-networkd y NetworkManager como backends de la configuración de la red,y permite la configuración de la red utilizando los datos YAML. Cuando se modifica YAML:
Ejecute el comando ”netplan generate” para generar toda la configuración backend necesaria desde YAML.
Ejecute el comando ”netplan apply” para aplicar la configuración generada a los backends.
Ver ”Documentación de Netplan”, netplan(5), netplan-generate(8) y netplan-apply(8).
Ver también ”Documentación de Cloud-init” (especialmente sobre ”Fuentes de configuración” y ”Netplan Passthrough”) parasaber cómo cloud-init puede integrar la configuración de netplan.io con las fuentes de datos alternativas.

5.4.1. La moderna configuración de red para la nube con DHCP

Se puede establecer una configuración de un cliente DHCP creando un fichero con el origen de los datos ”/etc/netplan/50-dhcp.y
network:version: 2
ethernets:
all-en:match:
name: ”en*”dhcp4: true
dhcp6: true

5.4.2. La moderna configuración de red para la nube con una IP estática
Se puede establecer una configuración de red estática creando un archivo fuente de datos ”/etc/netplan/50-static.yaml”:
network:version: 2
ethernets:
eth0:
addresses:- 192.168.0.15/24
routes:- to: default
via: 192.168.0.1

5.4.3. La moderna configuración de la red para la nube con Network Manger
La configuración del cliente de red mediante la infraestructura Network Manger puede establecerse creando un archivo de origen
de datos ”/etc/netplan/00-network-manager.yaml”:
network:version: 2
renderer: NetworkManager

5.5. La configuración de red de bajo nivel
Para la configuración de red de bajo nivel en Linux, utilizar los programas iproute2 (ip(8), ...) .

111 / 257

Guía de referencia de Debian

5.5.1. Órdenes iproute2
Las órdenes Iproute2 proporcionan un conjunto completo de funcionalidades de configuración de red a nivel bajo. Aquí hay una
tabla de correspondencia entre las órdenes en desuso de net-tools y las nuevas órdenes de iproute2 etc.
net-tools en desuso

nuevas iproute2 etc.

ifconfig(8)ip addrroute(8)arp(8)
ipmaddr
iptunnel

ip route
ip neigh
ip maddr
ip tunnel

nameif(8)ifrename(8)mii-tool(8)ethtool(8)empleodispositivo con un dirección de protocolo (IPo IPv6)
entrada de tabla de rutas
entrada cache de ARP o NDISC
dirección multicast
túnel sobre IP
nombre de interfaz de red basado en la
dirección MAC
configuración de dispositivo Ethernet

Cuadro 5.3: Tabla de correspondencia entre las órdenes en desuso de net-tools y las nuevas órdenes de iproute2
Ver ip(8) y Enrutamiento avanzado de Linux & Control de tráfico.

5.5.2. Operaciones seguras de red a nivel bajo
Puede usar las órdenes de red de nivel bajo de forma segura de la forma siguiente ya que no cambian la configuración de red.
orden
ip addr show
route -n
ip route show
arp
ip neighplog
ping yahoo.com
whois yahoo.com
traceroute yahoo.com
tracepath yahoo.com
mtr yahoo.com
dig [@dns-server.com]
example.com [{a|mx|any}]
iptables -L -n
netstat -a
netstat -l --inet
netstat -ln --tcp
dlint example.com

descripción
muestra el enlace y el estado de la dirección de los interfaces activos
muestra la tabla de encaminamiento al completo en direcciones
numéricas
muestra la tabla de encaminamiento al completo en direcciones
numéricas
muestra el contenido actual de la tabla de caché ARP
muestra el contenido actual de la tabla de caché ARP
display ppp daemon log
comprueba la conexión de Internet con «yahoo.com»
comprueba quién registro «yahoo.com» en la base de datos dedominios
sigue la conexión a Internet hasta «yahoo.com»
sigue la conexión a Internet hasta «yahoo.com»
sigue la conexión a Internet hasta «yahoo.com» (de forma repetida)comprueba los registros DNS de «example.com» por«dns-server.com» para los registros «a», «mx», u «any»comprueba el filtrado de paquetes
encuentra todos los puertos abiertos
encuentra los puertos que están escuchando
encuentra los puertos (numéricos) TCP que están escuchando
comprueba la información DNS de la zona «example.com»

Cuadro 5.4: Relación de órdenes de red de bajo nivel

sugerencia
Algunas de estas herramientas de configuración de red a nivel bajo están ubicadas en «/usr/sbin/». Puede
que necesite indicar la ruta absoluta como «/usr/sbin/ifconfig» o añadir «/usr/sbin» a la relación de«$PATH» en su «~/.bashrc».

112 / 257

Guía de referencia de Debian

5.6. Optimización de la red
La optimización genérica de la red está fuera del alcance de este documento. Pasaré por encima de las materias pertinentes parauna conexión casera.
paquetes
iftop
iperf
ifstatbmon

popularidad
V:7, I:100
V:3, I:43
V:0, I:7
V:1, I:18

tamaño
93
360
60
144

ethstatus

V:0, I:340

bing
bwm-ngethstats
ipfm

V:0, I:0
V:1, I:13
V:0, I:0
V:0, I:0

80
95
23
82

descripción
muestra información del ancho de banda usado por un interfaz de redherramienta para medir el ancho de banda del Protocolo IP
Monitor de estadísticas del interfaz
monitor de ancho de banda portable y estimador de velocidad
archivo de órdenes que rápidamente mide rendimiento del dispositivo
de redcomprobador del ancho de banda estocástico empírico
pequeño y sencillo monitor de ancho de banda basado en la consola
monitor de estadísticas Ethernet basado en la consola
herramienta de análisis de ancho de banda

Cuadro 5.5: Relación de herramientas de optimización de red

5.6.1. Encontrando la MTU óptima
NM normalmente establece la Unidad de transmisión máxima (MTU) óptima automáticamente.
En algunos escenarios, después de experimentar con el envío de paquetes ICMP de varios tamaños con ping(8) con la opción”-M do”, es posible que desee configurar la MTU manualmente. La MTU es el tamaño de paquete más grande que se puede
lograr sin fragmentación de IP más 28 bytes (IPv4) o 48 bytes (IPv6). En el siguiente ejemplo, se encuentra que la MTU de laconexión IPv4 es 1460 y la MTU de la conexión IPv6 es 1500.
$ ping -4 -c 1 -s $((1500-28)) -M do www.debian.org
PING (149.20.4.15) 1472(1500) bytes of data.
ping: local error: message too long, mtu=1460--- ping statistics --1 packets transmitted, 0 received, +1 errors, 100 % packet loss, time 0ms$ ping -4 -c 1 -s $((1460-28)) -M do www.debian.org
PING (130.89.148.77) 1432(1460) bytes of data.
1440 bytes from klecker-misc.debian.org (130.89.148.77): icmp_seq=1 ttl=50 time=325 ms--- ping statistics --1 packets transmitted, 1 received, 0 % packet loss, time 0ms
rtt min/avg/max/mdev = 325.318/325.318/325.318/0.000 ms$ ping -6 -c 1 -s $((1500-48)) -M do www.debian.org
PING www.debian.org(mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e)) 1452 data bytes
1460 bytes from mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e): icmp_seq=1 ttl=47 ←time=191 ms--- www.debian.org ping statistics --1 packets transmitted, 1 received, 0 % packet loss, time 0ms
rtt min/avg/max/mdev = 191.332/191.332/191.332/0.000 ms

Esto proceso se puede automatizar por descubrimiento de la ruta MtU (Path MTU, PMTU) (RFC1191) y la orden tracepath(8).
Además de estas pautas básicas, también debe conocer la siguiente información.
El uso de cualquier método de «tunneling« (VPN etc.) puede reducir más la MTU óptima por la sobrecarga.

113 / 257

Guía de referencia de Debianentorno de red
Enlace por red telefónica
conmutada (IP: PPP)
Enlace Ethernet (IP: DHCp o fijo)

MTU

razonamiento

576

estándar

1500

estándar y por defecto

Cuadro 5.6: Guía básica para una MTU óptima
El valor de la MTU no debería ser mayor que el valor PMTU determinado de forma empírica.
El valor de MTU mayor es generalmente mejor cuando se cumplen las otras limitaciones.
El Tamaño máximo de segmento (MSS) es otra medida del tamaño del paquete. La relación entre MSS y MTU es la siguiente.
MSS = MTU - 40 en el caso de IPv4
MSS = MTU - 60 en el caso de IPv6
nota
La optimización basada en iptables(8) (ver Sección 5.7) puede fijar el tamaño del paquete por el MSS y puedeser útil para el encaminador. Ver «TCPMSS« en iptables(8).

5.6.2. Optimización TCP en redes WAN
El rendimiento TCP puede maximizarse ajustando los parámetros del tamaño del buffer TCP como en ”TCP tuning” para lamoderna WAN de gran ancho de banda y alta latencia. Hasta ahora, la configuración actual por defecto de Debian sirve bien
incluso para mi LAN conectada por el rápido servicio FTTP de 1G bps.

5.7. Infraestructura Netfilter
Netfilter aporta la infraestructura de uncortafuegos con estado y traducción de direcciones de red (NAT) por medio de módulos
del núcleo de Linux (Ver Sección 3.9).
El programa principal para usuarios de netfilter es iptables(8). Puede configurar de forma manual netfilter de forma interactiva
desde el intérprete de órdenes , guardando su estado con iptables-save(8) y restaurándolo por medio de archivo de órdenes
init iptables-restore(8) después del reinicio del sistema.
Shorewall es una herramienta que facilita la configuración de los archivos de órdenes facilitando este proceso.
Consulte la documentación en Netfilter Documentation (o en ”/usr/share/doc/iptables/html/”).
CÓMO de conceptos de red en LinuxCÓMO Filtrar Paquetes en Linux 2.4
CÓMO Linux 2.4 NAT
sugerencia
Aunque han sido escritor para la Linux 2.4, ambos, la orden iptables(8) y la función principal de netfilter se usan
en los núcleos de Linux 2.6 y 3.x.

114 / 257

Guía de referencia de Debianpaquetes

popularidad

nftables

V:106, I:701

iptablesV:319, I:718

arptables

V:0, I:1

ebtablesV:14, I:29

iptstate

V:0, I:2

ufw

V:55, I:77

gufw

V:5, I:10

firewalld

V:11, I:16

firewall-config

tamaño descripción
herramientas de administración para filtrado de paquetes y NAT
182(Netfilter) (sucesor de {ip,ip6,arp,eb}tables)
herramientas de administración de netfilter (iptables(8) para IPv4,2414
ip6tables(8) para IPv6)
herramientas de administración de netfilter (arptables(8) para
100
ARP)
herramientas de administración para netfilter (ebtables(8) para
276
puente Ethernet)
119
Control continuo del estado de netfilter (parecido a top(1))
Cortafuegos sin complicaciones (UFW) programa de gestión del859
firewall netfilter
interfaz gráfica de usuario para cortafuegos sin complicaciones
3660
(UFW)
firewalld es un programa cortafuegos de gestión dinámica con soporte
2613
para zonas de red

V:0, I:3

1163

interfaz gráfica del usuario para firewalld

shorewall-init
shorewall

V:0, I:0
V:3, I:888
3090

shorewall-lite

V:0, I:071

shorewall6

V:0, I:1

1334

V:0, I:071

inicialización de Shoreline Firewall
Shoreline Firewall,creador del archivo de configuración de netfilter
Shoreline Firewall, creador del archivo de configuración de netfilter(versión simplificada)Shoreline Firewall, creador del archivo de configuración de netfilter(versión IPv6)
Shoreline Firewall, creador del archivo de configuración de netfilter(versión simplificada para IPv6)

shorewall6-lite

Cuadro 5.7: Relación de herramientas de cortafuegos

115 / 257

Guía de referencia de Debian

Capítulo 6

Aplicaciones de red
Puede ejecutar varias aplicaciones de red una vez establecida la conectividad de red (ver Capítulo 5).
sugerencia
Puede leer una guía concreta y moderna sobre la infraestrucura de red de Debian en El Manual de Administraciónde Debian —Infraestructura de red.

sugerencia
Si habilitó la ”Verificación en dos pasos” con algún ISP, necesita obtener una contraseña de aplicación para accedera los servicios POP y SMTP desde su programa. Es posible que deba, primero, aprobar su IP de host.

6.1. Navegadores web
Existen muchos paquetes de navegadores web para acceder al contenido remoto por medio del Protocolo de Transferencia deHipertexto (Hypertext Transfer Protocol) (HTTP).
paquetechromium

popularidad
V:35, I:108

tamaño tipo
234084 X

firefox

V:10, I:15

239492 , ,firefox-esr

V:198, I:435

228981 , ,V:3, I:15

2154

,,

conforme a GNOME, HIG , Epiphany

V:24, I:106
V:0, I:5
V:15, I:187
V:25, I:344
V:3, I:20
V:3, I:28
V:1, I:12

25905
1565
2837
1948
1654
2314
5492

,,
,,
texto
,,
,,
,,
gráficos

KDE, Konqueror
Dillo, (navegador ligero basado en FLTK)
w3m
Lynx
ELinksLinks (solo texto)
Links (gráficos de consola sin X)

epiphany-browser
konqueror
dillo
w3m
lynx
elinkslinks
links2

Descripción del navegador web
Chromium, (Navegador de código abierto de Google)
Firefox (navegador de código abierto de Mozilla queestá disponible en Debian «inestable»)
Firefox ESR, (Versión de Firefox con soporte
extendido)

Cuadro 6.1: Relación de navegadores web

Guía de referencia de Debian

116 / 257

6.1.1. Spoofing de la cadena User-Agent
Para acceder a algunos sitios web demasiado restrictivos, es posible que deba falsificar la cadena User-Agent devuelta por el
programa del navegador web. Ver:
MDN Web Docs: userAgent
Chrome Developers: Anular la cadena de agente de usuario
Cómo cambiar tu agente de usuario
Cómo cambiar tu agente de usuario en Chrome, Firefox, Safari, y más
Cómo Cambiar el Agente de Usuario de Su Navegador Sin Instalar Ninguna Extensión
Cómo cambiar el agente de usuario en el navegador de Gnome (epiphany)atención
La suplantación de la cadena del agente de usuario puede causar efectos colaterales con Java.

6.1.2. extensión del navegador
Todos los navegadores GUI modernos admiten extensión del navegador basada en código fuente y se está estandarizando comoextensiones web.

6.2. El sistema de correo
Esta sección se centra en las típicas estaciones de trabajo móviles con conexiones a Internet de consumo.

atención
Si quiere tener un servidor de correo en Internet, debería leer la siguiente información básica al respecto.

6.2.1. Fundamentos de correo
Un mensaje de correo electrónico consta de tres componentes, el sobre del mensaje, la cabecera del mensaje y el cuerpo delmensaje.
SMTP utiliza la información del sobre de «destino (To)« y «origen(From)« para entregar el correo electrónico. (La informacióndel «origen(From)« también se denomina como dirección de retorno (bounce address), Origen_, etc.).
La información de la cabecera sobre el «origen(From)« y el «destine(To)« es la que muestra por parte del cliente de correo.
(Generalmente será la misma que conste en el sobre del mensaje, pero no siempre es el caso.)
El formato del mensaje de correo electrónico, que abarca los datos de cabecera y cuerpo, se amplía mediante Extensiones decorreo de Internet multiuso (MIME) desde el texto plano ASCII a otras codificaciones de caracteres, así como archivos adjuntos
de audio, vídeo, imágenes y programas de aplicación.
Los clientes de correo electrónico basados en GUI ofrecen todas las funciones siguientes mediante una configuración intuitiva
basada en GUI.

117 / 257

Guía de referencia de DebianCrea e interpreta los datos de la cabecera y el cuerpo del mensaje utilizando Extensiones de correo de Internet multiuso (MIME)
para tratar el tipo de datos y la codificación del contenido.
Se autentica a sí mismo en los servidores SMTP e IMAP del ISP utilizando la antigua autenticación de acceso básica o lamoderna OAuth 2.0. (Para OAuth 2.0, establézcalo a través de la configuración del entorno de escritorio. Por ejemplo, ”Configuración” -> ”Cuentas en línea”)
Envía el mensaje al servidor SMTP smarthost del ISP que escucha en el puerto de envío de mensajes (587).
Recibe el mensaje almacenado en el servidor del ISP desde el puerto TLS/IMAP4 (993).
Puede filtrar correos por sus atributos.
Puede ofrecer funcionalidades adicionales: Contactos, Calendario, Tareas, Memos.
paqueteevolution
thunderbird
kmailpopularidad
V:30, I:239
V:48, I:119
V:38, I:97

tamaño486
22476023871

mutt

V:16, I:149

7104

mew

V:0, I:0

2319

tipo
programa X GUI (GNOME3, suite de trabajo en grupo)
programa X GUI (GTK, Mozilla Thunderbird)
programa de interfaz gráfico de usuario X (KDE)
programa de terminales de caracteres probablemente utilizado con
vim
programa de terminales de caracteres en (x)emacs

Cuadro 6.2: Relación de agentes de usuario de correo (MUA)

6.2.2. Limitación del servicio moderno de correo
El servicio de correo moderno tiene algunas limitaciones para minimizar la exposición a los problemas de spam (correo electrónico
no deseado y no solicitado).
No es realista ejecutar un servidor SMTP en una red de nivel consumidor para enviar correo directamente a un host remoto demanera confiable.
Cualquier host puede rechazar discretamente un correo en ruta a menos que parezca lo más real posible.
No es realista esperar que un simple host inteligente envíe correos sin relación con direcciones de correo fuente al host remotode manera confiable.
Esto es porque:
Están bloqueadas las conexiones del puerto SMTP (25) de los hosts servidos por la red de nivel de consumidor a Internet.
Están bloqueadas las conexiones del puerto SMTP (25) de los hosts servidos por la red de nivel de consumidor a Internet.
Los mensajes de salida de hosts atendidos por la red de nivel de consumidor a Internet solo pueden enviarse a través del puertode envío de mensajes (587).
Técnicas Anti-spam tales como DomainKeys Identified Mail (DKIM), Sender_Policy_Framework (SPF), y Autenticación,
informes y conformidad de mensajes basados en dominios (DMARC) son muy usados para el filtrado de correos.
Se puede implementar el servicio de Correo identificado por llaves de dominio mediante el envío de su correo a través de un«equipo inteligente« (smarthost).
El host inteligente puede reescribir la dirección de correo de origen en el encabezado del mensaje en su cuenta de correo en elhost inteligente para evitar la suplantación de direcciones de correo.

Guía de referencia de Debian

118 / 257

6.2.3. Expectativa histórica del servicio de correo
Algunos programas en Debian esperan acceder al comando /usr/sbin/sendmail para enviar correos electrónicos como su
configuración predeterminada o personalizada, ya que el servicio de correo en un sistema UNIX ha funcionado históricamentecomo:
Se crea un correo electrónico como un archivo de texto.
El correo electrónico se pasa al comando /usr/sbin/sendmail.
Para la dirección de destino en el mismo host, el comando /usr/sbin/sendmail realiza la entrega local del correo electrónico agregándolo al archivo /var/mail/$username .
• Comandos que esperan esta función: apt-listchanges, cron, at, ...
Para la dirección de destino en el host remoto, el comando /usr/sbin/sendmail realiza la transferencia remota del correo
electrónico al host de destino encontrado por el registro DNS MX utilizando SMTP.
• Comandos que esperan esta función: popcon, reportbug, bts, ...

6.2.4. Agente de transporte de correo (Mail transport agent, MTA)
Las estaciones de trabajo móviles de Debian pueden configurarse sólo con clientes de correo electrónico basados en una GUI
completa sin agente de transferencia de correo (MTA) programa después de Debian 12 Bookworm.

Debian instalaba tradicionalmente algún programa MTA para dar soporte a los programas que esperaban el comando /usr/sbin/sendm
Tales MTA en estaciones de trabajo móviles deben hacer frente a Sección 6.2.2 y Sección 6.2.3.
Para estaciones de trabajo móviles, la elección típica de MTA es exim4-daemon-light o postfix con su opción de instalación como ”Mail sent by smarthost; received via SMTP or fetchmail” seleccionada. Se trata de MTA ligeros que respetan”/etc/aliases”.
sugerencia
Configurar exim4 para enviar el correo de Internet a través de múltiples smarthosts correspondientes para múltiples direcciones de correo electrónico de origen no es trivial. Si necesita tal capacidad para algunos programas,configúrelos para usar msmtp que es fácil de configurar para múltiples direcciones de correo electrónico de origen.
Entonces deje el MTA principal sólo para una única dirección de correo electrónico.

6.2.4.1. Configuración de exim4
Para configurar el correo de Internet por medio de un equipo inteligente, (re)configure el paquete exim4-* como se muestra acontinuación.
$ sudo systemctl stop exim4$ sudo dpkg-reconfigure exim4-config

En «Tipo general de configuración de correo« seleccione «correo enviado por equipo inteligente; recibido por SMTP o fetchmail«.
Asigne a «Nombre del sistema de correo:« a su valor por defecto como FQDN (ver Sección 5.1.1).
Asigne «Direcciones IP escuchan en las conexiones SMTP de entrada:« a sus valores por defecto como «127.0.0.1 ; ::1«.
Borre el contenido de «Otros destinos desde los cuales se acepta correo:«.
Borre el contenido de «Máquinas para el reenvío de correo:«.
Asigne «Direcciones de IP o nombre de equipos para correo inteligente de salida:« a «smtp.hostname.dom:587«.
Selecciona ”No” para ”¿Ocultar el nombre del correo local en el correo saliente?”. (Use ”/etc/email-addresses” comoen Sección 6.2.4.3, en su lugar).
Conteste a «Mantener el número de peticiones DNS a mínimo (Marcado bajo demanda) como sigue.

119 / 257

Guía de referencia de Debianpaquetepopularidad
exim4-daemon-light
V:217, I:227
exim4-daemon-heavy
V:6, I:6

tamaño descripción
1575

Exim4 agente de transporte de correo (MTA: por defecto en Debian)

1743

Agente de transferencia de correo Exim4 (MTA: reemplazo flexible)
Documentación de Exim4 en formato texto y archivos comunes
Documentación de Exim4 en formato html
Documentación de Exim4 en formato info
Agente de transporte de correo Postfix (MTA: alternativa segura)
Documentación de Postfix en formato texto y html
Implementación de la API Cyrus SASL (complemento a postfix para
SMTP AUTH)

exim4-baseexim4-doc-html
exim4-doc-info
postfix
postfix-doc

V:224, I:234
I:1
I:0
V:124, I:133
I:6

1699
3746
637
4039
4646

sasl2-bin

V:5, I:13

371

I:0

2154

Documentación Cyrus SASL

msmtp
msmtp-mta
esmtp
esmtp-runnullmailer
ssmtp
sendmail-bin
courier-mta

V:6, I:11
V:4, I:6
V:0, I:0
V:0, I:0
V:8, I:9
V:5, I:8
V:13, I:13
V:0, I:0

667
124
129
32
474
2
1901
2407

git-email

V:0, I:101087

MTA ligero
MTA ligero (extensión compatible con sendmail para msmtp)
MTA ligero
MTA ligero (extensión compatible con sendmail para esmtp)
Elimina MTA, no hay correo local
Elimina MTA, no hay correo local
MTA con todas las funciones (si ya está familiarizado con él)
MTA con todas las funciones (interfaz web, etc.)
git-send-email(1) programa para enviar series de correos
electrónicos de parches

cyrus-sasl2-doc

Cuadro 6.3: Lista de paquetes básicos relacionados con el agente de transferencia de correo«No« si el sistema esta conectado a Internet en el arranque.
«Sí» si el sistema no esta conectado a Internet en el arranque.
Asigne «Método de entrega para correo local:« a «mbox format in /var/mail«.
Selecciona ”Sí” para ”¿Dividir la configuración en archivos pequeños?:”.
Crear las entradas de contraseñas para el equipo inteligente editando «/etc/exim4/passwd.client».
$ sudo vim /etc/exim4/passwd.client...
$ cat /etc/exim4/passwd.client^smtp.*\.hostname\.dom:username@hostname.dom:password

Configura exim4(8) con ”QUEUERUNNER=’queueonly’”, ”QUEUERUNNER=’nodaemon’”, etc. en ” /etc/default/exim4
para minimizar el uso de los recursos del sistema. (opcional)
Inicie exim4 como se muestra.
$ sudo systemctl start exim4

El nombre del equipo en «/etc/exim4/passwd.client» no debería ser un alias. Compruebe el nombre real del equipo
como sigue.
$ host smtp.hostname.dom
smtp.hostname.dom is an alias for smtp99.hostname.dom.
smtp99.hostname.dom has address 123.234.123.89

Yo utilizo las expresiones regulares en «/etc/exim4/passwd.client» para trabajar sobre el tema de los alias. SMTP
AUTH probablemente funciones incluso si el ISP redirige el equipo señalado por medio de alias.
Puede actualiza su configuración de exim4 de forma manual como sigue:

120 / 257

Guía de referencia de Debian

Actualice los archivos de configuración de exim4 en «/etc/exim4/».

• Creando «/etc/exim4/exim4.conf.localmacros» para asignar MACROS y editando «/etc/exim4/exim4.conf.t(no dividir la configuración)• creando nuevos archivos y editando los existente en los subdirectorios en «/etc/exim4/exim4.conf.d». (dividir laconfiguración)
Ejecuta ”systemctl reload exim4”.

atención
Iniciar exim4 tarda mucho tiempo si (valor por defecto) «No« fue elegido a la pregunta de denconf «Mantener el número de preguntas DNS al mínimo (Marcar bajo demanda)?« y el sistema no esta conectado a
Intenet cuando se inicia.

Por favor, lea la guía oficial en: «/usr/share/doc/exim4-base/README.Debian.gz» y update-exim4.conf(8).

aviso
A efectos prácticos, utilice SMTP con STARTTLS en el puerto 587 o SMTPS (SMTP sobre SSL) en el puerto
465, en lugar de SMTP simple en el puerto 25.

6.2.4.2. Configuración de postfix con SASL
Para el correo de Internet por medio de un equipo inteligente, podría leer primero postfix documentation y las páginas claves delmanual.
orden
postfix(1)postconf(1)postconf(5)postmap(1)postalias(1)función
Programa de control postfix
Utilidad de configuración postfix
Parámetros de configuración de Postfix
Mantenimiento de la tabla de búsqueda de Postfix
Mantenimiento de base de datos de alias Postfix
Cuadro 6.4: Relación de páginas importantes del manual en postfix(Re)configure los paquetes postfix y sasl2-bin según se explica a continuación.
$ sudo systemctl stop postfix$ sudo dpkg-reconfigure postfix

Elija «Internet con equipo inteligente«.
Asigne «equipo de reenvio SMTP (el blanco para no elegir ninguno):« a «[smtp.hostname.dom]:587» y configúrelo según
sigue.
$ sudo postconf -e ’smtp_sender_dependent_authentication = yes’
$ sudo postconf -e ’smtp_sasl_auth_enable = yes’
$ sudo postconf -e ’smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd’$ sudo postconf -e ’smtp_sasl_type = cyrus’$ sudo vim /etc/postfix/sasl_passwd

Cree las entradas de las contraseñas para el equipo inteligente.

121 / 257

Guía de referencia de Debian$ cat /etc/postfix/sasl_passwd[smtp.hostname.dom]:587
username:password$ sudo postmap hush:/etc/postfix/sasl_passwd

Inicie postfix con lo siguiente.
$ sudo systemctl start postfix

Aquí la utilización de «[» y «]» en el diálogo dpkg-reconfigure y «/etc/postfix/sasl_passwd» asegura que nose marque la entrada MX pero que se utilice directamente el nombre del equipo especificado. Ver «Enabling SASL authenticationin the Postfix SMTP client« en «/usr/share/doc/postfix/html/SASL_README.html».
6.2.4.3. La configuración de la dirección de correo
Existen algunos archivos de configuración de la dirección de correo para el transporte de correo, su entrega y los agentes deusuario.
archivo/etc/mailname/etc/email-addresses/etc/postfix/generic/etc/aliases

función
nombre del equipo por defectopara el correo (saliente)
nombre del equipo falso paracorreo de salida
nombre del equipo falso paracorreo de salida
alias del nombre de la cuenta parael correo entrante

aplicación
Propio de Debian, mailname(5)propio de exim(8) ,exim4-config_files(5)propio de postfix(1), se activa después dela ejecución de la orden postmap(1).
general, activado después de la ejecución de laorden newaliases(1).

Cuadro 6.5: Relación de los archivos relacionados con la configuración de la dirección de correo
El nombre del correo en el archivo «/etc/mailname» normalmente es un nombre de dominio totalmente cualificado (FQDN)
que corresponderá a una dirección IP del equipo. Para un equipo ubicuo la cual no tiene un nombre asociado a una dirección IP,
asigne este nombre de correo al valor de «hostname -f». (Esta es una elección segura que funciona tanto con exim4-*
como con postfix.)sugerencia
El contenido de «/etc/mailname» se usa por muchos programas que no son MTA para determinar su comportamiento por defecto. En mutt, se asignan las variables «hostname» y «from» en el archivo ~/muttrc ysobreescribe el valor de mailname. Para los programas en el paquete devscripts, como bts(1) y dch(1), exporta las variables de entorno «$DEBFULLNAME» y «$DEBEMAIL» para sobreescribirlo.

sugerencia
El paquete popularity-contest de forma habitual envia el correo desde la cuenta de superusuario con
FQDN. Necesita asignar MAILFROM en /etc/popularity-contest.conf como se describe en el archivo/usr/share/popularity-contest/default.conf. De otra forma, su correo será rechazado por el servidor SMTP del equipo inteligente. Aunque es aburrido, esta aproximación es más segura que reescribir la dirección
remitente de todos los correos por el MTA y podría ser usado por otros demonios y archivos de órdenes cron.

Cuando se asigna mailname a «hostname -f», la simulación de la dirección de correo remitente por medio de MTA puede
ser realizado por lo siguiente.
El archivo «/etc/email-addresses» para exim4(8) se explica en exim4-config_files(5)122 / 257

Guía de referencia de Debian

El archivo «/etc/postfix/generic» para postfix(1) se explica en el general(5)Los siguientes pasos añadidos son necesarios para postfix.
# postmap hash:/etc/postfix/generic# postconf -e ’smtp_generic_maps = hash:/etc/postfix/generic’# postfix reload

Puede probar la configuración de la dirección de correo usando lo siguiente.
exim(8) con las opciones -brw, -bf, -bF, -bV, …
postmap(1) con la opción -q.
sugerencia
Exim proporciona varias herramientas como exiqgrep(8)exim4-base|grep man8/» para las órdenes disponibles.

yexipick(8).

Consulte«dpkg -L

6.2.4.4. Operaciones fundamentales MTA
Existen varias operaciones MTA fundamentales. Algunas se pueden realizar por medio de interfaz compatible de sendmail(1).
orden exim

orden postfix

sendmailsendmail

mailq

mailq

newaliases
exim4 -q

newaliases
postqueue -f
postsuper -r ALL
deferred; postqueue -f
postsuper -r ALL;
postqueue -f

exim4 -qf
exim4 -qff
exim4 -Mg queue_id

postsuper -h queue_id

exim4 -Mrm queue_id

postsuper -d queue_id

N/A

postsuper -d ALL

descripción
lee los correos de la entrada estándar y losorganiza para la entrega (-bm)
enumera los correos en la cola, con su estatuse identificador en la cola (-bp)
inicializa la base de datos de alias (-l)
descarga los correos en espera (-q)
descarga todos los correos
descarga incluso los correos congelados
congela un mensaje por su identificador en lacolaelimina un mensaje por su identificador en lacolaelimina todos los mensajes

Cuadro 6.6: Relación de operaciones MTA fundamentales

sugerencia
puede ser una buena idea descargar todos los correos mediante un archivo de órdenes «/etc/ppp/ip-up.d/*».

6.3. Servidor de acceso remoto (SSH) y utilidades
Secure SHell (SSH) es la manera segura de conectarse a través de Internet. Una versión libre de SSH es OpenSSH y esta disponible
en Debian mediante los paquetes openssh-client y openssh-server.

123 / 257

Guía de referencia de Debianpaqueteopenssh-client
openssh-server

popularidad
V:866, I:996
V:730, I:814

tamaño herramienta4959
ssh(1)
1804
sshd(8)ssh-askpass

I:23

102

ssh-askpass-gnome
V:0, I:3200

ssh-askpass-fullscreen
V:0, I:048

V:0, I:1

507

shellinabox

descripción
Cliente de «Secure shell«
Servidor Secure shell
pregunta al usuario por la contraseña para ssh-add (Xssh-askpass(1)plano)
pregunta al usuario la contraseña para ssh-add
ssh-askpass-gnome(1)(GNOME)
pide al usuario una contraseña para ssh-add (GNOME)
ssh-askpass-fullscreen(1)que le resulte atractiva
servidor web para emulador de terminal VT100
shellinaboxd(1)accesible mediante navegador

Cuadro 6.7: Relación de servidores de acceso remoto y utilidadesPara el usuario, ssh(1) funciona de una forma más inteligente y segura que telnet(1). No como la orden telnet, la orden
ssh no para con el carácter de escape telnet (inicio por defecto CTRL-]).
Aunque shellinabox no es un programa SSH, se incluye aquí como una alternativa interesante para el acceso remoto aterminales.
Ver también Sección 7.9 para conectarse a programas cliente X remotos.

atenciónVer Sección 4.6.3 si su SSH es accesible desde Internet.

sugerencia
Por favor utilice el programa screen(1) para permitir que los procesos del intérprete de órdenes remotos sobrevivan a las caídas de la conexión (ver Sección 9.1.2).

6.3.1. Fundamentos de SSH
El demonio OpenSSH SSH solo admite el protocolo SSH 2.
Lea ”/usr/share/doc/openssh-client/README.Debian.gz”, ssh(1), sshd(8), ssh-agent(1), y ssh-keygen(1),ssh-add(1) y ssh-agent(1).
aviso«/etc/ssh/sshd_no_debe_ser_ejecutado» no debe estar presente si se quiere ejecutar el servidor
OpenSSH.
No
habilitelaautenticación
basadaen
rhost(HostbasedAuthenticationen/etc/ssh/sshd_config).

Lo siguiente inicia una conexión ssh(1) desde el cliente.

6.3.2. Nombre de usuario en el host remoto
Si usa el mismo nombre de usuario en el host local y remoto, puede eliminar escribir ”username@”.
Incluso si utiliza un nombre de usuario distinto en el equipo local y remoto, puede eliminarlo usando «~/.ssh/config». Parael servicio Debian Salsa con el nombre de la cuenta «foo-guest», haga que «~/.ssh/config» contenga lo siguiente.

124 / 257

Guía de referencia de Debianarchivo de configuración/etc/ssh/ssh_config/etc/ssh/sshd_config~/.ssh/authorized_keys~/.ssh/id_rsa~/.ssh/id_key-type-namedescripción de los archivos de configuración
Valores por defecto del cliente SSH, ver ssh_config(5)Valores por defecto del servidor SSH, ver sshd_config(5)claves ssh públicas por defecto que usan los clientes que usan para
conectarse a su cuenta en este servidor SSH
clave SSH-2 RSA privada del usuario
clave secreta SSH-2 nombre-tipo-clave como ecdsa, ed25519, ...
del usuario

Cuadro 6.8: Relación de los archivos de configuración de SSH
orden
descripciónsshconecta en el modo por defecto
nombre_de_usuario@nombre_de_equipo.dominio.ext
ssh -v
conecta en el modo por defecto con los mensajes de depuración
nombre_de_usuario@nombre_de_equipo.dominio.ext
ssh -oPreferredAuthentications=password obliga la utilización de la contraseña con SSH versión 2
username@hostname.domain.ext
ssh -tejecute el programa passwd para actualizar la contraseña en un hostnombre_de_usuario@nombre_de_equipo.dominio.ext
remotocontraseña
Cuadro 6.9: Relación de ejemplos de inicio del clientes ssh

Host salsa.debian.org people.debian.org
User foo-guest

6.3.3. Conectarse sin contraseñas del equipo remoto
Se puede evitar recordar las contraseñas del sistema remoto usando «PubkeyAuthentication» (protocolo SSH-2).
En el sistema remoto, cree las entradas respectivas, ”PubkeyAuthentication sí”, en ”/etc/ssh/sshd_config”.
Genere las claves de acreditación locales e instale las claves públicas en el sistema remoto según se muestra.
$ ssh-keygen -t rsa$ cat .ssh/id_rsa.pub | ssh user1@remote ”cat - >>.ssh/authorized_keys”

Puede añadir opciones a las entradas en «~/.ssh/authorized_keys» para limitar los equipos y ejecutar las órdenes concretas. Ver sshd(8) ”AUTHORIZED_KEYS FILE FORMAT”.

6.3.4. Tratando con clientes SSH extraños
Existen algunos clientes SSH libres disponibles para otras plataformas.
entornoWindows
Windows (cygwin)
Mac OS X

programa SSH libre
puTTY (PuTTY: un cliente SSH y Telnet gratuito) (GPL)SSH en cygwin (Cygwin: Disfruta de Linux en Windows) (GPL)
OpenSSH; utiliza ssh en una aplicación de terminal (GPL)
Cuadro 6.10: Relación de clientes SSH libres en otras plataformas

Guía de referencia de Debian

125 / 257

6.3.5. Configuración ssh-agent
Es seguro proteger su clave pública de acreditación con una contraseña. Si no se ha asignado una contraseña, utilice «ssh-keygen-p» para asignarla.
Ubique su clave pública SSH (e.g. «~/.ssh/id_rsa.pub») en «~/.ssh/authorized_keys» en el equipo remoto utilizando una conexión al equipo remoto basada en la contraseña como se describe a continuación.
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa:
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

No se necesita contraseña remota desde aquí para la próxima orden.
$ scp foo username@remote.host:foo

Pulse ^D para finalizar su sesión de agente ssh.
Para el servidor X, el archivo de órdenes de inicio de Debian ejecuta el ssh-agent como el proceso padre. Así solo necesita
ejecutar ssh-add una vez. Para mayor información , lea ssh-agent(1) y ssh-add(1).

6.3.6. Enviar un correo desde un host remoto
Si tiene una cuenta shell SSH en un servidor con la configuración de DNS adecuada, puede enviar un correo electrónico generado
en su estación de trabajo como un correo electrónico enviado genuinamente desde el servidor remoto.
$ ssh username@example.org /usr/sbin/sendmail -bm -ti -f ”username@example.org” < mail_data ←.txt

6.3.7. Puerto de reenvío para túnel SMTP/POP3
Para crear un tubería que conecte al puerto 25 del servidor remoto desde el puerto 4025 del equipo local y al puerto
110 de servidor remoto desde el puerto 4110 del equipo local a través de ssh, ejecute en el equipo local lo que sigue.
# ssh -q -L 4025:remote-server:25 4110:remote-server:110 username@remote-server

Esta es la forma segura de crear conexiones a un servidor SMTP/POP3 a través de Internet. Asigne a la entrada «AllowTcpForwardingcon «yes» en «/etc/ssh/sshd_config» del equipo remoto.

6.3.8. Apagar un sistemas remoto utilizando SSH
Se necesita proteger el proceso que ejecuta «shutdown -h now» (ver Sección 1.1.8) de la finalización de ssh utilizando laorden at(1) (ver Sección 9.4.13) como sigue.
# echo ”shutdown -h now” | at now

Otra forma de obtener el mismo resultado es ejecutar «shutdown -h now» en una sesión de screen(1) (ver Sección 9.1.2).

6.3.9. Resolución de problemas de SSH
Si tiene problemas, compruebe la configuración de los permisos de los archivos y ejecute ssh con la opción «-v».
Si es usted superusuario y tiene problemas con el cortafuegos utilice la opción «-p» ; esto evita la utilización de los puertos delservidor entre 1 —1023.
Si las conexiones ssh a un sitio remoto de repente deja de funcionar, puede ser que lo tenga que solucionar el administradorde sistemas, normalmente un cambio de la «clave_de_equipo» durante el mantenimiento del sistema. Tras estar seguro deque nadie intenta suplantar al equipo remoto de algún modo inteligente, uno puede recuperar la conexión eliminando la entrada«clave_de_equipo» en «~/.ssh/known_hosts» del equipo local.

126 / 257

Guía de referencia de Debian

6.4. Servidor de impresión y utilidades
En el antiguo sistema tipo Unix, el BSD Demonio de impresión en línea (lpd) era el estándar y el formato de impresión estándar
del software libre clásico era PostScript (PS). Se utilizó algún sistema de filtro junto con Ghostscript para permitir la impresión
en la impresora no PostScript. Ver Sección 11.4.1.
En el sistema Debian moderno, el Common UNIX Printing System (CUPS) es el estándar de facto y el formato de impresión
estándar del software libre moderno es Portable Document Format (PDF).
La CUPS utiliza Protocolo de impresión de Internet (IPP). El IPP es ahora compatible con otros sistemas operativos como Windows XP y Mac OS X y se ha convertido de facto en el nuevo estándar multiplataforma para la impresión remota con capacidad
de comunicación bidireccional.
Gracias a la funcionalidad de autoconversión dependiente del formato del archivo del sistema CUPS, simplemente ofrecer cualquier dato a la orden lpr debería generar la salida de impresión esperada. (En CUPS, lpr se puede activar mediante la instalacióndel paquete cups-bsd).
El sistema Debian tiene paquetes importantes de utilidades y servidores de impresión.
paquete
lpr
lprng
cups

popularidad
V:2, I:3
V:0, I:0
V:97, I:441

tamaño puerto
367
printer (515)
3051
,,
1061
IPP (631)

cups-client

V:119, I:461

426

,,

cups-bsd

V:32, I:219

131

,,

printer-driver-gutenprint
V:20, I:114

1219

No aplicable

descripción
BSD lpr/lpd (demonio de impresión en línea), , (Mejorado)
Servidor CUPS de Impresión en InternetÓrdenes de impresión System V para CUPS: lp(1),lpstat(1), lpoptions(1), cancel(1),lpmove(8), lpinfo(8), lpadmin(8), …
Órdenes de impresión BSD para CUPS: lpr(1),lpq(1), lprm(1), lpc(8)controladores de impresión para CUPS

Cuadro 6.11: Relación de las utilidades y servidores de impresión

sugerencia
Puede configurar su sistema CUPS accediendo mediante su navegador a «http://localhost:631/« .

6.5. Servidores de aplicaciones en otras redes
Aquí hay otros servidores de aplicaciones de red.
El Protocolo de Sistema de Archivo Común de Internet (Common Internet File System Protocol, CIFS) es el mismo protocolo
que Servidor de Mensajes de Bloque (Server Message Block, SMB) y se utiliza de forma generalizada en Microsoft Windows.
sugerencia
Ver Sección 4.5.2 para la integración de los servidores de sistema.

sugerencia
La resolución del nombre del equipo normalmente se realiza por medio del servidor de DNS. Para las direcciones
IP del equipo asignadas de forma dinámica por DHCP, un DNS Dinámico se puede configurar para la resolución
de nombres utilizando bind9 y isc-dhcp-server como se describe en lapágina wiki de Debian sobre DDNS.

127 / 257

Guía de referencia de Debianpaquetepopularidad
telnetd
V:0, I:2
telnetd-ssl
V:0, I:0
nfs-kernel-server
V:49, I:63

tamaño protocolo
54
TELNET159,,

descripción
servidor TELNET, , (soporte SSL)

769

NFS

Compatición de archivos Unix

samba

V:108, I:131

3995

SMB

netatalk

V:1, I:1

2003

ATP

proftpd-basic
apache2
squid
bind9
isc-dhcp-server

V:8, I:16
V:214, I:263
V:11, I:12
V:43, I:49

452
561
9265
1124

FTP
HTTP
,,
DNS

Compartición de archivos e impresoras en Windows
Compartición de archivos e impresoras de Apple/Mac(AppleTalk)
Descarga de archivo general
Servidor web general
Servidor proxy web general
Direcciones IP para otros equipos

V:18, I:36

6082

DHCP

Dirección IP de el cliente mismo

Cuadro 6.12: Relación de los servidores de aplicaciones de redsugerencia
La utilización de un servidor proxy como squid es muy eficiente para ahorrar ancho de banda ya que utiliza unservidor espejo local con todo el contenido del archivo Debian.

6.6. Otros clientes de aplicaciones de red
Aquí están otro clientes de aplicaciones de red.

6.7. Diagnóstico de los demonios del sistema
El programa telnet permite la conexión manual a los demonios del sistema para evaluarlos.
Para probar un servicio POP3 sencillo, intente lo siguiente$ telnet mail.ispname.net pop3

Para la prueba del servicio POP3 con TLS/SSL activado por parte de algún ISP, necesitará activar TLS/SSL en el cliente detelnet mediante los paquetes telnet-ssl o openssl.
$ telnet -z ssl pop.gmail.com 995$ openssl s_client -connect pop.gmail.com:995

Los siguientes RFCs aportan el conocimiento necesario sobre cada uno de los demonios del sistema.
La utilización de los puertos esta recogida en «/etc/services».

128 / 257

Guía de referencia de Debianpaquetenetcatpopularidad
I:27

tamaño protocolo
16
TCP/IP

openssl

V:841, I:995

2111

SSL

stunnel4
telnettelnet-ssl
nfs-common

V:7, I:12
V:29, I:511
V:0, I:2
V:152, I:234

548
54
196
1124

,,
TELNET,,
NFS

smbclient

V:24, I:204

2071

SMB

cifs-utils

V:29, I:121

317

,,

ftp
lftp
ncftp
wget
curl
axel

V:7, I:114
V:4, I:30
V:1, I:14
V:208, I:981
V:185, I:620
V:0, I:3

53
2361
1389
3681
517
224

FTP
,,
,,
HTTP y FTP
,,
,,

aria2

V:3, I:20

1981

,,

bind9-hostdnsutils
isc-dhcp-client

V:115, I:939
V:16, I:280

393
276

DNS
,,

descripción
navaja suiza para TCP/IP
Binarios de la capa de conexión segura(SSL) y
herramientas de criptografía asociadas
recubrimiento universal SSL
cliente TELNET, , (soporte SSL)
Compatición de archivos Unix
Cliente para la compartición de archivos e impresoras
con MS WindowsÓrdenes de montado y desmontado de archivos
remotos MS Windows
cliente FTP,,
cliente FTP a pantalla completa
descargas web,,
acelerador de descargas
acelerador de descargas con soporte para BitTorrent y
Metalink
host(1) para bind9, «Prioridad: estándar»dig(1) para bind, «Prioridad: estándar»

V:217, I:981

2875

DHCP

obtiene la dirección IP

ldap-utils

V:12, I:63

767

LDAP

obtiene datos del servidor LDAP

Cuadro 6.13: Relación de clientes de aplicaciones de red

RFC
rfc1939 y rfc2449
rfc3501
rfc2821 (rfc821)
rfc2822 (rfc822)
rfc2045
rfc819
rfc2616
rfc2396

descripción
servicio POP3
servicio IMAP4
servicio SMTP
Formato de archivo de correo
Extensión de Correo de Internet Multipropósito (MIME)
servicio DNS
servicio HTTP
definición de URI
Cuadro 6.14: Relación de RFCs comúnes

129 / 257

Guía de referencia de Debian

Capítulo 7

Sistema GUI (interfaz gráfica de usuario)
7.1. Entorno de escritorio GUI
Hay varias opciones para el entorno de escritorio completo GUI en el sistema Debian.
paquete de tareas
popularidadtask-gnome-desktop
I:198
task-xfce-desktop
task-kde-desktop
task-mate-desktop

9

GNOME entorno del escritorio

I:96

9

Entorno de escritorio Xfce

I:81

6

KDE Plasma entorno de escritorio

I:43

9

MATE entorno de escritorio

9

Cinnamon entorno de escritorio

I:29

9

LXDE entorno de escritorio

I:18

9

LXQt entorno de escritorio

task-cinnamon-desktop
I:41
task-lxde-desktop
task-lxqt-desktop

tamaño descripción

task-gnome-flashback-desktop
I:13
6

GNOME Flashback entorno de escritorio

Cuadro 7.1: Lista del entorno del escritorio

Guía de referencia de Debian130 / 257

sugerencia
Los paquetes de dependencia seleccionados por un metapaquete de tareas pueden no estar sincronizados con el último estado de transición del paquete en el entorno inestable/de prueba de Debian. Paratask-gnome-desktop, es posible que deba ajustar las selecciones de paquetes de la siguiente manera:
Inicia aptitude con sudo aptitude -u (8).
Mueve el cursor a ”Tareas” y presiona Enter.
Mueva el cursor a ”Usuario final” y presiona ”Enter”.
Mueve el cursor a ”GNOME” y presiona ”Enter”.
Mueve el cursor a task-gnome-desktop y presiona ”Enter”.
Mueve el cursor a ”Depende” y presione ”m” (selección manual).
Mueve el cursor a ”Recomendado” y presiona ”m” (selección manual).
Mueva el cursor a ”task-gnome-desktop y presione ”-”. (soltar)
Ajuste los paquetes seleccionados y elimine los paquetes problemáticos que causan conflictos de paquetes.
Presiona ”g” para comenzar la instalación.

Este capítulo se centrará principalmente en el entorno de escritorio predeterminado de Debian: task-gnome-desktop que
ofrece GNOME en wayland.

7.2. protocolo de comunicación GUI
El protocolo de comunicación GUI utilizado en el escritorio GNOME puede ser:
Wayland (protocolo de visualización del lado del servidor) (nativo)
Protocolo del núcleo del sistema X Window (vía xwayland)
Consulte el sitio freedesktop.org para ver en qué se diferencia la arquitectura de Wayland de la arquitectura de X Window.
Desde la perspectiva del usuario, las diferencias se pueden resumir coloquialmente como:
Wayland es un protocolo de comunicación GUI del mismo host: nuevo, más simple, más rápido, sin setuid root binario.
X Window es un protocolo de comunicación GUI con capacidad de red: tradicional, complejo, más lento, setuid root binario
Para aplicaciones que utilizan el protocolo Wayland, el acceso a su contenido de visualización desde un host remoto es compatible
con VNC o RDP. Ver Sección 7.8
Los servidores X modernos tienen la Extensión de Memoria Compartida del MIT y se comunican con los clientes locales X
utilizando memoria local compartida. Esto evita el canal de comunicación entre interprocesos transparentes Xlib de la red y
mejora el rendimiento. Esta situación fue el antecedente de la creación de Wayland como un protocolo de comunicación GUI solo
local.
Usando el programa xeyes iniciado desde la terminal GNOME, puede verificar el protocolo de comunicación GUI utilizado porcada aplicación GUI.
$ xeyes

Si el cursor del ratón está en una aplicación como ”Terminal GNOME” que usa el protocolo del servidor de pantalla Wayland,
los ojos no se mueven con el cursor del ratón.

131 / 257

Guía de referencia de DebianSi el cursor del ratón está en una aplicación como ”xterm”, que usa el protocolo del núcleo de X Window System, los ojos semueven con el cursor del ratón y exponen la naturaleza no tan aislada de la arquitectura X Window.
A partir de abril de 2021, muchas aplicaciones GUI populares, como GNOME y LibreOffice (LO), han migrado al protocolo delservidor de visualización de Wayland. Veo xterm, gitk, chromium, firefox, gimp, dia, y las aplicaciones de KDE aún
utilizan el protocolo central del sistema X Window.
nota
Tanto para xwayland en Wayland como para el sistema X Window nativo, el antiguo archivo de configuración delservidor X ”/etc/X11/xorg.conf” no debería existir en el sistema. Los dispositivos gráficos y de entrada ahora
están configurados por el kernel con DRM, KMS y udev. El servidor X nativo se ha reescrito para usarlos. Ver”soporte de modo de vídeo predeterminado de modedb” en la documentación del kernel de Linux.

7.3. infraestructura GUI
Estos son los conocidos paquetes del marco GUI para GNOME en el entorno de Wayland.

paquetepopularidad

mutter
V:1, I:60
xwayland
V:240, I:319
gnome-remote-desktop
V:35, I:221

tamañodeldescripción
paquete187
Los GNOME mutter window manager [auto]
2388
Un servidor X ejecutándose sobre wayland [auto]
1068

gnome-tweaks
V:21, I:229
1170
gnome-shell-extension-prefs
V:13, I:213
60

Daemon de escritorio remoto para GNOME usando PipeWire [auto]
Ajustes avanzados de la configuración para GNOME
Herramienta para activar / desactivar las extensiones de GNOME
Shell

Cuadro 7.2: Lista de paquetes notables de la infraestructura GUI
Aquí, ”[auto]” significa que estos paquetes se instalan automáticamente cuando se instala task-gnome-desktop.
sugerencia
gnome-tweaks es la utilidad de configuración indispensable. Por ejemplo:
Puede forzar la ”Sobre amplificación” del volumen del sonido desde ”General”.
Puede hacer que ”Mayúsculas” se convierta en ”Esc” desde ”Keyboard & Mouse” -> ”Keyboard” -> ”Additional
Layout Option”.

sugerencia
Las características detalladas del entorno de escritorio de GNOME pueden configurarse con las utilidades que seinician escribiendo ”configuración”, ”ajustes” o ”extensiones” después de pulsar la tecla Super.

7.4. Aplicaciones GUI
Ahora hay disponible muchas aplicaciones GUI útiles en Debian. Instalar software como scribus (KDE) en el entorno de
escritorio GNOME es correcta ya que la funcionalidad correspondiente no esta disponible en el entorno de escritorio GNOME.
Pero la instalación de demasiados paquetes con funcionalidades solapadas puede saturar su sistema..

Guía de referencia de Debian132 / 257

Aquí hay una lista de aplicaciones GUI que me llamaron la atención.

7.5. Directorios de los usuarios
Los nombres por defecto de los directorios de usuario como ”~/Desktop”, ”~/Documents”, ..., utilizados por el entorno
Desktop dependen de la configuración regional utilizada para la instalación del sistema. Puede restablecerlas al Inglés mediante:$ LANGUAGE=C xdg-user-dirs-update --force

Luego mueve manualmente todos los datos a los directorios más nuevos. Ver xdg-user-dirs-update(1).
También puede asignarles cualquier nombre editando ”~/.config/user-dirs.dirs”. Ver user-dirs.dirs(5).

7.6. Fuentes
Hay disponibles muchas útiles fuentes escalables para los usuarios de Debian. Es asunto del usuario evitar la redundancia y cómo
configurar partes de las fuentes instaladas para que se deshabiliten. De lo contrario, las opciones de fuente inútiles pueden saturar
los menús de su aplicación GUI.
El sistema Debian usa la librería FreeType 2.0 para rasterizar muchos formatos de fuentes escalables para pantalla e impresión:
Fuentes Type 1 (PostScript) que usan curvas de Bézier cúbicas (formato casi obsoleto)
fuentes TrueType que usan curvas de Bézier cuadráticas (formato de buena elección)
fuentes OpenType que usan curvas de Bézier(mejor formato a elegir)

7.6.1. Tipos de letras fundamentales
La siguiente tabla se ha compilado con la esperanza de ayudar a los usuarios a elegir las fuentes escalables apropiadas con una
clara comprensión de la compatibilidad métrica y la cobertura de glifos. La mayoría de las fuentes cubren todos los caracteres
latinos, griegos y cirílicos. La elección final de las fuentes activadas también puede verse afectada por tu estética. Estos tipos deletra pueden utilizarse para mostrarse en la pantalla o para la imprimirlas.
Aquí:”MCM” significa ”métrica compatible con fuentes proporcionadas por Microsoft””MCMATC” significa ”métrica compatible con las fuentes proporcionadas por Microsoft: Arial, Times New Roman, Courier
New””MCAHTC” significa ”métrica compatible con las fuentes proporcionadas por Adobe: Helvetica, Times, Courier”
Los números en las columnas de tipo de fuente representan el ancho ”M” relativo aproximado para la fuente del mismo tamaño
de punto.
La ”P” en columnas de tipo de fuente mono representa su facilidad de uso para la programación con ”0”/”O” y ”1”/”I”/”l”
claramente distinguibles.
El paquete ttf-mscorefonts-installer descarga Microsoft ”fuentes Core para la Web” e instala Arial, Times New
Roman, Courier New, Verdana, ... . Estos datos de fuentes instaladas son datos no libres.
Muchas fuentes latinas libres tienen su linaje trazado hasta la familia URW Nimbus o Bitstream Vera.
sugerencia
Si su configuración regional necesita fuentes que no están bien cubiertas por las anteriores, utilice aptitude paraverificar los paquetes de tareas enumerados en ”Tasks” -> ”Localization”. Los paquetes de fuentes enumerados
como ”Depends:” o ”Recommends:” en la tarea de localización de paquetes son los principales candidatos.

133 / 257

Guía de referencia de Debianpaquetepopularidad

tamañodeltipopaqueteevolution

V:30, I:239

486

thunderbird

V:48, I:119

224760 GTK

kontact

V:1, I:12

2208

KDE

31474

LO

procesador de textos

abiword
V:1, I:8
calligrawords
V:0, I:7
scribus
V:1, I:16
glabels
V:0, I:3
libreoffice-calc
V:111, I:432

3542
6097
31345
1338

GNOME
KDE
KDE
GNOME

procesador de textos
procesador de textos
desktop publishing editor para editar archivos PDF
editor de etiquetas

26009

LO

hoja de cálculo

gnumeric
V:4, I:14
calligrasheets
V:0, I:5
libreoffice-impress
V:69, I:429

9910
11396

GNOME
KDE

hoja de cálculo
hoja de cálculo

2646

LO

presentación

calligrastage
V:0, I:5
libreoffice-base
V:26, I:121

5339

KDE

presentación

5003

LO

gestión de bases de datos

kexi
V:0, I:1
libreoffice-draw
V:72, I:430

7118

KDE

gestión de bases de datos

10312

LO

editor de gráficos vectoriales (dibujo)

inkscape
karbondia
gimp
shotwelldigikamdarktable
plannercalligraplan
gnucashhomebanklilypond
kmymoney

V:15, I:112
V:0, I:6
V:2, I:22
V:50, I:252
V:17, I:255
V:1, I:9
V:4, I:13
V:0, I:4
V:0, I:2
V:2, I:8
V:0, I:2
V:0, I:7
V:0, I:2

99800
3610
3741
19304
6263
293
30554
1394
19013
28928
1218
16092
13937

editor de gráficos vectoriales (dibujo)
editor de gráficos vectoriales (dibujo)
editor de diagramas de flujos y otros diagramas
editor de gráficos de mapas de bits (Pintura)organizador de fotos digitalesorganizador de fotos digitales
mesa de luz y cuarto oscuro para fotógrafos
gestión de proyectos
gestión de proyectos
finanzas personales
finanzas personales
Compositor de música
finanzas personales

librecad

V:1, I:15

8963

freecad

I:18

36

GNOME
KDE
GTK
GTK
GTK
KDE
GTK
GNOME
KDE
GNOME
GTK
KDE
Aplicación
Qt
Aplicación
Qt

kicad

V:3, I:14

236461 GTK

libreoffice-writer
V:117, I:435

xsane
V:12, I:144
libreoffice-math
V:51, I:432

GNOME

descripción
Gestor de información personal (trabajo en grupo y
correo electrónico)
Cliente de correo electrónico (Mozilla Thunderbird)
Gestor de información personal (trabajo en grupo y
correo electrónico)sistema de diseño asistido por ordenador (CAD) (2D)
sistema de diseño asistido por ordenador (CAD) (3D)

2339

GTK

software de diseño de circuitos impresos y esquemas
electrónicos
interfaz de usuario de escáner

1898

LO

editor matemático de fórmulas/ecuaciones

calibreV:6, I:28

63385

KDE

fbreaderevinceokular

V:1, I:9
V:92, I:314
V:40, I:123

3783
941
17728

x11-apps

V:31, I:463

2460

x11-utils

V:192, I:566

651

GTK
GNOME
KDE
Aplicación
X puraAplicación
X puragestión de bibliotecas y conversor de libros
electrónicos
lector de libros electrónicos
visor de documentos (pdf)visor de documentos (pdf)xeyes(1), etc.
xev(1), xwininfo(1), etc..

Cuadro 7.3: Lista de aplicaciones GUI destacadas

134 / 257

Guía de referencia de DebianInformación sobre lafuenteCantarell (GNOME 3,
pantalla)
Fuentes Noto (Google,
multilingüe con CJK)DejaVu (GNOME 2,
MCM:Verdana, extendida
Bitstream Vera)
Liberation fonts para
LibreOffice (Red Hat,
MCMATC)
Chrome OS: Arimo, Tinos
y Cousine (Google,
MCMATC)
Chrome OS: Carlito(Google, MCM:Calibri )Chrome OS: Caladea(Google, MCM:Cambria )(solo en latín)
GNU FreeFont (extendido
URW Nimbus)
Debian task-desktop,
Quicksand (pantalla, sólo
latín)
Una tipografía diseñada
para el código fuente Hack
(Facebook)paquetepopularidad tamaño sans

serif

mono

fonts-cantarell

V:216,
I:306

572

59

-

-

fonts-noto

I:153

31

61

63

40

fonts-dejavu

I:421

35

58

68

40

fonts-liberation2

V:130,
I:427

15

56

60

40

fonts-croscore

V:20, I:40

5274

56

60

40

fonts-crosextracarlito

V:21, I:131

2696

57

-

-

fonts-crosextracaladea

I:128

347

-

55

-

fonts-freefont-ttf

V:76, I:218

14460

57

59

40

fonts-quicksand

V:123,
I:438

392

56

-

-

fonts-hack

V:24, I:120

2508

-

-

40 P

I:32

14345

-

54

-

Gentium SIL

I:27

6704

-

59

-

fonts-urw-base35

V:167,
I:472

15560

56

60

40

fonts-ubuntu

V:2, I:5

4339

58

-

33 P

fonts-terminus

V:0, I:3

452

-

-

33

ttf-mscorefontsinstaller

V:1, I:49

85

¿56?

60

40

Charis SIL
URW Nimbus (Nimbus
Sans, Roman No. 9 L,
Mono L, MCAHTC)
Fuentes de Ubuntu(pantalla)
Fuentes para terminales
retro.
Descargador de fuentes nolibres de Microsoft (vermás abajo)

fonts-silgentiumplus
fonts-sil-charis

Cuadro 7.4: Lista de notables fuentes TrueType y OpenType

135 / 257

Guía de referencia de Debian

7.6.2. Rasterización de fuentes
Debian usa FreeType para rasterizar fuentes. Su infraestructura de selección de fuentes la proporciona la biblioteca de configuración de fuentes Fontconfig.
paquetepopularidad
libfreetype6
V:560, I:997
libfontconfig1
V:554, I:849
fontconfig
V:437, I:721
font-manager
V:2, I:8
nautilus-font-manager
V:0, I:0

tamaño
938
587
680
1022

descripción
Biblioteca de rasterización de fuentes FreeType
Fontconfig biblioteca de configuración de fuentes
fc-*: comandos CLI para Fontconfig
Font Manager: comando GUI para Fontconfig

37

Extensión Nautilus para Font Manager

Cuadro 7.5: Lista de entornos de fuentes notables y paquetes relacionados

sugerencia
Algunos paquetes de fuentes como fonts-noto* instalan demasiadas fuentes. También es posible que desee
mantener algunos paquetes de fuentes instalados pero deshabilitados en una situación de uso normal. Se esperan múltiples glifos para algunos puntos de código Unicode debido a la unificación Han y los glifos no deseados
pueden ser elegidos por la biblioteca Fontconfig no configurada. Uno de los casos más molestos es ”U+3001 IDEOGRAPHIC COMMA” y ”U+3002 IDEOGRAPHIC FULL STOP” entre los países CJK. Puede evitar esta situación
problemática fácilmente configurando la disponibilidad de fuentes mediante la interfaz gráfica de usuario de FontManager (font-manager).

También puedes enumerar el estado de la configuración de la fuente desde la línea de comandos.
”fc-match(1)” para la fuente predeterminada de fontconfig”fc-list(1)” para las fuentes fontconfig disponibles
Puede configurar el estado de la configuración de la fuente desde el editor de texto, pero esto no es trivial. Ver fonts.conf(5).

7.7. Sandbox
Muchas aplicaciones en Linux, en su mayoría GUI, están disponibles en formatos binarios de fuentes que no son de Debian.
AppImage: aplicaciones de Linux que se ejecutan en cualquier lugar
FLATHUB -- Aplicaciones para Linux, aquísnapcraft -- El repositorio de aplicaciones para Linuxaviso
Los archivos binarios de estos sitios pueden incluir paquetes propietarios de software no libre.

Hay alguna razón de ser para estas distribuciones de formato binario para los aficionados al Software Libre que usan Debian, ya quepueden acomodar un conjunto limpio de bibliotecas utilizadas para cada aplicación por el respectivo desarrollador, independientede las suministradas por Debian.
El riesgo inherente de ejecutar archivos binarios externos se puede reducir mediante el uso del entorno sandbox que aprovecha
las modernas funciones de seguridad de Linux (ver Sección 4.7.5).

136 / 257

Guía de referencia de DebianPara binarios de AppImage y algunos sitios upstream, ejecútelos en firejail con manual de configuración.
Para binarios de FLATHUB, ejecútelos en Flatpak . (No requiere configuración manual.)
Para archivos binarios de Snapcraft, ejecutarlos en Snap . (No requiere configuración manual. Compatible con programas
daemon.)El paquete xdg-desktop-portal proporciona una API estandarizada para funciones comunes de escritorio. Verportal deescritorio xdg (flatpack) y portal de escritorio xdg (snap) .
paquetepopularidad

tamaño descripción
Marco de implementación de aplicaciones Flatpak para aplicaciones
flatpak
V:65, I:707499
de escritorio
gnome-software-plugin-flatpak
V:20, I:29
254
Compatibilidad con Flatpak para el software GNOME
snapd
V:67, I:70
gnome-software-plugin-snap
V:1, I:2

60022

Daemon y herramientas que habilitan paquetes snap

121

Compatibilidad con Snap para el software GNOME

xdg-desktop-portal
V:303, I:394

1936

portal de integración del escritorio para Flatpak y Snap

xdg-desktop-portal-gtk
V:274, I:392715

xdg-desktop-portal backend para gtk (GNOME)

xdg-desktop-portal-kde
V:53, I:72

1438

xdg-desktop-portal backend para Qt (KDE)

xdg-desktop-portal-wlr
V:0, I:4135

xdg-desktop-portal backend para wlroots (Wayland)

V:1, I:4

1771

un programa de espacio aislado de seguridad SUID firejail para usar
con AppImage

firejail

Cuadro 7.6: Lista de entornos sandbox notables y paquetes asociados
Esta tecnología de entorno de espacio aislado es muy parecida a las apps en el SO de los teléfonos inteligentes, donde las apps se
ejecutan bajo accesos de recursos controlados.
Algunas grandes aplicaciones GUI, como los navegadores web en Debian, también usan tecnología de entorno de espacio aisladointernamente para hacerlas más seguras.

7.8. Escritorio remoto
7.9. conexión del servidor X
Hay varias formas de conectarse desde una aplicación en un host remoto al servidor X, incluyendo xwayland en el host local.

7.9.1. Conexión local del servidor X
El acceso al servidor X local de las aplicaciones locales que usan el protocolo central X se puede hacer localmente a través deun socket de dominio UNIX local. Esto lo puede autorizar el archivo de autoridad que contiene el cookie de acceso. La situacióndel archivo de autoridad se identifica mediante la variable de entorno ”$XAUTHORITY” y la pantalla X se identifica mediantela variable de entorno ”$DISPLAY”. Dado que normalmente se configuran automáticamente, no se necesita ninguna acción
especial, p. ”gitk” como el que sigue.
username $ gitk

137 / 257

Guía de referencia de Debianpaquetepopularidad
gnome-remote-desktop
V:35, I:221

tamaño protocolos

descripción

1068

RDP

servidor Escritorio remoto GNOME

xrdp

V:22, I:24

3202

RDP

x11vnc

V:6, I:23

2107

RFB (VNC)

tigervnc-standalone-server
V:4, I:15
2768

RFB (VNC)

gnome-connections
V:0, I:1

1356

vinagreV:2, I:68

4249

remmina

V:15, I:72

953

krdc

V:1, I:17

3873

guacd

V:0, I:083

virt-viewer

V:5, I:52

1284

RDP, RFB(VNC)
RDP, RFB(VNC),SPICE, SSH
RDP, RFB(VNC),SPICE,
SSH, ...
RDP, RFB(VNC)
RDP, RFB(VNC), SSH/ HTML5
RFB (VNC),
SPICE

xrdp, servidor del protocolo de escritorio remoto(RDP)
x11vnc, servidor de protocolo framebuffer remoto(VNC)
TigerVNC, servidor de protocolo framebuffer remoto(VNC)
Cliente de escritorio remoto de GNOME
Vinagre: cliente de escritorio remoto de GNOME

Remmina: cliente de escritorio remoto GTK

KRDC: cliente de escritorio remoto KDE
Apache Guacamole: puerta de enlace al escritorio
remoto sin cliente (HTML5)
Cliente de pantalla GUI de Gestor de Máquinas
Virtuales del sistema operativo invitado

Cuadro 7.7: Lista de servidores de acceso remoto notables

paquetepopularidad

openssh-server

V:730, I:814

openssh-client
V:866, I:996
xauth
V:165, I:961
x11-xserver-utils
V:302, I:528

tamaño orden
descripción
sshd
1804
con la opción SSH servidor (seguro)
X11-forwarding4959
ssh -X
SSH cliente (seguro)81
xauth
Utilidad de archivo de autoridad X
568

xhost

control de acceso al servidor para X

Cuadro 7.8: Relación de los métodos de conexión al servidor X

Guía de referencia de Debian

138 / 257

nota
Para xwayland, XAUTHORITY tiene valor como ”/run/user/1000/.mutter-Xwaylandauth.YVSU30”.

7.9.2. Conexión remota del servidor X
El acceso a la pantalla del servidor X local desde las aplicaciones remotas que usan el protocolo central X se admite mediante el
uso de la función de reenvío X11.
Abra una gnome-terminal en el host local.
Ejecute ssh(1) con la opción -X para establecer una conexión con el sitio remoto como se muestra.
localname @ localhost $ ssh -q -X loginname@remotehost.domain
Password:

Ejecute una orden de aplicación X, p. ej. «gitk», en el sitio remoto como se muestra.
loginname @ remotehost $ gitk

Este método puede mostrar la salida de un cliente remoto X como si se estuviera conectado localmente conectado a través de un«socket« de dominio UNIX local.
Ver Sección 6.3 para SSH/SSHD.

aviso
Una conexión remota TCP/IP al servidor X está deshabilitada por defecto en el sistema Debian por razones
de seguridad. No las habilites simplemente poniendo ”xhost +” ni habilitando Conexión XDMCP, si puedes
evitarlo.

7.9.3. Conexión chroot del servidor X
El acceso al servidor X por parte de las aplicaciones que utilizan el protocolo X core y que se ejecutan en el mismo host pero en
un entorno como chroot donde el fichero de autoridad no es accesible, puede autorizarse de forma segura con xhost utilizando
el Acceso basado en usuario, por ejemplo ”gitk” como el siguiente.
username $ xhost + si:localuser:root ; sudo chroot /path/to# cd /src# gitk# exitusername $ xhost -7.10.

Portapapeles

Para recortar el texto en el portapapeles, ver Sección 1.4.4.
Para recortar gráficos al portapapeles, ver Sección 11.6.
Algunos comandos de la línea de comandos también pueden manipular el portapapeles (PRIMARY y CLIPBOARD).

139 / 257

Guía de referencia de Debianpaquetepopularidad

tamañodelobjetivo
paquetexsel

V:9, I:42

55

X

xclip

V:12, I:63

62

X

wl-clipboard

V:3, I:14

162

Waylandgpm

V:10, I:12521

Consola deLinuxdescripción
interfaz de la línea de comandos para X selecciones(portapapeles)interfaz de la línea de comandos para X selecciones(portapapeles)
wl-copy wl-paste: interfaz de la línea decomandos para Portapapeles de Wayland
Un servidor (Daemon) que captura acciones del ratón
en la consola de Linux

Cuadro 7.9: Lista de programas relacionados con la manipulación del portapapeles de caracteres

Guía de referencia de Debian

140 / 257

Capítulo 8

I18N y L10N
El Multilenguaje (M17N) o Soporte del Lenguaje Propio para el software de aplicaciones se realiza en dos pasos.
Internacionalización (I18N): para hacer que el software sea capaz de gestionar múltiples configuraciones dependiendo de laconfiguración regional.
Localización (L10N): para hacer que el software sea capaz de gestionar la configuración regional.
sugerencia
Hay 17, 18 o 10 letras entre ”m” y ”n”, ”i” y ”n”, o ”l” y ”n” en multilingüalización, internacionalización y localización
que corresponden a M17N, I18N y L10N. Véase Internacionalización y localización para más detalles.

8.1. Configuración regional
El programa admite la internacionalización mediante la configuración de la variable de entorno ”$LANG” para admitir la localización. La compatibilidad con la configuración regional real se basa en las características proporcionadas por la biblioteca libc
y requiere que se instalen los paquetes locales o locales-all. El paquete locales debe inicializarse correctamente.
Si no están instalados los paquetes locales o locales-all, se pierde el soporte de las características de localización y elsistema utiliza mensajes en inglés de EE.UU. y maneja los datos como ASCII. Este comportamiento es el mismo que ”$LANG”
es establecido por ”LANG=”, ”LANG=C”, o ”LANG=POSIX”.
Los programas modernos como GNOME y KDE son multilingües. Se internacionalizan haciendo que manejen datos UTF-8 y se
localizan proporcionando sus mensajes traducidos a través de la infraestructura gettext(1). Los mensajes traducidos pueden
proporcionarse como paquetes de localización independientes.

El sistema GUI de escritorio Debian actual normalmente establece la configuración local en el entorno GUI como ”LANG=xx_YY.UTF-8
Aquí, ”xx” es Códigos de idioma ISO 639 y ”YY” es Códigos de idioma ISO 3166. Estos valores se establecen mediante el diálogo
de la GUI de configuración del escritorio y cambian el comportamiento del programa. Ver Sección 1.5.2

8.1.1. Razón de ser de la configuración regional UTF-8
La representación más simple de los datos de texto es ASCII que es suficiente para el inglés y usa menos de 127 caracteres(representable con 7 bits).
Incluso texto plano en inglés puede contener caracteres que no perteneces a ASCII, p. ej. las comillas ligeramente inclinadas aizquierda y derecha no están incluidas en ASCII.
b’’“b’’double quoted textb’’”b’’ is not ”double quoted ASCII”
b’’‘b’’single quoted textb’’’b’’ is not ’single quoted ASCII’Guía de referencia de Debian

141 / 257

Para admitir más caracteres, se han utilizado muchos conjuntos de caracteres y sistemas de codificación para admitir muchos
idiomas (consulte Tabla 11.2).
EL conjunto de caracteres Unicode puede representar prácticamente todos los caracteres conocidos por humanos con un rango
de punto de código de 21 bits (es decir, 0 a 10FFFF en notación hexadecimal).
El sistema de codificación de texto UTF-8 ajusta los puntos de código Unicode en un flujo de datos sensible de 8 bits, en su
mayoría compatible con el sistema de procesamiento de datos ASCII. Esto hace que UTF-8 sea la opción preferida moderna.
UTF representa el Formato de Transformación Unicode. Cuando los datos de texto sin formato ASCII se convierten en uno UTF8, tienen exactamente el mismo contenido y tamaño que el original ASCII. Así que no pierde nada utilizando la configuración
regional UTF-8.
En la local UTF-8 con el programa de aplicación compatible, puede mostrar y editar cualquier dato de texto en un idioma extranjero
siempre que las fuentes y los métodos de entrada requeridos estén instalados y habilitados. Por ejemplo, en la configuración
local ”LANG=fr_FR.UTF-8”, gedit(1) (editor de texto para el escritorio GNOME) puede mostrar y editar datos de texto decaracteres chinos mientras presenta menús en francés.
sugerencia
Tanto la nueva configuración ”en_US.UTF-8” como la antigua configuración local estándar ”C”/”POSIX” utilizan elmensaje en inglés estadounidense estándar, tienen diferencias sutiles en el orden de clasificación, etc. Si desea
manejar no solo los caracteres ASCII, sino también todos los caracteres codificados en UTF-8 con elegancia
mientras mantiene el antiguo funcionamiento local ”C”, use la configuración local no estándar ”C.UTF-8” en Debian.

nota
Algunos programas utilizan más memoria después de configurarlos con l18N. Esto es debido a que se han escrito
para utilizar UTF-32(UCS4) internamente para utilizar Unicode con el fin de optimizar la velocidad y utilizan 4 bytes
por cada carácter ASCII con independencia de la configuración regional seleccionada. Nuevamente, no se pierde
nada por utilizar como configuración regional UTF-8.

8.1.2. Reconfiguración de la configuración regional
Para que el sistema acceda a un lugar en particular, los datos del lugar deben compilarse desde la base de datos del lugar.
El paquete locales no viene con datos locales precompilados. Necesitas configurarlo como:# dpkg-reconfigure locales

Este proceso consta de 2 pasos.
1. Selecciona todas las configuraciones regionales que desea compilar al formato binario. (Asegúrate de incluir al menos una
configuración regional UTF-8)
2. Establece el valor de la configuración regional predeterminada para todo el sistema creando ”/etc/default/locale”
para que lo utilice PAM (consulta Sección 4.5).
El valor de la configuración regional predeterminada para todo el sistema establecido en ”/etc/default/locale” se puede
anular por la configuración GUI para aplicaciones GUI.
nota
El sistema de codificación tradicional real puede identificarse mediante ”/usr/share/i18n/SUPPORTED”. Así,el ”LANG=en_US” es ”LANG=en_US.ISO-8859-1”.

El paquete locales-all viene con datos de configuración regional precompilados para todos los datos de la configuración
regional. Dado que no crea ”/etc/default/locale”, es posible que también necesite instalar el paquete locales.

Guía de referencia de Debian

142 / 257

sugerencia
El paquete locales de algunas distribuciones derivadas de Debian viene con los datos de la configuración regional precompilados para todas las configuraciones regionales. Necesitas instalar ambos paquetes locales ylocales-all en Debian para emular dicho entorno de sistema.

8.1.3. Codificación del nombre de archivo
Para el intercambio de datos entre plataformas (ver Sección 10.1.7), puede necesitar montar un sistema de archivos con una
codificación adecuada. Por ejemplo, mount(8) para el sistemas de archivos vfat da por sentado CP437 si se utiliza sin opciones.
Necesitará proporcionar al montar una opción explícita para utilizar UTF-8 o CP932 para los nombres de archivos.
nota
En el automontaje o la conexión en caliente de dispositivos de memoria USB en los entornos de escritorio modernos como GNOME, puede introducir esa opción de montaje pulsando el botón derecho del ratón en el icono delescritorio, pulse en la pestaña «Unidad», pulse para expandir «Configurar» e introduzca «utf8» en las «Opciones
de montaje:». La próxima vez que el dispositivo de memoria se monte UTF-8 se activará.

nota
Si esta actualizando su sistema o modificando los discos duros desde un sistema antiguo que no soporta UTF-8,
los nombres de los archivos con caracteres que no son ASCII se pueden codificar con la histórica y obsoleta ISO8859-1 o eucJP. Por favor busque ayuda entre las herramientas de conversión de texto para convertirlas a UTF-8.
Ver Sección 11.1.

Samba, por defecto, utiliza Unicode para los clientes nuevos (Windows NT, 200x, XP) pero utiliza CP850 para los viejos (DOSand Windows 9x/Me). El valor por defecto de los clientes viejos se puede cambiar modificando la entrada«dos charset» en
el archivo «/etc/samba/smb.conf», p. ej. a CP932 para el japonés.

8.1.4. Configuración regional de los mensajes y documentación traducida
Existen traducciones para muchos de los mensajes de texto y documentos que el sistema Debian muestra, como los mensajes deerror, salida estándar de los programas, menús y páginas de manual. El conjunto de herramientas GNU gettext(1) se usan como
respaldo para la mayoría de las actividades relacionadas con la traducción.
En «Tareas« → «Configuración regional« aptitude(8) tiene una relación muy completa de paquetes binarios útiles los cuales
proporcionan mensajes según la configuración regional de las aplicaciones y documentación traducida.
Por ejemplo, puede tener los mensajes según su configuración regional instalando el paquete manpages-LANG. Para leer lapágina de man en italiano de nombre_del_programadesde «/usr/share/man/it/», ejecute lo siguiente.
LANG=it_IT.UTF-8 man programname

GNU gettext puede acomodar una lista prioritaria de idiomas en la traducción con la variable del entorno $LANGUAGE. Porejemplo:$ export LANGUAGE=”pt:pt_BR:es:it:fr”

Para más información, consulta info gettext y lee la sección ”La variable LANGUAGE”.

Guía de referencia de Debian

143 / 257

8.1.5. Efectos de la configuración regional
El orden de los caracteres con sort(1) y ls(1) se ve afectado por la configuración regional. La exportación de LANG=es_US.UTF-8
ordena en el diccionario A->a->B->b... ->Z->z, mientras que exportar LANG=C.UTF-8 ordena en el orden binario ASCII
A->B->...->Z->a->b....
El formato de fecha de la ls(1) se ve afectado por la configuración regional (ver Sección 9.3.4).
El formato de la fecha de fecha(1) se ve afectado por la configuración regional. Por ejemplo:$ unset LC_ALL$ LANG=en_US.UTF-8 date
Thu Dec 24 08:30:00 PM JST 2023
$ LANG=en_GB.UTF-8 date
Thu 24 Dec 20:30:10 JST 2023
$ LANG=es_ES.UTF-8 datejue 24 dic 2023 20:30:20 JST$ LC_TIME=en_DK.UTF-8 date2023-12-24T20:30:30 JST

La puntuación numérica es diferente en las diferentes configuraciones regionales. Por ejemplo, en la configuración regional en
Inglés, mil punto uno se muestra como ”1,000.1”, mientras que en la configuración regional en alemán, se muestra como
”1.000, 1”. Puedes ver la diferencia en los programas de hojas de cálculo.
Cada detalle de la variable del entorno ”$LANG” se puede anular configurando las variables ”$LC_*”. Estas variables del entorno
se pueden volver a anular configurando la variable $LC_ALL”. Ver la página man locale(7) para obtener más detalles. A menos
que tengas una razón de peso para crear configuraciones complejas, mantente alejado de ellas y simplemente usa la variable”$LANG” para establecer una configuración regional UTF-8.

8.2. La entrada por teclado
8.2.1. Teclado de entrada para la consola Linux y X Window
El sistema Debian puede configurarse para trabajar con muchas disposiciones internacionales del teclado utilizando los paquetes
keyboard-configuration y console-setup.
# dpkg-reconfigure keyboard-configuration# dpkg-reconfigure console-setup

Para la consola de Linux y el sistema X Window, esto actualiza los parámetros de configuración en ”/etc/default/keyboard”
y ”/etc/default/console-setup”. Esto también configura la fuente de la consola de Linux. Muchos caracteres no ASCII, incluyendo los caracteres acentuados utilizados por muchos idiomas europeos, pueden estar disponibles con dead key, AltGr
key, y compose key.

8.2.2. La entrada por teclado para Wayland
Para GNOME en el sistema de escritorio Wayland, Sección 8.2.1 no admite idiomas europeos distintos del inglés. IBus se creó para
admitir no solo idiomas asiáticos sino también idiomas europeos. La dependencia del paquete del entorno de escritorio GNOME
recomienda ”ibus” a través de ”gnome-shell”. El código de ”ibus” se ha actualizado para integrar las funcionalidades delas opciones setxkbmap y XKB. Debe configurar ibus desde ”Configuración de GNOME” o ”Ajustes de GNOME” para laentrada de teclado multilingüe.
nota
Si ibus está activo, la configuración de su teclado X clásico por setxkbmap se puede anular por ibus incluso en un
entorno de escritorio clásico basado en X. Puede deshabilitar ibus instalado usando im-config para establecerel método de entrada en ”None”. Para más información, ver Wiki de Debian en el teclado.

144 / 257

Guía de referencia de Debian

8.2.3. El soporte al método de entrada con lBus
Ya que el entorno de escritorio GNOME recomienda ”ibus” a través de ”gnome-shell”, ”ibus” es la mejor opción para elmétodo de entrada.
La entrada multilenguaje a una aplicación se procesa como:
Keyboard||+-> Linux kernel ->Input method (ibus)+-- Engine--+Application^|-> Gtk, Qt, X, Wayland

La lista de IBus y sus paquetes son los siguientes.
paqueteibus
ibus-mozc
ibus-anthy
ibus-skk
ibus-kkc
ibus-libpinyin
ibus-chewingibus-libzhuyin
ibus-rimeibus-cangjie
ibus-hangul
ibus-libthai
ibus-table-thaiibus-unikey
ibus-keyman
ibus-tableibus-m17n
plasma-widgetsaddons

popularidad
V:198, I:245
V:1, I:3
V:0, I:1
V:0, I:0
V:0, I:0
V:1, I:3
V:0, I:0
V:0, I:0
V:0, I:0
V:0, I:0
V:0, I:2
I:0
I:0
V:0, I:0
V:0, I:0
V:0, I:1
V:0, I:1

tamaño
1723
944
8856
242
210
2761
247
40995
73
119
264
90
58
318
161
2176
395

V:50, I:100

1992

soporte de la configuración regional
infraestructura de método de entrada utilizando dbus
Japonés
,,,,,,Chino (para zh_CN), , (para zh_TW), , (para zh_TW), , (para zh_CN/zh_TW), , (para zh_HK)
CoreanoTailandés
Tailandésvietnamita
Multilingüe: motor Keyman para más de 2000 idiomas
tabla del motor de lBus
Multilenguaje: Indo, Árabe y otros
widgets adicionales para Plasma 5 que contienen un indicador de
tecladoCuadro 8.1: Lista de IBus y sus paquetes

nota
Para chino, ”fcitx5” puede ser un marco de método de entrada alternativo. Para los aficionados a Emacs, ”uim”
puede ser una alternativa. En cualquier caso, es posible que deba realizar una configuración manual adicional con
im-config. Algunos viejos métodos de entrada clásicos, como ”kinput2”, aún pueden existir en el repositorio
de Debian, pero no se recomiendan para el entorno moderno.

8.2.4. Ejemplo para el japonés
Encuentro que es muy útil el método de entrada en japonés iniciado en el entorno en inglés (”en_US.UTF-8”). Así es comohice esto con IBus para GNOME en Wayland:
1. Instale el paquete de herramientas de entrada para el japonés ibus-mozc (o ibus-anthy) con sus paquetes recomendados como im-config.
2. Seleccioné «Configuración« → «Teclado« → «Método de entrada« → pulsé «+» en «Métodos de entrada« → «Japonés«→ ”Mozc japonés (o anthy)” y haga clic en ”Agregar” si no se ha activado.

Guía de referencia de Debian

145 / 257

3. Puede elegir tantas fuentes de entrada como desee.
4. Volver a entrar con su cuenta de usuario.
5. Configure la fuente de entrada pulsado el botón derecho en el icono de la barra de herramientas del interfaz gráfico deusuario.
6. Cambie entre fuentes de entrada con el SUPER-ESPACIO (habitualmente la tecla de Windows).
sugerencia
Si desea tener acceso al entorno de teclado solo alfabético con el teclado japonés físico en el que shift-2 tiene
grabado ” (comillas dobles), seleccione ”Japonés” en el procedimiento anterior. Puede ingresar japonés usando”Mozc japonés (o anthy)” con un teclado físico ”EE. UU.” en el que shift-2 tiene @ (marca de arroba) grabado.

La entrada del menú del interfaz gráfico de usuario de im-config(8) es ”método de entrada”.
Alternativamente, ejecute ”im-config” desde el shell del usuario.
im-config(8) se comporta de forma diferente si la orden se ejecuta como superusuario o no.
im-config(8) activa el mejor método de entrada en el sistema por defecto sin la intervención del usuario.

8.3. La salida por pantalla
La consola de Linux solo puede mostrar un número limitado de caracteres. (Necesita un programa de terminal especial como
ifbterm(1) para visualizar lenguajes no europeos en una consola que no sea X).
El entorno GUI (Capítulo 7) puede mostrar cualquier carácter en UTF-8 siempre que las fuentes requeridas estén instaladas yhabilitadas. (La codificación de los datos de la fuente original se cuida y es transparente para el usuario).

8.4. Ancho de los caracteres ambiguos de Asia oriental
En las configuraciones regionales de Asia oriental, el área de dibujo de los caracteres griegos y cirílicos puede ser ampliada más
allá de lo deseado causando que no se muestren alineados en la salida (ver Anexo Estándar de Unicode #11).
Puede solucionar este problema:gnome-terminal: Preferencias → Archivos de configuración → Nombre de configuración → Compatibilidad → Caracterescon ancho ambiguo → Estrecho
ncurses: asigne en el entorno export NCURSES_NO_UTF8_ACS=0.

146 / 257

Guía de referencia de Debian

Capítulo 9

Trucos del sistema
Aquí, describo los trucos fundamentales para configurar y gestionar sistemas, principalmente desde la consola.

9.1. Consejos para la consola
Existen algunas utilidades que te ayudarán en tu interacción con la consola.
paquetemc
bsdutils
screenpopularidad
V:50, I:209
V:519, I:999
V:71, I:230

tamaño
1542
356
1003

tmux

V:43, I:146

1180

fzf
fzy
rlwrapledit
rlfe

V:4, I:16
V:0, I:0
V:1, I:15
V:0, I:11
V:0, I:0

3648
54
330
331
45

ripgrep

V:5, I:19

5152

descripción
Ver Sección 1.3
script(1) comando para hacer typescript de la sesión del terminal
Multiplexador de terminal con emulación de terminal VT100/ANSI
alternativa al multiplexor de terminales (utiliza ”Control-B” en su
lugar)
buscador de texto borroso
buscador de texto borroso
envoltorio de la línea de comando de la función readline
envoltorio de la línea de comando de la función readline
envoltorio de la línea de comando de la función readline
búsqueda rápida de las cadenas recursivas en el árbol del código
fuente con el filtrado automático

Cuadro 9.1: Lista de programas de apoyo a las actividades de la consola9.1.1. Registro correcto de las actividades del intérprete de órdenes
La utilización para el registro de la actividad del intérprete de órdenes, sin más, de script(1) (ver Sección 1.4.9) produce unarchivo con caracteres de control. Esto se puede evitar con la utilización de col(1) como se muestra.
$ script
Script started, file is typescript

Haga lo que quiera ... y pulse Ctrl-D para finalizar script.
$ col -bx < typescript > cleanedfile$ vim cleanedfile

Existen métodos alternativos para registrar las actividades de shell :Guía de referencia de Debian

147 / 257

Utiliza tee (solo se puede usar durante el proceso de arranque en initramfs):$ sh -i 2>&1 | tee typescript

Utiliza gnome-terminal con el búfer de línea extendida para el scrollback.
Utilice pantalla con ”^A H” (ver Sección 9.1.2) para realizar la grabación de la consola.
Utiliza vim con ”:terminal” para entrar en el modo terminal. Utiliza ”Ctrl-W N” para salir del modo terminal al modo
normal. Utiliza ”:w typescript” para escribir en el búfer de un archivo.
Usa emacs con ”Mx shell”, ”M-x eshell” o ”M-x term” para ingresar a la consola de grabación . Utiliza ”C-x C-w”
para escribir en el búfer de un archivo.

9.1.2. El programa screen
Screen(1) no solo permite trabajar con múltiples procesos en un único terminal, si no que también que el proceso del intérpretede órdenes remoto sobreviva a la interrupción de las conexiones. Aquí está un escenario típico de utilización de screen(1).
1. Acceda a un equipo remoto.
2. Iniciar screen en una única consola.
3. Ejecute múltiples programas en la ventana de screen con ^A c («Control-A« seguido por «c«).
4. Puede cambiar entre las múltiples ventanas de screen con ^A n («Control-A« seguido de «n«).
5. Si repentinamente necesita dejar su terminal, pero no quiere perder su trabajo activo por la mantener la conexión.
6. Se puede separar la sesión screen por cualquier método.
Desconexión forzada de su conexión de red
Pulse ^A d («Control-A« seguido de «d«) y cierre manualmente la conexión remota
Pulse ^A DD («Control-A« seguido de «DD«) para que screen separe y cierre su sesión
7. Si inicia la sesión otra vez al mismo equipo remoto (incluso desde un terminal diferente).
8. Inicie screen con «screen -r».
9. Screen mágicamente reconecta con todas las ventanas anteriores de screen con todos los programas activos ejecutándose.
sugerencia
Puede guardar la entrada de la conexión con screen para la conexión de red a medida como de marcado y depaquete, ya que puede dejar el proceso activo mientras esta desconectado, y entonces recuperarlo más tarde
cuando se conecte de nuevo.

En una sesión de screen, todas las entradas de teclado se envían a la ventana actual excepto las que son combinaciones deteclado de órdenes. Todas las combinaciones de teclas de órdenes screen se inician pulsando ^A («Control-A«) más otra tecla[más algunos parámetros]. He aquí algunos importantes para recordar.
Para más detalles ver screen(1).
Ver tmux(1) para saber las funcionalidades del comando alternativo.

148 / 257

Guía de referencia de Debianfunción
^A ?
^A c
^A n
^A p
^A 0
^A 1
^A w
^A a
^A h
^A H
^A ^X
^A d
^A DD

significado
muestra la ayuda de screen (muestra los atajos de teclado)crea una nueva ventana y cambia a ella
ir a la siguiente ventana
ir a la ventana anteriorva a la ventana 0
ir a la ventana número 1
muestra una relación de las ventanas
envía un Ctrl-A a la ventana actual como entrada de teclado
escribe una copia de la ventana actual a un archivo
inicia/finaliza la grabación de la ventana actual a un archivo
bloquea la terminal (protegido por contraseña)
separa la sesión de screen de la terminal
separa la sesión de screen y sal
Cuadro 9.2: Relación de los atajos de teclado para screen

9.1.3. Navegando por los directorios
En Sección 1.4.2, se describen 2 sugerencias para permitir una navegación rápida por los directorios: $CDPATH y mc.
Si utiliza el programa de fuzzy text filter, puede hacerlo sin escribir la ruta exacta. Para fzf, incluya lo siguiente en ~/.bashrc.
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash
if [ -f $FZF_KEYBINDINGS_PATH ]; then
. $FZF_KEYBINDINGS_PATHfi

Por ejemplo:
Puedes saltar a un subdirectorio muy profundo con un mínimo esfuerzo. Primero escribe ”cd **” y pulsa Tab. A continuación,
pedirá las rutas candidatas. Si escribe cadenas de rutas parciales, por ejemplo, s/d/b foo, se reducirán las rutas candidatas.
Seleccione la ruta que va a usar cd con las teclas de cursor y retorno.
Puede seleccionar un comando del historial de comandos de manera más eficiente con un esfuerzo mínimo. Presione Ctrl-R
en el símbolo del sistema. Luego le pedirá los comandos candidatos. Escribir cadenas de comandos parciales, por ejemplo,
vim d, reducirá los candidatos. Seleccione el que se utilizará con las teclas de cursor y retorno.

9.1.4. Readline wrapper
Algunos comandos, como /usr/bin/dash, que carecen de la capacidad de edición del historial en la línea de comandos,
pueden agregar dicha funcionalidad de forma transparente si se ejecutan bajo rlwrap o sus equivalentes.
$ rlwrap dash -i

Esto proporciona una plataforma conveniente para probar puntos sutiles para dash con un entorno amigable similar a bash.

9.1.5. Escaneando el árbol del código fuente
El comando rg(1) en el paquete ripgrep ofrece una alternativa más rápida al comando grep(1) para escanear el árbol de código
fuente en busca para situaciones típicas. Aprovecha las modernas CPU multinúcleo y aplica automáticamente filtros razonables
para omitir algunos archivos.

Guía de referencia de Debian

149 / 257

9.2. Personalización de vim
Después de aprender los conceptos básicos de vim(1) a través de Sección 1.4.8, ver ”Siete hábitos de edición de texto efectiva(2000) ”de Bram Moolenaar, para entender cómo se debe usar vim.

9.2.1. Personalizando vim con características internas
Se puede cambiar el comportamiento de vim significativamente habilitando sus características internas a través de los comandosdel modo Ex como ”set ...” para establecer opciones de vim.
Estos comandos en modo Ex se pueden incluir en el archivo vimrc del usuario, en el tradicional ”~/.vimrc” o en el compatible
con git ”~/.vim/vimrc”. He aquí un ejemplo muy simple 1:””” Generic baseline Vim and Neovim configuration (~/.vimrc)”””- For NeoVim, use ”nvim -u ~/.vimrc [filename]””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
let mapleader = ’ ’” :h mapleader””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
set nocompatible” :h ’cp -- sensible (n)vim mode
syntax on” :h :syn-on
filetype plugin indent on” :h :filetype-overview
set encoding=utf-8” :h ’enc (default: latin1) -- sensible encoding””” current vim option value can be verified by :set encoding?
set backspace=indent,eol,start ” :h ’bs (default: nobs) -- sensible BS
set statusline= %< %f%m%r%h%w%=%y[U+ %04B] %2l/ %2L= %P, %2c%V
set listchars=eol:¶,tab:b’’�b’’\ ,extends:b’’�b’’,precedes:b’’�b’’,nbsp:b’’�b’’
set viminfo=!,’100,<5000,s100,h ” :h ’vi -- bigger copy buffer etc.
””” Pick ”colorscheme” from blue darkblue default delek desert elflord evening””” habamax industry koehler lunaperche morning murphy pablo peachpuff quiet ron””” shine slate torte zellnercolorscheme industry”colorscheme default
set scrolloff=5” :h ’scr -- show 5 lines around cursor
set laststatus=2” :h ’ls (default 1) k””” boolean options can be unset by prefixing ”no”
set ignorecase” :h ’ic
set smartcase” :h ’scs
set autoindent” :h ’ai
set smartindent” :h ’si
set nowrap” :h ’wrap”set list” :h ’list (default nolist)
set noerrorbells” :h ’eb
set novisualbell” :h ’vb
set t_vb=” :h ’t_vb -- termcap visual bell
set spell” :h ’spell
set spelllang=en_us,cjk” :h ’spl -- english spell, ignore CJK
set clipboard=unnamedplus” :h ’cb -- cut/copy/paste with other app
set hidden” :h ’hid
set autowrite” :h ’aw

El mapa de teclas de vim puede cambiarse en el fichero vimrc del usuario. Por ejemplo:

atención
No intente cambiar las combinaciones de teclas predeterminadas sin muy buenas razones.
1Ejemplos de personalización más elaborados: ”Vim Galore”, ”sensible.vim”, ...

Guía de referencia de Debian””” Popular mappings (imitating LazyVim etc.)””” Window moves without using CTRL-W which is dangerous in INSERT mode
nnoremap <C-H> <C-W>hnnoremap <C-J> <C-W>jnnoremap <C-K> <C-W>ksilent! nnoremap <C-L> <C-W>l””” Window resize
nnoremap <C-LEFT> <CMD>vertical resize -2<CR>
nnoremap <C-DOWN> <CMD>resize -2<CR>
nnoremap <C-UP> <CMD>resize +2<CR>
nnoremap <C-RIGHT> <CMD>vertical resize +2<CR>””” Clear hlsearch with <ESC> (<C-L> is mapped as above)nnoremap <ESC> <CMD>noh<CR><ESC>
inoremap <ESC> <CMD>noh<CR><ESC>””” center after jump next
nnoremap n nzz
nnoremap N Nzz””” fast ”jk” to get out of INSERT mode (<ESC>)
inoremap jk <CMD>noh<CR><ESC>””” fast ”<ESC><ESC>” to get out of TERM mode (CTRL-\ CTRL-N)
tnoremap <ESC><ESC> <C-\><C-N>””” fast ”jk” to get out of TERM mode (CTRL-\ CTRL-N)
tnoremap jk <C-\><C-N>””” previous/next trouble/quickfix item
nnoremap [q <CMD>cprevious<CR>
nnoremap ]q <CMD>cnext<CR>””” buffers
nnoremap <S-H> <CMD>bprevious<CR>
nnoremap <S-L> <CMD>bnext<CR>
nnoremap [b <CMD>bprevious<CR>
nnoremap ]b <CMD>bnext<CR>””” Add undo break-points
inoremap , ,<C-G>u
inoremap . .<C-G>u
inoremap ; ;<C-G>u””” save file
inoremap <C-S> <CMD>w<CR><ESC>
xnoremap <C-S> <CMD>w<CR><ESC>
nnoremap <C-S> <CMD>w<CR><ESC>
snoremap <C-S> <CMD>w<CR><ESC>””” better indenting
vnoremap < <gvvnoremap > >gv””” terminal (Somehow under Linux, <C-/> becomes <C-_> in Vim)nnoremap <C-_> <CMD>terminal<CR>”nnoremap <C-/> <CMD>terminal<CR>””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
if ! has(’nvim’)””” Toggle paste mode with <SPACE>p for Vim (no need for Nvim)
set pastetoggle=<leader>p””” nvim default mappings for Vim. See :h default-mappings in nvim””” copy to EOL (no delete) like D for dnoremap Y y$””” sets a new undo point before deleting
inoremap <C-U> <C-G>u<C-U>
inoremap <C-W> <C-G>u<C-W>””” <C-L> is re-purposed as above””” execute the previous macro recorded with Q
nnoremap Q @@””” repeat last substitute and *KEEP* flags
nnoremap & :&&<CR>

150 / 257

Guía de referencia de Debian

151 / 257””” search visual selected string for visual mode
xnoremap * y/\V<C-R>”<CR>
xnoremap # y?\V<C-R>”<CR>
endif

Para que las combinaciones de teclas anteriores funcionen correctamente, el programa de terminal ha de configurarse para generar”ASCII DEL” para la teclaBackspace y ”Secuencia de escape” para la tecla Delete.
También se pueden cambiar otras configuraciones en el archivo vimrc del usuario. Por ejemplo:””” Use faster ’rg’ (ripgrep package) for :grep
if executable(”rg”)
set grepprg=rg\ --vimgrep\ --smart-caseset grepformat= %f: %l: %c: %m
endif””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” Retain last cursor position :h ’”augroup RetainLastCursorPosition
autocmd!
autocmd BufReadPost *\ if line(”’\””) > 0 && line (”’\””) <= line(”$”) |\exe ”normal! g’\”” |\ endifaugroup END””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” Force to use underline for spell check results
augroup SpellUnderline
autocmd!
autocmd ColorScheme * highlight SpellBad term=Underline gui=Undercurl
autocmd ColorScheme * highlight SpellCap term=Underline gui=Undercurl
autocmd ColorScheme * highlight SpellLocal term=Underline gui=Undercurl
autocmd ColorScheme * highlight SpellRare term=Underline gui=Undercurl
augroup END””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” highlight tailing spaces except when typing as red (set after colorscheme)
highlight TailingWhitespaces ctermbg=red guibg=red””” \s\+1 or more whitespace character: <Space> and <Tab>””” \ %#\@<! Matches with zero width if the cursor position does NOT match.
match TailingWhitespaces /\s\+\ %#\@<!$/

9.2.2. Personalizando vim con paquetes externos
Se pueden encontrar interesantes paquetes de complementos externos:
Vim - el editor de texto extendido -- El sitio web oficial de Vim y vim scripts
VimAwsome -- La lista de plugins de Vim
vim-scripts -- Paquete Debian: una colección de scripts de vim
Los paquetes del plugins en el paquete vim-scripts se pueden habilitar usando el archivo vimrc del usuario. Ej:
packadd! secure-modelines
packadd! winmanager” IDE-like UI for files and buffers with <space>w
nnoremap <leader>w:WMToggle<CR>

El nuevo sistema de paquetes nativo de Vim funciona bien con ”git” y ”git submodule”. Puede encontrar un ejemplo deconfiguración en my git repository: dot-vim. Esto hace esencialmente:152 / 257

Guía de referencia de Debian

Al usar ”git” y ”git submodule”, los últimos paquetes externos, como ”name”, se sitúan en ~/.vim/pack/*/opt/namey similares.
Agregando la línea :packadd! name al archivo vimrc del usuario, estos paquetes se colocan en runtimepath.
Vim carga estos paquetes en runtimepath durante su inicialización.
Al final de su inicialización, se actualizan las etiquetas de los documentos instalados con ”helptags ALL”.
Para más información, inicie vim con ”vim --startuptime vimstart.log” para comprobar la secuencia de ejecución
real y el tiempo usado en cada paso.
Es bastante confuso ver demasiadas formas 2 de administrar y cargar estos paquetes externos en vim. Verificar la información
original es la mejor cura.
entradas con el teclado:help package:help runtimepath:version:echo $VIM:¿establecer la ruta del tiempode ejecución?
:echo $VIMRUNTIME

información
explicación sobre el mecanismo del paquete vim
explicación sobre el mecanismo de runtimepath
condiciones internas incluyen candidatos para el archivo vimrc
la variable de entorno ”$VIM” utilizada para situar el archivo vimrc
lista de directorios en los que se buscarán todos los archivos del soportedel tiempo de ejecución
la variable del entorno ”$VIMRUNTIME” utilizada para ubicar varios
archivos del soporte de tiempo de ejecución proporcionados por elsistemaCuadro 9.3: Información de la inicialización de vim

9.3. Registro de datos y presentación
9.3.1. El demonio de registro
Muchos programas tradicionales registran tus actividades en el formato de un archivo de texto en el directorio ”/var/log/”.
logrotate(8) se utiliza para simplificar la administración de los archivos del registro en un sistema que genera muchos archivosde registro.
Muchos programas nuevos registran sus actividades en formato de archivo binario utilizando el servicio Journalsystemd-journald(8) en el directorio ”/var/log/journal ”.
Puedes registrar los datos en el registro systemd-journald(8) desde un script de shell, usando el comando systemd-cat(1).
Consulte Sección 3.4 y Sección 3.3.

9.3.2. Analizador de registros
Aquí están los analizadores de registro más importantes («~Gsecurity::log-analyzer» en aptitude(8)).
nota
CRM114 tiene un lenguaje que permite escribir borrosos filtros con la biblioteca de expresiones regulares TRE. Su uso más común es como filtro de correos no deseados pero se puede utilizar también como analizador deregistros.
2vim-pathogen fue popular.

153 / 257

Guía de referencia de Debianpaquetelogwatch
fail2bananalogawstatssarg
pflogsumm
fwlogwatch
squidview

popularidad
V:11, I:13
V:98, I:111
V:3, I:96
V:6, I:10
V:1, I:1
V:1, I:4
V:0, I:0
V:0, I:0

tamaño
2328
2126
3739
6928
845
109
481
189

swatch

V:0, I:099

crm114

V:0, I:01119

icmpinfo

V:0, I:044

descripción
analizador de registro con una buena salida escrito en Perlprohibición de las IPs con múltiples errores de acreditación
analizador de registro para servidores web
analizador de registro de servidor web potente y funcional
generador de informes de análisis de squid
Resumidor de entradas de registro Postfix
analizador de registros de cortafuegos
controla y analiza los archivos access.log de squid
visor de archivos de registros con combinación de expresiones
regulares, hechos relevantes y reglas
Filtro de spam y filtro mediante expresiones regulares programables(CRM114)
intérprete de mensajes ICMP

Cuadro 9.4: Relación de analizadores de registro del sistema

9.3.3. Personalizar la visualización de información en formato texto
Aunque las herramientas de paginación como more(1) y less(1) (ver Sección 1.4.5) y las herramientas personalizadas para
marcar y dar formato (ver Sección 11.1.8) pueden visualizar la información en formato texto de la forma correcta, los editores depropósito general (ver Sección 1.4.6) son más versátiles y personalizables.
sugerencia
En vim(1) y su modo de paginación conocido como view(1), «:set hls» permite la búsqueda de textos resaltados.

9.3.4. Personalización de la visualización de la fecha y hora
El formato predeterminado de visualización de la hora y la fecha mediante el comando ”ls -l” depende de la localidad (verSección 1.2.6 para conocer el valor). La variable ”$LANG” es la primera a la que se hace referencia y se puede anular con lasvariables de entorno exportadas ”$LC_TIME” o ”$LC_ALL”.
El formato de visualización predeterminado real para cada configuración regional depende de la versión de la biblioteca C estándar
(el paquete libc6) utilizada. Es decir, diferentes versiones de Debian tienen diferentes valores por defecto. Para los formatos
iso, ver ISO 8601.
Si de verdad quiere personalizar el formato de visualización de la hora y la fecha independientemente de la configuración regional, debería asignar el valor de estilo de tiempo por el parámetro «--time-style» o por el valor de «$TIME_STYLE» (verls(1), date(1), «info coreutils ’ls invocation’»).
sugerencia
Puedes eliminar escribir la opción larga en la línea de comandos usando el alias de comando (ver Sección 1.5.9):
alias ls=’ls --time-style=+ %d. %m. %y %H: %M’

9.3.5. Intérprete de órdenes en color

En los terminales más modernos se pueden utilizar colores utilizando secuencias de escape ANSI (ver «/usr/share/doc/xterm/ct
Por ejemplo, intente lo siguiente

154 / 257

Guía de referencia de Debianvalor del estilo de la horaisolong-isoconfiguración regional
cualquiera
cualquiera

full-isocualquieraconfiguración regional
configuración regional
configuración regional+ %d. %m. %y %H: %M+ %d. %b. %y %H: %M+ %d. %b. %y %H: %M

C
en_US.UTF-8
es_ES.UTF-8
cualquiera
C o en_US.UTF-8
es_ES.UTF-8

visualización de la hora y la fecha
01-19 00:15
19 -01-2009 00:15
19-01-2009 00:15:16.000000000+0900
enero 19 00:15
enero 19 00:15
ene 19 00:15
19.01.09 00:15
19.Jan.09 00:15
19.ene.09 00:15

Cuadro 9.5: Mostrar los ejemplos de la hora y la fecha para el comando ”ls -l” con el time style value.

$ RED=$(printf ”\x1b[31m”)$ NORMAL=$(printf ”\x1b[0m”)$ REVERSE=$(printf ”\x1b[7m”)$ echo ”${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}”

9.3.6. Órdenes coloreadas
Las ordenes de colores son útiles para la comprobación visual de la salida en entornos interactivos. Yo añado lo siguiente en mi«~/.bashrc».
if [ ”$TERM” != ”dumb” ]; theneval ”‘dircolors -b‘”
alias ls=’ls --color=always’
alias ll=’ls --color=always -l’alias la=’ls --color=always -A’alias less=’less -R’alias ls=’ls --color=always’
alias grep=’grep --color=always’
alias egrep=’egrep --color=always’
alias fgrep=’fgrep --color=always’
alias zgrep=’zgrep --color=always’
else
alias ll=’ls -l’alias la=’ls -A’fi

La utilización de alias limita los efectos del color en el uso de órdenes interactivas. Tiene ventajas sobre las variables de entorno
exportadas «export GREP_OPTIONS=’--color=auto’» ya que el color puede verse en los programas de paginación
como less(1). Si quiere eliminar el color cuando usa tuberías con otros programas, utilice «--color=auto» en su lugar en
los ejemplos anteriores «~/.bashrc».
sugerencia
Puede deshabilitar los alias de color en un entorno interactivo llamando al intérprete de órdenes con «TERM=dumb
bash».

9.3.7. Grabación de las actividades del editor con repeticiones complejas
Puede guardar las actividades del editor con repeticiones complejas.
Para Vim, como sigue.

155 / 257

Guía de referencia de Debian«qa»: comienza a grabar los caracteres escritos en un registro llamado «a».
…actividades del editor«q»: finaliza la grabación de los caracteres escritos.
«@a»: ejecuta el contenido del registro «a».
Para Emacs, como sigue.
«C-x (»: comienza a definir una macro de teclado.
…actividades del editor«C-x )»: termina definir una macro de teclado.
«C-x e»: ejecuta una macro de teclado.

9.3.8. Capturar una imagen gráfica en un aplicación X
Existen varias maneras de grabar una imagen gráfica de una aplicación X, incluida una pantalla de xterm.
paquetepopularidad
gnome-screenshot
V:18, I:173
flameshot
gimp
x11-apps
imagemagickscrot

V:7, I:15
V:50, I:252
V:31, I:463
I:317
V:5, I:63

tamaño pantalla
1134

Wayland

3364
19304
2460
74
131

WaylandWayland + X
XX
X

Cuadro 9.6: Relación de herramientas de manipulación de imágenes

9.3.9. Guardando cambios en los archivos de configuración
Existen herramientas especializadas para guardar los cambios de los archivos de configuración con la ayuda de DVCS y para
hacer instantáneas del sistema en Btrfs.
paquetepopularidad

etckeeper

V:26, I:30

timeshift

V:5, I:10

snapper

V:4, I:5

tamaño descripción
almacenar los archivos de configuración y sus metadatos con Git (por168
defecto), Mercurial, o GNU Bazaar
utilidad de restauración del sistema usando rsync o instantáneas
3506
BTRFS
2392
Herramienta de gestión de instantáneas de sistemas de archivos Linux

Cuadro 9.7: Relación de paquetes que pueden guardar el histórico de configuración
También puedes pensar en el enfoque de los script locales Sección 10.2.3.

156 / 257

Guía de referencia de Debianpaquetepopularidad

coreutils

V:880, I:999

bsdutils

V:519, I:999

procps

V:766, I:999

psmisc

V:420, I:775

time

V:7, I:132

sysstat

V:148, I:170

isag

V:0, I:3

lsof

V:422, I:945

straceltraceV:12, I:119
V:0, I:16

xtraceV:0, I:0

powertop

V:18, I:217

cron

V:872, I:995

anacron

V:396, I:479

at

V:101, I:154

tamaño descripción
nice(1): ejecuta un programa modificando su prioridad de18307
planificación
renice(1): cambia la prioridad de planificación de un proceso en356
ejecución«/proc» utilidades del sistema de archivos: ps(1), top(1),2389
kill(1), watch(1), …
«/proc» utilidades del sistema de archivos: killall(1),908fuser(1), peekfd(1), pstree(1)time(1): ejecuta un programa para crear un informe de los recursos
129
del sistema utilizados a lo largo del tiemposar(1), iostat(1), mpstat(1), …: herramientas de optimización
1904
del sistema en Linux109
Graficador Interactivo de la Actividad del Sistema para sysstat
lsof(8): enumera la relación de archivos abiertos por un proceso en
482
ejecución utilizando la opción «-p»2897
strace(1): registro de las llamadas del sistema y señales
330
ltrace(1): registro a las bibliotecas invocadas
xtrace(1): registra las comunicaciones entre el cliente y el servidor353
en X11
powertop(1): información sobre el uso de la potencia por parte del677
sistemaejecuta procesos en segundo plano de acuerdo a su planificación244
desde el dominio cron(8)planificador de tareas similar a cron para los sistemas que no están
93
activos 24 horas al día
at(1) o batch(1): ejecuta un trabajo en un momento determinado o158
debajo de cierto nivel de carga

Cuadro 9.8: Relación de las herramientas de monitorización y control de las actividades de los programas

157 / 257

Guía de referencia de Debian

9.4. Monitoreando, controlando e iniciando lo que hacer los programas
Las actividades de los programas pueden ser monitoreados y controlados utilizando herramientas especializadas.
sugerencia
El paquete procps provee lo fundamental para la monitorización, control e inicio de las actividades de los programas. Podría aprender sobre todo ello.

9.4.1. Temporización de un proceso
Muestra el tiempo utilizado por un proceso llamado por una orden.
# time some_command >/dev/null
real
0m0.035s# time on wall clock (elapsed real time)user
0m0.000s# time in user modesys
0m0.020s# time in kernel mode

9.4.2. La prioridad de planificación
Se usa un buen valor para determinar la prioridad de planificación de los procesos.
buen valor
19
0
-20

prioridad de planificación
proceso de menor prioridad (buen)proceso de muy alta prioridad para el usuario
proceso de superusuario (no bueno) de muy alta prioridad
Cuadro 9.9: Relación de buenos valores para la prioridad de planificación# nice -19 top# very nice# nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast

Algunas veces un buen valor extremo produce más mal que bien al sistema. Utilice esta orden con cuidado.

9.4.3. La orden ps
La orden ps(1) en un sistema Debian aportan tanto las funcionalidades de SystemV y BSD y ayuda a identificar la actividad
estática del proceso.
estilo
BSD
System V

orden típica
ps aux
ps -efH

funcionalidad
muestra %CPU %MEM
visualiza PPID

Cuadro 9.10: Lista de estilo de la orden ps
Para los procesos hijos zombies (muertos) , los puede eliminar mediante el identificador del proceso padre que corresponde alcampo «PPID».
La orden pstree(1) muestra el árbol de procesos.

Guía de referencia de Debian

158 / 257

9.4.4. La orden top
top(1) en el sistema Debian es rico desde el punto de vista funcional y ayuda a identificar que procesos actúan de forma extraña
puntualmente.
Es un programa a pantalla completa interactivo. Puede obtener ayuda pulsando la tecla «h« y salir pulsando la tecla «q«.

9.4.5. Relación de los archivos abiertos por un proceso
Puede enumerar los archivos abiertos por un proceso con el identificador de proceso (PID), p. ej. 1, con lo siguiente.
$ sudo lsof -p 1

PID=1 generalmente es del programa init.

9.4.6. Trazando la actividad de un programa
Puede trazar la actividad de un programa con strace(1), ltrace(1), o xtrace(1) para llamadas y señales del sistema, llamadas a bibliotecas o comunicación entre el cliente X11 y el servidor..
Puede seguir las invocaciones del sistema de la orden ls como se muestra.
$ sudo strace lssugerencia
Usar el script strace-graph ubicado en /usr/share/doc/strace/examples/ para armar una vista de árbol agradable

9.4.7. Identificación de procesos utilizando archivos o conexiones (sockets)
También puede identificar procesos utilizando archivos mediante fuser(1), p. ej. para «/var/log/mail.log» como se
muestra.
$ sudo fuser -v /var/log/mail.log
USER
PID ACCESS COMMAND/var/log/mail.log:
root2946 F.... rsyslogd

Puede ver que el archivo «/var/log/mail.log» esta abierto en escritura por la orden rsyslogd(8).
También puede identificar un proceso por la utilización de sus conexiones (sockets) mediante fuser(1), p. ej. para «smtp/tcp»
como sigue.
$ sudo fuser -v smtp/tcp
USER
PID ACCESS COMMAND
smtp/tcp:
Debian-exim
3379 F.... exim4

Ahora sabe que su sistema ejecuta exim4(8) para gestionar las conexiones TCP del puerto SMTP (25).

9.4.8. Repetición de una orden a intervalos constantes
watch(1) ejecuta un programa de forma reiterada a un intervalo constante mientras muestra la salida del programa a pantalla
completa.
$ watch w

Esto muestra quién está acreditado en el sistema y lo actualiza cada 2 segundos.

Guía de referencia de Debian

159 / 257

9.4.9. Repetición de una orden sobre archivos
Existen varias formas de repetir una orden sobre los archivos que cumplan una condición, p. ej, encajan en un patrón «*.ext».
Método del bucle for del intérprete de órdenes (ver Sección 12.1.4):
for x in *.ext; do if [ -f ”$x”]; then command ”$x” ; fi; done

Combinación de find(1) y xargs(1):find . -type f -maxdepth 1 -name ’*.ext’ -print0 | xargs -0 -n 1 commandfind(1) con la opción «-exec» y una orden:
find . -type f -maxdepth 1 -name ’*.ext’ -exec command ’{}’ \;find(1) con la opción «-exec» con un archivo de órdenes pequeño:
find . -type f -maxdepth 1 -name ’*.ext’ -exec sh -c ”command ’{}’ && echo ’successful’” \;Los ejemplos anteriores están escritos para asegurar el correcto tratamiento de los nombres de archivos que contienen caracteresraros como los espacios. Para usos avanzados de find(1) ver Sección 10.1.5.

9.4.10.

Iniciar un programa desde el interfaz gráfico de usuario

Para el interfaz de órdenes en línea (CLI), el programa ejecutado será el primero que encaja el nombre en el directorio especificado
por la variable de entorno $PATH. Ver Sección 1.5.3.
Para el interfaz gráfico de usuario (GUI) que cumple con el estándar de freedesktop.org, los archivos *.desktop en el directorio /usr/share/applications/ proporcionan los atributos necesarios para la visualización de cada programa en elmenú del interfaz gráfico de usuario. Cada paquete que cumple con el sistema de menú xdg de Freedesktop.org instala sus datos
de menú proporcionados por ”*. desktop” en ”/usr/share/applications/”. Los modernos entornos de escritorio que cumplen con
el estándar Freedesktop.org utilizan estos datos para generar su menú utilizando el paquete xdg-utils. Ver ”/usr/share/doc/xdgutils/README”.
Por ejemplo, el archivo chromium.desktop define los atributos para el «Navegador Web Chromium« como «Name« para elnombre del programa, «Exec« para la ruta de ejecución del programa y parámetros, «Icon« para el icono utilizado, etc. (consulte
la Especificación de Entradas del Escritorio (Desktop Entry Specification)) como sigue:[Desktop Entry]
Version=1.0
Name=Chromium Web Browser
GenericName=Web Browser
Comment=Access the Internet
Comment[fr]=Explorer le Web
Exec=/usr/bin/chromium %U
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=chromium
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/ ←https;
StartupWMClass=Chromium
StartupNotify=true

Guía de referencia de Debian

160 / 257

Esta es una descripción muy simplificada. Los archivos *.desktop se revisan como sigue.
El entorno de escritorio asigna las variables del entorno $XDG_DATA_HOME y $XDG_DATA_DIR. Por ejemplo, en GNOME 3:$XDG_DATA_HOME esta sin asignar. (El valor por defecto que se utiliza es $HOME/.local/share.)$XDG_DATA_DIRS se le asigna el valor /usr/share/gnome:/usr/local/share/:/usr/share/.
Así los directorios base (ver XDG Base Directory Specification) y los directorios de aplicaciones quedan como sigue.
$HOME/.local/share/ → $HOME/.local/share/applications//usr/share/gnome/ → /usr/share/gnome/applications//usr/local/share/ → /usr/local/share/applications//usr/share/ → /usr/share/applications/
Los archivos *.desktop se comprueban en estos directorios de aplicaciones siguiendo este orden.
sugerencia
Se puede crear una entrada personalizada al menú del interfaz gráfico de usuario (GUI) añadiendo un archivo*.desktop al directorio $HOME/.local/share/applications/.

sugerencia
La línea ”Exec=...” no es analizada por el shell. Utilice el comando env(1) si necesita establecer variables deentorno.

sugerencia
Igualmente, si se crea un archivo *.desktop en el directorio autostart por debajo de estos directorios base, el
programa que se especifique en el archivo *.desktop se ejecuta automáticamente cuando el entorno de escritorio
se inicia. Ver Especificación de Inicio Automático de Aplicaciones de Escritorio.

sugerencia
De igual manera, si un archivo *.desktop se crea en el directorio $HOME/Desktop y se ha configurado elentorno de escritorio con la funcionalidad del lanzador del icono, el programa especificado en el se ejecutará
cuando se pulse sobre el icono. Tenga en cuenta que el nombre real del directorio $HOME/Desktop depende dela configuración regional. Consulte xdg-user-dirs-update(1).

9.4.11. Personalizando el inicio de un programa
Algunos programas inician otros programa de forma automática. Aquí están los puntos a comprobar para la personalización deeste proceso.
Menú de configuración de aplicaciones:• Escritorio GNOME3: «Configuración« → «Sistema« → «Detalles« → «Aplicaciones por defecto«• Escritorio KDE: «K« → «Centro de Control« → «Componenetes KDE« → «Selección de componentes«• Navegador Iceweasel: «Editar→ «Preferencias« → «Aplicaciones«• mc(1): «/etc/mc/mc.ext»

Guía de referencia de Debian

161 / 257

Variables de entorno como «$BROWSER», «$EDITOR», «$VISUAL» y «$PAGER» (ver eviron(7))

El sistema update-alternatives(1) para los programas como «editor», «view», «x-www-browser», «gnome-www-bro
y «www-browser» (ver Sección 1.4.7)
El contenido de los archivos «~/.mailcap» y «/etc/mailcap» que asocia los tiposMIME con los programas (vermailcap(5))
El contenido de los archivos «~/.mime.types» y «/etc/mime.types» el cual se asocia con la extensión del nombredel archivo con los tipos MIME (ver run-mailcap(1))
sugerencia
update-mime(8) actualiza el archivo «/etc/mailcap» utilizando el archivo «/etc/mailcap.order» (vermailcap.order(5)).

sugerencia
El paquete debianutils aporta sensible-browser(1), sensible-editor(1) y sensible-pager(1) que
elige de forma sensata el editor, paginador y navegador web que se lanzará, respectivamente. Le recomiendo leerestos archivos de órdenes.

sugerencia
Con el fin de ejecutar una aplicación de consola como mutt como la preferida en GuI, podría crear una aplicación
GUI de la forma siguiente y asignar «/usr/local/bin/mutt-term» como su aplicación preferida al inicio como
se describe.
# cat /usr/local/bin/mutt-term <<EOF#!/bin/sh
gnome-terminal -e ”mutt \$@”
EOF
# chmod 755 /usr/local/bin/mutt-term

9.4.12.

Matando un proceso

Utilice kill(1) para matar (o enviar una señal a) un proceso mediante su identificador de proceso.
Utilice killall(1) o pkill(1) para hacer lo mismo mediante otros atributos como el nombre de la orden del proceso.

9.4.13.

Planificación una vez de las tareas

Ejecute al orden at(1) para planificar una única ejecución de un trabajo mediante lo siguiente.
$ echo ’command -args’| at 3:40 monday

9.4.14.

Planificación regular de tareas

Utilice cron(8) para planificar las tareas de forma regular. Ver crontab(1) y crontab(5).

Puede planificar la ejecución de procesos como un usuario normal, p. ej. foo creando un archivo crontab(5) como «/var/spool/cr
con la orden «crontab -e».
He aquí un ejemplo de un archivo crontab(5).

162 / 257

Guía de referencia de Debianvalor de la señal

nombre dela señal

0

---

1

SIGHUP

2

SIGINT

3

SIGQUIT

9

SIGKILL

15

SIGTERM

acción

nota

no se
envía
ningunacomprobar si el proceso se está ejecutando
señal
(ver
matar(2))
terminarel pro- terminal desconectado (señal bloqueada)ceso
terminarel pro- interrumpir desde el teclado (CTRL-C)
ceso
terminarel proceso y salir desde el teclado (CTRL-\)
dump
core
terminarel pro- Señal de apagado desbloqueable
ceso
terminarel pro- Señal de apagado bloqueable
ceso

Cuadro 9.11: Relación de las señales más usadas con la orden kill

# use /usr/bin/sh to run commands, no matter what /etc/passwd says
SHELL=/bin/sh# mail any output to paul, no matter whose crontab this is
MAILTO=paul# Min Hour DayOfMonth Month DayOfWeek command (Day... are OR’ed)# run at 00:05, every day
5 0 * * *$HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 14:15 on the first of every month -- output mailed to paul
15 14 1 * *$HOME/bin/monthly# run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc:
0 22 ** 1-5 mail -s ”It’s 10pm” joe%Joe,%%Where are your kids?%.%%
23 */2 1 2 *echo ”run 23 minutes after 0am, 2am, 4am ..., on Feb 1”
5 4 ** sun echo ”run at 04:05 every Sunday”# run at 03:40 on the first Monday of each month
40 3 1-7 * *[ ”$(date + %a)” == ”Mon” ] && command -argssugerencia
En los sistemas que no están en funcionamiento ininterrumpido, instale el paquete anacron para planificar órdenes periódicas en los intervalos deseados tan pronto como el equipo activo lo permita. Ver anacron(8) yanacrontab(5).

163 / 257

Guía de referencia de Debiansugerencia
Para los archivos de órdenes de mantenimiento del sistema, puede ejecutarlos de forma periódica desde la cuenta de superusuario ubicando esos archivos de órdenes en «/etc/cron.hourly/», «/etc/cron.daily/»,«/etc/cron.weekly/», o «/etc/cron.monthly/». La temporización de la ejecución de los archivos de órdenes puede personalizarse mediante «/etc/crontab» y «/etc/anacrontab».

Systemd tiene capacidad de bajo nivel para programar programas para que se ejecuten de fondo cron. Por ejemplo, /lib/systemd/sy
y /lib/systemd/system/apt-daily.service configuran actividades diarias de descarga de apt. Ver systemd.timer(5).

9.4.15.

Programación de tareas en un suceso

Systemd puede programar el programa no sólo en timer sino también en mount. Como ejemplos ver Sección 10.2.3.3 y Sección 10.2.3.2.

9.4.16.

Tecla Alt-SysRq

Presionar Alt-SysRq (PrtScr) seguido de una tecla hace la magia de rescatar el control del sistema.
tecla seguida de Alt-SysRqkdescripción de la acción
kill (mata) todos los procesos de la consola virtual actual (SAK)sincroniza todos los sistemas de archivos montados para evitar lacorrupción de datos
remonta todos los sistemas de archivos montados como de solo lectura(desmonta)
recupera el teclado del modo rudo después de que X fallesur

Cuadro 9.12: Lista de teclas notables del comando SAK
Más información en Guía del administrador y del usuario del kernel de Linux » Linux Magic System Request Key Hacks
sugerencia
Desde terminales SSH etc., puede utilizar la funcionalidad Alt-SysRq resribiendo «/proc/sysrq-trigger».
Por ejemplo, «echo s > /proc/sysrq-trigger; echo u > /proc/sysrq-trigger» desde el cursor delintérprete de órdenes del superusuario syncs y umount todos los sistemas de archivos.

El kernel de Debian amd64 Linux actual (2021) tiene /proc/sys/kernel/sysrq=438=0b110110110:
2 = 0x2: habilita el control del nivel del registro de la consola (ON)4 = 0x4 - permiti el control del teclado (SAK, unraw) (ON)8 = 0x8 - habilita dumps de depuración de procesos etc. (OFF)16 = 0x10 - habilita sync command (ON)32 = 0x20 - habilita volver a montar solo lectura (ON)64 = 0x40 - permite la señalización de procesos (term, kill, oom-kill) (OFF)128 = 0x80 - permite reboot/poweroff (ON)256 = 0x100 - permite el inicio de todas las tareas RT (ON)164 / 257

Guía de referencia de Debian

9.5. Trucos para el mantenimiento del sistema
9.5.1. ¿Quién está en el sistema?
Puede comprobar quién esta en el sistema así.
who(1) muestra quién está acreditado.
w(1) muestra quién esta acreditado y que está haciendo.
last(1) muestra una lista del último usuario conectado.
lastb(1) muestra una relación de los últimos intentos fallidos de acceso a una sesión.
sugerencia«/var/run/utmp» y «/var/log/wtmp» mantiene esa información de usuario. Ver login(1) y utmp(5).

9.5.2. Avisos para todos
Puede enviar mensajes a cualquiera que esté acreditado en el sistema con wall(1) así.
$ echo ”We are shutting down in 1 hour” | wall

9.5.3. Identificación del hardware
El punto de inicio para la identificación de los dispositivos tipo PCI (AGP, PCI-Express, CardBus, ExpressCard, etc.) es la orden
lspci(8) (preferentemente con la opción «-nn»).
Otra forma en la que puede identificar el hardware es leyendo el contenido de «/proc/bus/pci/devices» o navegando porel árbol de directorios que cuelga de «/sys/bus/pci» (ver Sección 1.2.12).
paquetepciutils
usbutils
nvme-cli
pcmciautils

popularidad
V:249, I:991
V:68, I:869
V:15, I:22
V:6, I:10

tamaño
213
325
1642
91

scsitools

V:0, I:2

346

procinfo
lshw
discover

V:0, I:9
V:13, I:89
V:40, I:958

132
919
98

descripción
Utilidades de Linux para PCI: lspci(8)Utilidades de Linux para USB: lsusb(8)Utilidades NVMe para Linux: nvme(1)Utilidades Linux para PCMCIA: pccardctl(8)colección de herramientas para la gestión de hardware SCSI:
lsscsi(8)información del sistema obtenida de «/proc»: lsdev(8)información sobre la configuración hardware: lshw(1)sistema de identificación hardware: discover(8)Cuadro 9.13: Relación de las herramientas para la identificación de hardware

9.5.4. Configuración del hardware
Aunque la mayor parte de la configuración del hardware en los sistemas de escritorio con interfaz gráfico de usuario como
GNOME y KDE se puede realizar mediante herramientas de configuración con interfaz gráfico de usuario, es una buena idea
conocer algunos métodos básicos para su configuración.
Aquí, ACPI es un marco más nuevo para el sistema de gestión de fuerza que APM.

165 / 257

Guía de referencia de Debianpaquetepopularidad
console-setup
V:88, I:967
x11-xserver-utils
V:302, I:528

tamaño descripción
428
Utilidades de teclado y tipos de letra para consolas
568

acpid

V:84, I:148

158

acpi
sleepdhdparm

V:9, I:136
V:0, I:0
V:178, I:335

47
86
256

smartmontools

V:207, I:250

2358

setserialmemtest86+
scsitools
setcd
big-cursor

V:4, I:6
V:1, I:21
V:0, I:2
V:0, I:0
I:0

103
12711
346
37
26

Utilidades de servidor X: xset(1), xmodmap(1)demonio que gestiona lo que llegan del Interfaz de Potencia yConfiguración Avanzada (Advanced Configuration and PowerInterface, ACPI)
utilidad para visualizar información de dispositivos ACPI
demonio que «duerme« el portátil si deja de tener actividad
optimización de acceso al disco duro (ver Sección 9.6.9)
control y monitoreo de sistemas de almacenamiento utilizando
S.M.A.R.T.
colección de herramientas para la gestión del puerto serie
colección de herramientas para la gestión de la memoria hardware
colección de herramientas para la gestión de hardware SCSI
optimización de acceso a la unidad de discos compactos
cursores grandes del ratón para X

Cuadro 9.14: Relación de herramientas de configuración hardware

sugerencia
La frecuencia de funcionamiento de la CPU de los sistemas modernos esta gestionada por módulos en el núcleo
como acpi_cpufreq.

9.5.5. Hora del sistema y del hardware
Lo siguiente asigna al sistema y hardware la hora y fecha a MM/DD hh:mm CCYY.
# date MMDDhhmmCCYY# hwclock --utc --systohc# hwclock --show

La hora habitualmente se visualiza en la hora local en el sistema Debian pero el hardware y el sistema usa generalmente la hora
en UTC(GMT).
Si la hora del hardware está establecida en UTC, cambia la configuración a ”UTC=yes” en ”/etc/default/rcS”.
Lo siguiente reconfigura la zona horaria utilizada por el sistema Debian.
# dpkg-reconfigure tzdata

Si desea actualizar el tiempo del sistema a través de la red, piense en utilizar el servicio NTP con paquetes como ntp, ntpdate
y chrony.
sugerencia
En systemd para la sincronización de la hora a través de la red utilice systemd-timesyncd. Ver
systemd-timesyncd(8).

Ver lo siguiente.
Manual Cómo Gestionar la Precisión de la Fecha y Hora
Proyecto de Servicio NTP Público (NTP Public Services Project)

Guía de referencia de Debian

166 / 257

El paquete ntp-doc
sugerencia
ntptrace(8) del paquete ntp puede trazar una cadena de vuelta de los servidores NTP a la fuente primigenia.

9.5.6. La configuración de la terminal
Existen diferentes componentes para configura la consola de caracteres y las funcionalidades del sistema ncurses(3) system
features.
El archivo «/etc/terminfo/*/*» (terminfo(5))
La variable de entorno «$TERM» (term(7))
setterm(1), stty(1), tic(1) y toe(1)Si la entrada terminfo de xterm no funciona con una xterm que no es de Debian, cambie el tipo de terminal cambiando«$TERM» de «xterm» a una versión con funcionalidades limitadas como «xterm-r6» al autenticarse en el sistema Debiande forma remota. Para mayor información ver «/usr/share/doc/libncurses5/FAQ». «dumb» es el mínimo común
denominador para «$TERM».

9.5.7. La infraestructura de sonido
La Arquitectura Avanzada de Sonido para Linux (Advanced Linux Sound Architecture, ALSA) proporciona los controladores dedispositivos de tarjetas de sonido en el actual Linux. ALSA tiene un modo de emulación para ser compatible con el anterior OpenSound System (OSS).
El software de aplicación se puede configurar no solo para acceder directamente a los dispositivos de sonido, sino también para
acceder a ellos a través de algún sistema de servidor de sonido estandarizado. Actualmente, PulseAudio, JACK y PipeWire se
utilizan como sistema de servidor de sonido. Ver la Página Wiki de Debian sobre sonido para estar actualizado.
Generalmente existe un motor de sonido común para los entorno de escritorio más populares. Cada motor de sonido utilizado porla aplicación puede elegir conectarse a diferentes servidores de sonido.
sugerencia
Para comprobar el altavoz (speaker) utilice «cat /dev/urandom > /dev/audio» o speaker-test(1) (^Cpara finalizar).

sugerencia
Si no obtiene sonido, su altavoz puede estar conectado a una salida en silencio. Alsamixer(1) en el paquetealsa-utils le será útil para la configuración del volumen y el silencio.

9.5.8. Deshabilitar el salvapantallas
Para deshabilitar el salvapantallas, utilice las siguientes órdenes.

9.5.9. Deshabilitando los pitidos
Siempre puede desenchufar el altavoz del PC para deshabilitar los pitidos. Eliminando el módulo del núcleo pcspkr realiza ese
trabajo por usted.
Lo siguiente impide que el programa readline(3) utilizado por bash(1) pite cuando encuentre un carácter de alerta (ASCII=7).
$ echo ”set bell-style none”>> ~/.inputrc

167 / 257

Guía de referencia de Debianpaquetealsa-utils

popularidad
V:330, I:466

oss-compat

V:1, I:17

pipewire

V:265, I:319

pipewire-bin

V:274, I:319

pipewire-alsa

V:105, I:157

pipewire-pulse

V:160, I:214

pulseaudio
V:256, I:308
libpulse0
V:413, I:580
jackd
V:2, I:18
libjack0
V:1, I:9
libgstreamer1.0-0
V:429, I:597
libphonon4qt5-4

V:72, I:162

tamaño descripción
2605
utilidades para configurar y usar ALSA
La compatibilidad de ALSA con OSS evita errores como18«/dev/dsp no se encuentra»
servidor multimedia del motor de procesamiento de audio y vídeo 120
metapaquete
servidor multimedia del motor de procesamiento del audio y vídeo 1631
servidor de audio y programas CLI
servidor multimedia del motor de procesamiento del audio y vídeo 206
servidor de audio para reemplazar ALSA
servidor multimedia del motor de procesamiento del audio y vídeo 50
servidor de audio para reemplazar PulseAudio
6472
PulseAudio servidor
975
biblioteca del cliente para PulseAudio
9
JACK Audio Connection Kit. (JACK) servidor (baja latencia)
326
Kit de conexión de audio JACK. (JACK) biblioteca (baja latencia)
4455

GStreamer: motor de sonido GNOME

594

Phonon: motor de sonido KDE

Cuadro 9.15: Relación de paquetes de sonido

entorno
La consola de LinuxLas Ventanas X (deshabilitando elsalvapantallas)
Las Ventanas X (deshabilitando dpms)
Las Ventanas X (configuración por GUI delsalvapantallas)orden
setterm -powersave off
xset s off
xset -dpms
xscreensaver-command -prefs

Cuadro 9.16: Relación de las órdenes para deshabilitar el salvapantallas

168 / 257

Guía de referencia de Debian

9.5.10.

Utilización de memoria

Existen dos recursos disponibles para determinar el uso de la memoria.
El mensaje de arranque del núcleo en «/var/log/dmesg» contiene el tamaño exacto de memoria disponible.
free(1) y top(1) visualiza la información de los recursos de memoria en el sistema en ejecución.
Aquí hay un ejemplo.
# grep ’\] Memory’ /var/log/dmesg[
0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k ←data, 296k init)$ free -k
total
used
free
sharedbuffers
cachedMem:99718497692820256
0129592
171932-/+ buffers/cache:
675404321780Swap:
4545576
44545572

Te puede sorprender que «dmesg diga que existen 990 MB libres y free -k dice que solo hay 320 MB libres. Más de 600 MB dediferencia …«.
No se preocupe por el gran tamaño de memoria «utilizada» y el pequeño tamaño de memoria «libre» en la línea «Mem:»,pero lea lo que hay debajo (675404 y 321780 en el ejemplo anterior) y relájese.
Para mi MacBook con 1GB=1048576k DRAM (el sistema de vídeo usa algo de esto), tengo lo siguiente.
informeTamaño total en dmesg
Memoria libre en dmesg
Total en el intérprete de órdenes
Libre en el intérprete de órdenes

tamaño1016784k = 1GB - 31792k
990528k
997184k20256k (pero de forma efectiva 321780k)

Cuadro 9.17: Relación de informes de tamaño de la memoria

9.5.11. Sistema de seguridad y de comprobación de la integridad
Un mantenimiento inadecuado del sistema puede exponerlo a sufrir un ataque del exterior.
Para la seguridad y las comprobaciones de integridad, debe comenzar con lo que se muestra.
Para el paquete debsums, ver debsums(1) y Sección 2.5.2.
Para el paquete chkrootkit ver chkrootkit(1).
Para la familia de paquetes clamav ver clamscan(1) y freshclam(1).
FAQ de Seguridad Debian.
Manual de Seguridad Debian.
He aquí un archivo de órdenes para comprobar el permiso de escritura incorrecto para todos.
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)atenciónYa que el paquete debsums utiliza la comprobación mediante MD5 almacenado en local, no se puede confiar plenamente en él como herramienta de auditoría de seguridad del sistema contra ataques maliciosos.

169 / 257

Guía de referencia de Debianpaquetepopularidad

logcheck

V:6, I:7

debsums

V:5, I:35

chkrootkit
clamavtiger
tripwirejohn
aide
integritcrack

V:8, I:17
V:9, I:45
V:1, I:2
V:1, I:2
V:1, I:9
V:1, I:1
V:0, I:0
V:0, I:1

tamaño descripción
demonio que envía por correo anomalías en los registros del sistema110
al administrador
utilidad para verificar los archivos de los paquetes instalado mediante
98
sumas MD5925
detector de rootkit
27455 utilidad anti-virus para Unix - interfaz de línea de órdenes
7800
informa de vulnerabilidades de seguridad del sistema
5016
comprobador de integridad de archivos y directorios
471
herramienta para descifrar contraseñas
293
Entorno de Detección Avanzado de Intrusión - binario estático
2659
programa de verificación de la integridad del archivo
149
programa que adivina contraseñas

Cuadro 9.18: Relación de las herramientas de seguridad del sistema y comprobación de la integridad

9.6. Trucos del almacenamiento de datos
El arranque del sistema Linux con «live CDs« o CDs de instalación de debian en modo rescate hace que sea fácil reconfigurar la
información de almacenamiento en su dispositivo de arranque.
Es posible que debas desmontar(8) algunos dispositivos manualmente desde la línea de comandos antes de operar en ellos si
el sistema del escritorio GUI los monta automáticamente.

9.6.1. Uso de espacio de disco
El uso de espacio en disco lo pueden evaluar los programas proporcionados por los paquetes mount, coreutils y xdu:
mount(8) muestra todos los sistemas de archivos (=discos) montados.
df(1) muestra el espacio de disco utilizado por el sistema de archivos.
du(1) informa del espacio de disco utilizado por el árbol de un directorio.
sugerencia
Puede utilizar la salida de du(8) como entrada de xdu(1x) para tener una presentación gráfica e interactiva con«du -k . |xdu», «sudo du -k -x / |xdu», etc.

9.6.2. Configuración del particionado de disco
Para la configuración de la partición del disco , a pesar de que fdisk(8) fue considerado en el pasado el estándar, parted(8) merece nuestra atención. Las expresiones «datos del particionado del disco«, «tabla de partición«, «mapa de particiones« y «marcadodel disco« son todas ellas sinónimos.
Los ordenadores más antiguos usan el esquema clásico Master Boot Record (MBR) para almacenar datos del particionamientodel disco en el primer sector, es decir, LBA sector 0 (512 bytes).
Algunos ordenadores modernos con Interfaz de firmware extensible unificada (UEFI), incluidas los Mac basados en Intel, usan
Identificar la tabla de particiones única globalmente (partición GUID Table, GPT) esquema, partición del disco duro los datos nose guardan en el primer sector.
Aunque fdisk(8) fue la herramienta estándar para el particionado del disco, se ha sustituido por parted(8).

170 / 257

Guía de referencia de Debianpaqueteutil-linux

popularidad
V:881, I:999

parted

V:417, I:568

gpartedgdisk
kpartx

V:15, I:102
V:338, I:511
V:22, I:33

tamaño descripción
5283
las utilidades varias del sistema incluyen fdisk(8) y cfdisk(8)Programa de modificación del tamaño de las particiones de disco
122
GNU Parted
2175
Editor GNOME del particionado basado en libparted
885
editor de particiones para el disco híbrido GPT/MBR
77
programa para crear mapeos entre dispositivos y particiones

Cuadro 9.19: Relación de paquetes para la gestión del particionado del disco

atención
Aunque parted(8) afirma que crea y también modifica el tamaño de los sistemas de archivos, es
más seguro realizar estas tareas con herramientas especializadas de mantenimiento como mkfs(8)(mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), mkfs.ext4(8), …) y resize2fs(8).

nota
Para realizar el cambio entre GPT y MBR, necesita eliminar el contenido de unos cuantos bloques ubicados alprincipio (ver Sección 9.8.6) y utilice «parted /dev/sdx mklabel gpt» o «parted /dev/sdx mklabel
msdos» para asignarlo. Tenga en cuenta que «msdos» se utiliza para MBR.

9.6.3. Acceso al particionado utilizando UUID
Aunque la reconfiguración de tu partición o el orden de activación de los medios del almacenamiento extraíbles puede dar lugara diferentes nombres para las particiones, puede acceder a ellos de forma coherente. Esto también es útil si tienes varios discos ytu BIOS/UEFI no les da nombres de dispositivo consistentes.
mount(8) con la opción «-U» permite montar dispositivos de bloque utilizando UUID, en lugar de sus nombres de archivocomo «/dev/sda3».
«/etc/fstab» (ver fstab(5)) puede utilizar UUID.
Los gestores de arranque (Sección 3.1.2) pueden utilizar también UUID.
sugerencia
Puede determinar el UUID de un dispositivo especial de bloque con blkid(8).
También puedes buscar el UUID y otra información con ”lsblk -f”.

9.6.4. LVM2
LVM2 es un gestor de volúmenes lógicos del núcleo de Linux. Con LVM2 las particiones de disco se pueden crear en volúmenes
lógicos en vez de discos duros físicos.
LVM necesita lo siguiente.
soporte de device-mapper en el núcleo Linux (por defecto en los núcleos de Debian)el soporte de la biblioteca device-mapper en el espacio de usuario (paquete libdevmaper*)herramientas LVM2 del espacio de usuario (paquete lvm2)
Por favor, para saber sobre LVM2 lea las siguiente páginas de manual.

171 / 257

Guía de referencia de Debianlvm(8): Fundamentos del mecanismo LVM2 (relación de todas las órdenes LVM2)
lvm.conf(5): archivo de configuración de LVM2
lvs(8): crea un informe sobre los volúmenes lógicos
vgs(8): crea un informe sobre los grupos de volúmenes
pvs(8): crea un informe sobre los volúmenes físicos

9.6.5. Configuración del sistema de archivosPara el sistema de archivos ext4, el paquete e2fsprogs aporta lo siguiente.
mkfs.ext4(8) para crear un nuevo de sistema de archivos ext4
fsck.ext4(8) para comprobar y reparar un sistema de archivos ext4 preexistente
tune2fs(8) para configurar el superbloque de ext4 filesystem
debugfs(8) para depurar en modo interactivo el sistema de archivos ext4. (Existe la orden undel para recuperar los archivos
borrados.)
Las órdenes mkfs(8) y fsck(8) esta en el paquete e2fsprogs como interfaz de varios programas específicos del sistema dearchivos (mkfs.fstype y fsck.fstype). Para el sistema de archivos ext4 existen mkfs.ext4(8) y fsck.ext4(8) (estaenlazado a mke2fs(8) y e2fsck(8)).
Las siguientes órdenes están disponibles para cada sistema de archivos que soporta Linux.
paquetee2fsprogs
btrfs-progs
reiserfsprogs
zfsutils-linux

popularidad
V:767, I:999
V:44, I:72
V:12, I:25
V:29, I:30

tamaño
1499
5078
473
1762

dosfstools

V:196, I:541

315

exfatprogs

V:29, I:371

301

exfat-fuse

V:5, I:120

73

exfat-utils

V:4, I:106

231

xfsprogs

V:21, I:95

3476

ntfs-3g

V:197, I:513

1474

jfsutils
reiser4progs

V:0, I:8
V:0, I:2

1577
1367

hfsprogs

V:0, I:4394

zerofree

V:5, I:131

25

descripción
utilidades para el sistema de archivos ext2/ext3/ext4
utilidades para el sistema de archivos Btrfs
utilidades para el sistema de archivos Reiserfs
utilidades para el sistema de archivos OpenZFS
utilidades para el sistema de archivos FAT. (Microsoft: MS-DOS,
Windows)
utilidades para el sistema de archivos exFAT mantenido por Samsung.
lectura/escritura exFAT controlador del sistema de archivos(Microsoft) para FUSE.
utilidades para el sistema de archivos exFAT mantenidas por el autor
de exfat-fuse.
utilidades para el sistema de archivos XFS. (SGI: IRIX)
lectura/escritura NTFS controlador del sistema de archivos(Microsoft: Windows NT, ...) para FUSE.
utilidades para el sistema de archivos JFS. (IBM: AIX, OS/2)
utilidades para el sistema de archivos Reiser4
utilidades para el sistema de archivos HFS y HFS Plus. (Apple: MacOS)
programa de cero bloques libres para sistemas de archivos ext2/3/4

Cuadro 9.20: Relación de paquetes para la gestión del sistema de archivos

sugerencia
Ext4 es el sistema de archivos por defecto para el sistema Linux y es muy recomendable su uso a menos que
tenga una razón concreta para no hacerlo.
El estado de Btrfs se puede encontrar en La wiki de Debian en btrfs y la wiki kernel.org wiki en btrfs. Se espera
que sea el siguiente sistema de archivos por defecto después del sistema de archivos ext4.
Algunas herramientas permiten el acceso al sistema de archivos sin soporte del núcleo de Linux (ver Sección 9.8.2).

Guía de referencia de Debian

172 / 257

9.6.6. Comprobación de la integridad y creación del sistema de archivos
La orden mkfs(8) crea el sistema de archivos en el sistema Linux. La orden fsck(8) aporta la comprobación de integridad alsistema de archivos y la capacidad de reparación al sistema Linux.
El Debian actual no ejecuta periódicamente fsck después de la creación del sistema de archivos.

atención
Normalmente no es seguro ejecutar fsck en sistemas de archivos montados.

sugerencia
Puede ejecutar la orden fsck(8) de forma segura en todos los sistemas de archivos incluido el sistema de archivos raíz en el arranque activando «enable_periodic_fsck» en «/etc/mke2fs.conf» y el contador demontajes máximo a 0 utilizando «tune2fs -c0 /dev/nombre_de_la_partición». Ver mke2fs.conf(5) ytune2fs(8).
Para comprobar la ejecución de la orden fsck(8) del archivo de órdenes del arranque compruebe los archivos en«/var/log/fsck/».

9.6.7. Optimización de los sistemas de archivos a través de las opciones de montaje
La configuración estática básica del sistema de archivos se realizan en «/etc/fstab». Por ejemplo,«file system»«mount point» «type» «options»«dump» «pass»proc/proc proc
defaults
0 0
UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 /ext4
errors=remount-ro 0 1
UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap
sw
0 0
/dev/scd0/media/cdrom0 udf,iso9660 user,noauto 0 0sugerencia
UUID (ver Sección 9.6.3) puede utilizarse para identificar los dispositivos de bloque en lugar de los nombres delos dispositivos de bloque como «/dev/sda1», «/dev/sda2», …

Desde Linux 2.6.30, el kernel utiliza por defecto el comportamiento proporcionado por la opción ”relatime”.
Ver fstab(5) y mount(8).

9.6.8. Optimización del sistema de archivo a través del superbloque
La caracterización del sistema de archivos se puede optimizar a través de su superbloque utilizando la orden tune2fs(8).
La ejecución de «sudo tune2fs -l /dev/hda1» muestra el contenido del sistema de archivos del superbloque de«/dev/hda1».
La ejecución de «sudo tune2fs -c 50 /dev/hda1» cambia la frecuencia de comprobaciones del sistema de archivos(fsck durante el arranque) cada 50 arranques en «/dev/hda1».
La ejecución de «sudo tune2fs -j /dev/hda1» añade la capacidad del registro de operaciones al sistema archivos, asaber conversión del sistema de archivos de ext2 a ext3 en «/dev/hda1». (Para ello se necesita que el sistema de archivos
este desmontado.)

Guía de referencia de Debian

173 / 257

La ejecución de «sudo tune2fs -O extents,uninit_bg,dir_index /dev/hda1 && fsck -pf /dev/hda1»
lo convierte de ext3 a ext4 en «/dev/hda1». (Realice esto con el sistema de archivos desmontado.)sugerencia
A pesar de su nombre, tune2fs(8) trabaja no solo con el sistema de archivos ext2 pero también con los sistemas
de archivos ext3 y ext4.

9.6.9. Optimización del disco duro
aviso
Por favor, compruebe su hardware y lea las páginas de manual de hdparm(8) antes de probar las configuraciones del disco duro ya que puede ser peligroso para la integridad de los datos.

Puede comprobar la velocidad de acceso al disco duro, p. ej. «/dev/hda» con «hdparm -tT /dev/hda». Algunos discos
conectados mediante (E)IDE se puede mejorar su velocidad con «hdparm -q -c3 -d1 -u1 -m16 /dev/hda» activando el «soporte I/O (E)IDE 32-bit«, activando la «bandera using_dma«, asignando la «bandera interrupt-unmask« y activando«multiple 16 sector I/O« (¡peligroso!).
Puede comprobar la funcionalidad de la escritura de caché del disco duro , p. ej. «/dev/sda», con «hdparm -W /dev/sda».
Para deshabilitar esta funcionalidad ejecute «hdparm -W 0 /dev/sda».
Puede intentar leer CDROMs dañados en dispositivos de lectura de alta velocidad modernos haciendo que funcionen a menor
velocidad con «setcd -x 2».

9.6.10.

Optimización de un disco de estado sólido (SSD)

La unidad de estado sólido (SSD) ahora se detecta automáticamente.
Reducir los accesos innecesarios al disco para evitar el desgaste del disco montando ”tmpfs” en la trayectoria de datos volátil
en /etc/fstab.

9.6.11. Utilice SMART para predecir fallos en su disco duro
Puede monitorear y registrar el cumplimiento de su disco duro con SMART con el demonio smartd(8).
1. Active la funcionalidad SMART en la BIOS.
2. Instale el paquete smartmontools.
3. Identifique los dispositivos que son discos duros enumerándolos con df(1).
Asumamos que el dispositivo de disco duro a controlar es «/dev/hda».
4. Compruebe la salida de «smartctl -a /dev/hda» para verificar que la funcionalidad SMART está activada realmente.
Si no es así, actívelo con «smartctl -s on -a /dev/hda».
5. Active el demonio smartd(8) ejecutando lo siguiente.
descomente «start_smartd=yes» en el archivo «/etc/default/smartmontools».
reiniciar el demonio smartd(8) mediante «sudo /etc/init.d/smartmontools restart».
sugerencia
El demonio smartd(8) se puede personalizar mediante el archivo /etc/smartd.conf que incluye el modo de
notificación de las alertas.

Guía de referencia de Debian

9.6.12.

174 / 257

Determine el directorio de almacenamiento temporal por medio de $TMPDIR

Las aplicaciones habitualmente crean los archivos temporales en el directorio de almacenamiento temporal «/tmp». Si «/tmp»
no proporciona suficiente espacio, puede especificar el directorio de almacenamiento temporal por medio de la variable $TMPDIR
para obtener el comportamiento adecuado de las aplicaciones.

9.6.13.

Expansión del espacio de almacenamiento utilizable mediante LVM

Las particiones creadas mediante el Gestor de Volúmenes Lógicos (Logical Volume Manager, LVM) (funcionalidad de Linux) enel momento de la instalación, se pueden redimensionar de forma sencilla mediante la concatenación o la extensión de estas sobre
varios dispositivos de almacenamiento sin necesitar otras reconfiguraciones del sistema.

9.6.14.

Expansión del espacio de almacenamiento útil mediante el montaje de otra partición

Si tiene una partición vacía (p. ej. «/dev/sdx»), puede darle formato con mkfs.ext4(1) y montarlo(8) en un directorio
donde necesite más espacio. (Necesitará copiar el contenido de los datos originales.)$ sudo mv work-dir old-dir$ sudo mkfs.ext4 /dev/sdx$ sudo mount -t ext4 /dev/sdx work-dir$ sudo cp -a old-dir/* work-dir$ sudo rm -rf old-dirsugerencia
También puede montar un archivo de imagen de disco vacío (ver Sección 9.7.5) como un dispositivo «loop« (verSección 9.7.3). El uso actual del disco crece con los datos reales almacenados.

9.6.15.

Expansión del espacio de almacenamiento por el enlace mediante el montaje enotro directorio

Si tiene un directorio vacío (p. ej. «/path/to/emp-dir») en otra partición con espacio utilizable, puede montar(8)lo con la
opción «--bind» a un directorio (p. ej., «work-dir») donde necesite más espacio.
$ sudo mount --bind /path/to/emp-dir work-dir

9.6.16.

Expansión del espacio de almacenamiento utilizable por superposición-montaje
de otro directorio

Si tiene espacio útil en otras particiones (p. ej. «/path/to/empty» y «/path/to/work»), puede crear un directorio en ély juntarlo con el antiguo directorio (p. ej., «/path/to/old») donde necesita espacio usando el OverlayFS para el kernel deLinux 3.18 o posterior (Debian Stretch 9.0 o nuevas).
$ sudo mount -t overlay overlay \-olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work

Aquí, «/path/to/empty» y «/path/to/work» deben ser una partición con permiso RW para escribir en ”/path/to/old”..

Guía de referencia de Debian

9.6.17.

175 / 257

Expansión del espacio de almacenamiento útil utilizando un enlace simbólico

atención
Este es un método obsoleto. Algún software puede no funcionar bien con ”enlace simbólico a un directorio”.
En su lugar, utilice los enfoques de ”montaje” ya descritos.

Si tiene un directorio vacío (p. ej., «/path/to/emp-dir») en otra partición con espacio utilizable, puede crear un enlacesimbólico a el directorio con ln(8).
$ sudo mv work-dir old-dir$ sudo mkdir -p /path/to/emp-dir$ sudo ln -sf /path/to/emp-dir work-dir$ sudo cp -a old-dir/* work-dir$ sudo rm -rf old-dir

aviso
No utilice «enlaces simbólicos a directorios« que gestionen el sistema como «/opt». Como enlace simbólico se puede sobreescribir cuando se actualice el sistema.

9.7. La imagen de disco
Aquí hablaremos de la manipulación de imágenes de disco.

9.7.1. Creando un archivo de imagen de disco
El archivo de imagen de disco «disk.img», de un dispositivo desmontado, p. ej. el segundo disco SCSI o serial ATA «/dev/sdb»,
puede hacerse utilizando cp(1) o dd(1) como se muestra.
# cp /dev/sdb disk.img# dd if=/dev/sdb of=disk.img

La imagen de disco de un PC tradicional Registro de Arranque Maestro(MBR) (ver Sección 9.6.2) que está en el primer sectordel disco primario IDE puede hacerse mediante dd(1) lo siguiente.
# dd if=/dev/hda of=mbr.img bs=512 count=1# dd if=/dev/hda of=mbr-nopart.img bs=446 count=1# dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66«mbr.img»: MBR con la tabla de particiones«mbr-nopart.img»: MBR sin la tabla de particiones«mbr-part.img»: Únicamente la tabla de particiones MBR
Si su disco de arranque es SCSI o serial ATA, cambie «/dev/hda» por «/dev/sda».
Si ha hecho una imagen del disco de la partición del disco original, cambie «/dev/hda» por «/dev/hda1» etc.

176 / 257

Guía de referencia de Debian

9.7.2. Escribiendo directamente en el disco
El archivo imagen del disco «disk.img» se puede escribir como un dispositivo sin montar, p. ej., el dispositivo SCSI secundario«/dev/sdb» con el tamaño adecuado como se muestra.
# dd if=disk.img of=/dev/sdb

De forma parecida, el archivo imagen de la partición del disco, «partition.img» se puede escribir a una partición desmontada,p. ej., la primera partición del segundo dispositivo SCSI «/dev/sdb1» con el tamaño correcto, como se muestra.
# dd if=partition.img of=/dev/sdb1

9.7.3. Montaje del archivo imagen del disco
La imagen del disco «partition.img» que contiene la imagen de una única partición se puede montar y desmontar utilizándolo como dispositivo «loop« como aparece.
# losetup --show -f partition.img/dev/loop0# mkdir -p /mnt/loop0# mount -t auto /dev/loop0 /mnt/loop0...hack...hack...hack# umount /dev/loop0# losetup -d /dev/loop0

Este se puede simplificar como se muestra.
# mkdir -p /mnt/loop0# mount -t auto -o loop partition.img /mnt/loop0...hack...hack...hack# umount partition.img

Cada partición de una imagen de disco «disk.img» que contiene varias particiones se pueden montar utilizando los dispositivos«loop«.
# losetup --show -f -P disk.img/dev/loop0# ls -l /dev/loop0*
brw-rw---- 1 root disk
7, 0 Apr 2 22:51 /dev/loop0
brw-rw---- 1 root disk 259, 12 Apr 2 22:51 /dev/loop0p1
brw-rw---- 1 root disk 259, 13 Apr 2 22:51 /dev/loop0p14
brw-rw---- 1 root disk 259, 14 Apr 2 22:51 /dev/loop0p15# fdisk -l /dev/loop0
Disk /dev/loop0: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6A1D9E28-C48C-2144-91F7-968B3CBC9BD1
DeviceStart
End Sectors/dev/loop0p1 262144 4192255 3930112/dev/loop0p14
2048
8191
6144
/dev/loop0p15
8192 262143 253952

Size Type
1.9G Linux root (x86-64)
3M BIOS boot124M EFI System

Partition table entries are not in disk order.
# mkdir -p /mnt/loop0p1# mkdir -p /mnt/loop0p15# mount -t auto /dev/loop0p1 /mnt/loop0p1# mount -t auto /dev/loop0p15 /mnt/loop0p15

177 / 257

Guía de referencia de Debian# mount |grep loop
/dev/loop0p1 on /mnt/loop0p1 type ext4 (rw,relatime)/dev/loop0p15 on /mnt/loop0p15 type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime ←=0020,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)...hack...hack...hack# umount /dev/loop0p1# umount /dev/loop0p15# losetup -d /dev/loop0

De forma alternativa, se pueden conseguir los mismos efectos utilizando el mapeo de dispositivos de los dispositivos creados por
kpartx(8) del paquete kpartx como sigue.
# kpartx -a -v disk.img
add map loop0p1 (253:0): 0 3930112 linear 7:0 262144
add map loop0p14 (253:1): 0 6144 linear 7:0 2048
add map loop0p15 (253:2): 0 253952 linear 7:0 8192
# fdisk -l /dev/loop0
Disk /dev/loop0: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6A1D9E28-C48C-2144-91F7-968B3CBC9BD1
DeviceStart
End Sectors/dev/loop0p1 262144 4192255 3930112/dev/loop0p14
2048
8191
6144
/dev/loop0p15
8192 262143 253952

Size Type
1.9G Linux root (x86-64)
3M BIOS boot124M EFI System

Partition table entries are not in disk order.
# ls -l /dev/mapper/
total 0crw------- 1 root root 10, 236 Apr 2 22:45 control
lrwxrwxrwx 1 root root
7 Apr 2 23:19 loop0p1 -> ../dm-0
lrwxrwxrwx 1 root root
7 Apr 2 23:19 loop0p14 -> ../dm-1
lrwxrwxrwx 1 root root
7 Apr 2 23:19 loop0p15 -> ../dm-2# mkdir -p /mnt/loop0p1# mkdir -p /mnt/loop0p15# mount -t auto /dev/mapper/loop0p1 /mnt/loop0p1# mount -t auto /dev/mapper/loop0p15 /mnt/loop0p15# mount |grep loop
/dev/loop0p1 on /mnt/loop0p1 type ext4 (rw,relatime)/dev/loop0p15 on /mnt/loop0p15 type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime ←=0020,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)...hack...hack...hack# umount /dev/mapper/loop0p1# umount /dev/mapper/loop0p15# kpartx -d disk.img

9.7.4. Limpiando un archivo de imagen de disco
Un archivo de imagen de disco, «disk.img» se puede limpiar de archivos borrados en una imagen dispersa limpia «new.img»
así.
# mkdir old; mkdir new# mount -t auto -o loop disk.img old# dd bs=1 count=0 if=/dev/zero of=new.img seek=5G# mount -t auto -o loop new.img new# cd old# cp -a --sparse=always ./ ../new/

Guía de referencia de Debian

178 / 257

# cd ..
# umount new.img# umount disk.img

Si «disk.img» es ext2, ext3 o ext4, también puede utilizar zerofree(8) del paquete zerofree como se muestra.
# losetup --show -f disk.img/dev/loop0# zerofree /dev/loop0# cp --sparse=always disk.img new.img# losetup -d /dev/loop0

9.7.5. Haciendo un archivo de imagen de disco vacío
La imagen de disco vacío «disk.img» el cual puede crecer hasta 5GiB, pude hacerse mediante dd(1) como se muestra.
$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G

En lugar de usar dd(1), se puede usar aquí fallocate(8) especializado.
Puede crear un sistema de archivos ext4 en la imagen de disco «disk.img» utilizando el dispositivo «loop« como se muestra.
# losetup --show -f disk.img/dev/loop0# mkfs.ext4 /dev/loop0...hack...hack...hack# losetup -d /dev/loop0$ du --apparent-size -h disk.img
5.0G disk.img$ du -h disk.img
83M disk.img

Para «disk.img», su tamaño de archivo es 5.0 GiB y su utilización real de disco es de sólo 83MiB. Esta discrepancia es posible
ya que ext4 se puede representar mediante un archivo disperso.
sugerencia
La utilización real de discos que utiliza un archivo disperso crece con los datos que son escritos en el.

Utilizando la misma operación en dispositivos creados por el dispositivo «loop« o el mapeador de dispositivos como Sección 9.7.3,
puede particionar esta imagen de disco «disk.img» utilizando parted(8) o fdisk(8) y puede crear el archivo de sistemas
en el utilizando mkfs.ext4(8), mkswap(8), etc.

9.7.6. Haciendo un archivo de imagen ISO9660
El archivo de imagen ISO9660, «cd.iso», utilizando como origen el árbol de directorios de «source_directory» se puede
hacer utilizando genisoimage(1) aportado por cdrkit como se muestra.
#

genisoimage -r -J -T -V volume_id -o cd.iso source_directory

De igual manera, el archivo imagen ISO9660 arrancable, «cdboot.iso», se puede realizar desde el debian-installer
como el árbol de directorios del «source_directory» como se muestra.
#

genisoimage -r -o cdboot.iso -V volume_id \-b isolinux/isolinux.bin -c isolinux/boot.cat \-no-emul-boot -boot-load-size 4 -boot-info-table source_directory

Guía de referencia de Debian

179 / 257

Aquí el cargador de arranque Isolinux (ver Sección 3.1.2) se utiliza para el arranque.
Puede calcular el valor md5sum y hace la imagen ISO9660 directamente desde el dispositivo CD-ROM como se muestra.
$ isoinfo -d -i /dev/cdrom
CD-ROM is in ISO 9660 format...
Logical block size is: 2048
Volume size is: 23150592...
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso

aviso
Debe evitar cuidadosamente el sistema de archivos ISO9660 debido al problema de lectura adelantada deLinux para obtener el resultado correcto.

9.7.7. Escritura directa al CD/DVD-R/RW
sugerencia
DVD es únicamente un CD de mayor tamaño que utiliza wodim(1) suministrado por cdrkit.

Puede encontrar un dispositivo utilizable como se muestra.
# wodim --devices

Entonces se inserta el CD-R vacío en el dispositivo CD, y el archivo de imagen ISO9660 , «cd.iso» se escribe en el dispositivo,
p. ej. «/dev/hda», utilizando wodim(1) como se muestra.
# wodim -v -eject dev=/dev/hda cd.iso

Si se utiliza un CR-RW en lugar de un CD-R, hago lo siguiente en su lugar.
# wodim -v -eject blank=fast dev=/dev/hda cd.isosugerencia
Si su sistema de escritorio monta automáticamente los CD, desmóntalo con «sudo umount /dev/hda» desdela consola antes de utilizar wodim(1).

9.7.8. Montando un archivo imagen ISO9660
Si «cd.iso» contiene una imagen ISO9660, entonces lo siguiente sirve para montarlo de forma manual en «/cdrom».
# mount -t iso9660 -o ro,loop cd.iso /cdrom

sugerencia
Los sistemas de escritorio modernos pueden montar los medios extraíbles como un CD con formato ISO9660 deforma automática (ver Sección 10.1.7).

180 / 257

Guía de referencia de Debian

9.8. Datos binarios
Aquí discutiremos la manipulación directa de datos binarios en medios de almacenamiento.

9.8.1. Viendo y editando datos binarios
El método más básico de visualización de datos binarios es la orden «od -t x1».
paquetepopularidad

coreutils

V:880, I:999

bsdmainutils

V:11, I:315

hexeditblessoktetancurses-hexedit

V:0, I:9
V:0, I:2
V:1, I:12

tamaño descripción
paquete básico que tiene od(1) para volcar archivos (HEX, ASCII,
18307
OCTAL, …)
paquete de utilidades que tiene hd(1) para volcar archivos (HEX,
17
ASCII, OCTAL, …)
73
visor y editor binario (HEX, ASCII)
924
editor hexadecimal con funcionalidad completa (GNOME)
1585
editor hexadecimal con funcionalidad completa (KDE4)

V:0, I:1

130

visor y editor binario (HEX, ASCII, EBCDIC)

beav

V:0, I:0137

visor y editor binario (HEX, ASCII, EBCDIC, OCTAL, …)

Cuadro 9.21: Relación de paquetes para la visualización y edición de datos binarios

sugerencia
HEX es un acrónimo del formato hexadecimal con radix 16. OCTAL se utiliza para formato octal con radix 8. ASCII
se utiliza para Codificación Americana Estándar para el Intercambio de Información (American Standard Code forInformation Interchange), a saber, codificación del inglés normal. EBCDIC es para Extended Binary Coded Decimal
Interchange Code utilizado en sistemas operativos de IBM mainframe.

9.8.2. Manipular archivos sin el montaje de discos
Existen herramientas para leer y escribir archivos sin montar el disco.
paquetemtoolshfsutils

popularidad
V:8, I:63
V:0, I:5

tamaño descripción
390
utilidades para archivos MSDOS sin montarlos
184
utilidades para archivos HFS y HFS+ sin montarlos

Cuadro 9.22: Relación de paquetes para manipular archivos sin montar el disco

9.8.3. Redundancia de datos
Los sistemas de software RAID del núcleo Linux aportan redundancia en el nivel del sistema de archivos de datos del núcleo con
la finalidad de alcanzar alta fiabilidad en el almacenamiento.
Existen herramientas para añadir datos redundados a archivos al nivel de aplicación de programas para conseguir también altafiabilidad en el almacenamiento.

181 / 257

Guía de referencia de Debianpaquetepopularidad

par2

V:9, I:94

dvdisaster

V:0, I:1

dvbackup

V:0, I:0

tamaño descripción
Paridad del conjunto de volúmenes de archivo, para comprobar y268
reparar archivos
1422
Protección contra pérdida/rotura/vejez de medios CD/DVD
herramienta de copia de seguridad para MiniDV (aportada por
413
rsbep(1))

Cuadro 9.23: Relación de herramientas para añadir redundancia de datos a los archivos

paquetetestdisk

popularidad
V:2, I:28

magicrescue

V:0, I:2

scalpelmyrescue

V:0, I:3
V:0, I:2

extundelete

V:0, I:8

ext4magic

V:0, I:4

ext3grep

V:0, I:2

scrounge-ntfs
gzrt
sleuthkit
autopsy
foremost
guymager
dcflddV:0, I:2
V:0, I:0
V:3, I:24
V:0, I:1
V:0, I:5
V:0, I:0
V:0, I:3

tamaño descripción
1413
utilidades para el escaneado de particiones y recuperaciones de disco
utilidades para la recuperación de archivos y búsqueda de bytes
255
mágicos
89
Divisor de archivos ligero y alto rendimiento
83
recuperación de datos de discos duros dañados
utilidad para recuperar archivos borrados en sistemas de archivos
147
ext3/4
utilidad para recuperar archivos borrados en sistemas de archivos
233
ext3/4
herramienta de ayuda a la recuperación de archivos borrados en
293sistemas de archivos ext3
50
programa de recuperación de datos en sistemas de archivos NTFS
33
conjunto de herramientas de recuperación gzip
1671
herramientas de análisis forense (Sleuthkit)
1026interfaz gráfico para SleuthKit
102
aplicación forense para la recuperación de datos
1021
herramienta para el análisis forense de imágenes basado en Qt
114
versión mejorada de dd para análisis forense y seguridad

Cuadro 9.24: Relación de paquetes para la recuperación de archivos y análisis forense

Guía de referencia de Debian

182 / 257

9.8.4. Recuperación de datos de archivos y análisis forense
Existen herramientas para la recuperación de archivos y análisis forense.
sugerencia
Puede recuperar archivos borrados en sistemas de archivos ext2 utilizando la relación_de_inodos_borrados
y la orden undel de debugfs(8) en el paquete e2fsprogs.

9.8.5. División de un archivo grande en archivos de tamaño menor
Cuando los datos son demasiado grandes para guardarlos en un único archivo, puede obtener una copia de seguridad de su
contenido dividiéndolo en, p. ej. trozos de 2000MiB y juntarlos más tarde para obtener el archivo original.
$ split -b 2000m large_file$ cat x* >large_file

atención
Por favor, asegúrese que no tiene ningún archivo que comience por «x» para evitar fallos de nombrado.

9.8.6. Limpieza del contenido de los archivosPara limpiar el contenido de los archivos como los archivos de registro, no utilice rm(1) para borrarlo y crear uno nuevo vacío,
ya que puede intentar ser accedido entre ambas operaciones. La forma segura de limpiar el contenido de un archivo es la que semuestra.
$ :>file_to_be_cleared

9.8.7. Archivos «vacíos»Las órdenes siguientes crean archivos «vacíos».
$ dd if=/dev/zeroof=5kb.file bs=1k count=5$ dd if=/dev/urandom of=7mb.file bs=1M count=7$ touch zero.file$ : > alwayszero.file

Encontrará lo siguiente tras ejecutar lo anterior.
«5kb.file» que contiene 5KB de ceros.
«7mb.file» que contiene 7MB de datos aleatorios.
«zero.file» puede tener 0 bytes. Si existiera con anterioridad, su mtime es actualizado y su contenido y su longitud
permanecen sin cambios.
«alwayszero.file» es siempre un archivo de 0 bytes. Si existía con anterioridad, su mtime es actualizado y su contenido
borrado.

Guía de referencia de Debian

183 / 257

9.8.8. Borrando completo de un disco duro
Existen diferentes modos de borrar completamente la información de un disco duro como dispositivo, p. ej. una memoria USB
ubicada en «/dev/sda».
atención
Antes de ejecutar las órdenes que le vamos a mostrar, compruebe la ubicación de su memoria USB por
medio de mount(8). El dispositivo que indica «/dev/sda» puede ser un disco duro SCSI o serial-ATA quecontiene su sistema.

Borre todo el contenido del disco poniendo a 0 toda la información como se muestra.
# dd if=/dev/zero of=/dev/sda

Bórrelo todo escribiendo datos aleatorios como sigue.
# dd if=/dev/urandom of=/dev/sda

Bórrelo todo sobrescribiendo datos aleatorios de forma eficiente como se muestra.
# shred -v -n 1 /dev/sda

También puede usar la opción badblocks(8) con la opción -t random.
Ya que dd(1) esta disponible en el intérprete de órdenes de muchos CDs de Linux arrancables como el CD instalador de Debian,puede borrar el sistema instalado completamente ejecutando una de las órdenes anteriores desde dicho medio sobre el disco durodel sistema, p. ej.«/dev/hda», «/dev/sda», etc.

9.8.9. Borrar áreas de disco duro no utilizadas
Las áreas en desuso del disco duro (o de la memoria USB), p. ej. «/dev/sdb1» todavía pueden contener datos borrados ya quesolo han sido desligados del sistema de archivos. Estos se pueden limpiar sobrescribiendo.
# mount -t auto /dev/sdb1 /mnt/foo# cd /mnt/foo# dd if=/dev/zero of=junk
dd: writing to ‘junk’: No space left on device...
# sync# umount /dev/sdb1

aviso
Esto es generalmente suficiente para las memorias USB. Pero no es perfecto. La mayor parte de los nombres de archivo borrados y sus atributos pueden estar ocultos y permanecer en el sistema de archivos.

9.8.10.

Recuperando archivos borrados pero todavía abiertos

Incluso en el caso de que accidentalmente haya borrado un archivo, mientras que ese archivo sea utilizado por alguna aplicación(en modo lectura o escritura), es posible recuperar dicho archivo.
Por ejemplo, intente lo siguiente

Guía de referencia de Debian

184 / 257

$ echo foo > bar$ less bar$ ps aux | grep ’ less[ ]’bozo4775 0.0 0.0 92200
884 pts/8
S+
00:18
0:00 less bar$ rm bar$ ls -l /proc/4775/fd | grep bar
lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> /home/bozo/bar (deleted)$ cat /proc/4775/fd/4 >bar
$ ls -l-rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar$ cat barfoo

Ejecute en otro terminal (cuando tenga el paquete lsof instalado) como se muestra.
$ ls -li bar
2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar$ lsof |grep bar|grep lessless 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar$ rm bar$ lsof |grep bar|grep lessless 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted)$ cat /proc/4775/fd/4 >bar
$ ls -li bar
2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar$ cat barfoo

9.8.11. Buscando todos los enlaces duros
Los archivos con enlaces duros pueden identificarse mediante «ls -li».
$ ls -litotal 02738405 -rw-r--r-- 1 root root 0 2008-09-15 20:21 bar
2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 baz
2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 foo

Tanto «baz» como «foo» tiene una cuenta de «2« (>1) de forma que tiene enlaces duros. Sus números de inodos son comunes«2738404«. Esto significa que son el mismo archivo mediante un archivo duro. Si no se encuentra todos los enlaces duros por
casualidad, puede buscarlos mediante el inodo, p. ej. «2738404« como sigue.
# find /path/to/mount/point -xdev -inum 2738404

9.8.12.

Consumo invisible de espacio de disco

Todos los archivos borrados pero abiertos consumen espacio de disco aunque no son visibles para el du(1) normal. Estos pueden
ser enumerados junto con su tamaño como se muestra.
# lsof -s -X / |grep deleted

9.9. Trucos para cifrar información
Con acceso físico a su PC, cualquiera puede acceder como superusuario y acceder a todos los archivos en él (ver Sección 4.6.4).
Esto significa que el sistema de acceso por contraseña puede no asegurar sus datos delicados y privados contra posibles ladrones de185 / 257

Guía de referencia de Debiansu PC. Para hacerlo debe desplegar alguna tecnología de cifrado de información. Aunque GNU privacy guard (ver Sección 10.3)
puede cifrar archivos , necesita de los esfuerzos del usuario.
Dm-crypt ayuda al cifrado automático de la información de forma nativa por medio de módulos del núcleo Linux con el mínimo
esfuerzo por parte del usuario usando device-mapper.
paquetecryptsetup

popularidad
V:19, I:79

cryptmount

V:2, I:3

fscrypt

V:0, I:1

libpam-fscrypt

V:0, I:0

tamaño descripción
417
utilidades para cifrar dispositivos de bloque (dm-crypt / LUKS)
utilidades para cifrar dispositivos de bloque (dm-crypt / LUKS)
231
centrado en el montaje/desmontaje por usuarios normales
5520
utilidades para el cifrado del sistema de archivos de Linux (fscrypt)
Módulo PAM para el cifrado del sistema de archivos de Linux
5519(fscrypt)

Cuadro 9.25: Relación de utilidades para el cifrado de información

atención
El cifrado de datos gasta recursos de la CPU, etc. Los datos encriptados se vuelven inaccesibles si sepierde su contraseña. Sopesa sus ventajas y sus costes.

nota
El sistema Debian entero puede instalarse en el disco cifrado por el instalador debian (lenny o más nuevo) utilizando
dm-crypt/LUKS y initramfs.

sugerencia
Ver Sección 10.3 para la utilización del cifrado del espacio de usuario: GNU Privacy Guard.

9.9.1. Cifrado de discos externos con dm-crypt/LUKS
Puede cifrar el contenido de los dispositivos masivos extraíbles, p. ej. memoria USB en «/dev/sdx», utilizando dm-crypt/LUKS.
Simplemente formatéelo como se muestra.
# fdisk /dev/sdx... ”n” ”p” ”1” ”return” ”return” ”w”# cryptsetup luksFormat /dev/sdx1...
# cryptsetup open /dev/sdx1 secret...
# ls -l /dev/mapper/
total 0crw-rw---- 1 root root 10, 60 2021-10-04 18:44 control
lrwxrwxrwx 1 root root
7 2021-10-04 23:55 secret -> ../dm-0# mkfs.vfat /dev/mapper/secret...
# cryptsetup close secret

Entonces, se puede montar igual que uno normal en ”/media/nombre_usuario/etiqueta_disco”, excepto para pedir
la contraseña (ver Sección 10.1.7) bajo el entorno de un escritorio moderno usando el paquete udisks2. La diferencia es que
todos los datos que se escriben en él están cifrados. La introducción de la contraseña puede automatizarse utilizando llaveros(véase Sección 10.3.6).

Alternativamente, puedes formatear los medios en un sistema de archivos diferente, por ejemplo, ext4 con ”mkfs.ext4 /dev/mapper
Si se utiliza btrfs en su lugar, es necesario instalar el paquete udisks2-btrfs. Para estos sistemas de archivos, puede ser necesario configurar la propiedad y los permisos de los archivos.

Guía de referencia de Debian

186 / 257

9.9.2. Montaje de disco cifrado con dm-crypt/LUCKS
Por ejemplo, una partición de disco cifrada creada con dm-crypt/LUKS en ”/dev/sdc5” por el instalador de Debian puedemontarse en ”/mnt” de la siguiente forma:$ sudo cryptsetup open /dev/sdc5 ninja --type luks
Enter passphrase for /dev/sdc5: ****$ sudo lvm
lvm> lvscan
inactive’/dev/ninja-vg/root’ [13.52 GiB] inherit
inactive’/dev/ninja-vg/swap_1’ [640.00 MiB] inherit
ACTIVE’/dev/goofy/root’ [180.00 GiB] inherit
ACTIVE’/dev/goofy/swap’ [9.70 GiB] inheritlvm> lvchange -a y /dev/ninja-vg/rootlvm> exit
Exiting.
$ sudo mount /dev/ninja-vg/root /mnt

9.10.

El núcleo

Debian distribuye el núcleo de Linux modularizado en paquetes para soportar las arquitecturas.
Si estás leyendo esta documentación, probablemente no necesites compilar el kernel de Linux por ti mismo.

9.10.1.

Parámetros del núcleo

Muchas funcionalidades de Linux son configurables por medio de parámetros del núcleo como se muestra.
Los parámetros del núcleo las inicializa el cargador de arranque (ver Sección 3.1.2)
Los parámetros del núcleo cambian mediante sysctl(8) en tiempo de ejecución por aquellos accesibles por medio de sysfs(consulte Sección 1.2.12)
Los parámetros de modprobe(8) se asignan como parámetros del módulo cuando se activa el módulo (ver Sección 9.7.3)
Consulta la ”Guía del usuario y administrador del kernel de Linux ” Parámetros de la línea de comandos del kernel” para obtener
más información.

9.10.2.

Cabeceras del núcleo

La mayor parte de los programas normales no necesitan las cabeceras del núcleo y de hecho puede producir errores si se utiliza directamente para compilar. Estos se deben compilar con las cabeceras en «/usr/include/linux» y «/usr/include/asm»
que están en el paquete libc6-dev (creado por el paquete fuente glibc) en el sistema Debian.
nota
Para compilar algunos programas específicos del kernel, como los módulos del kernel de la fuente externa yel contador automático de daemon (amd), debe incluir la ruta a las cabeceras del kernel correspondientes, por
ejemplo, ”-I/usr/src/linux-particular-version/include/”, en tu línea de comandos.

187 / 257

Guía de referencia de Debianpaquetebuild-essential

popularidad

bzip2
libncurses5-dev

V:166, I:970

tamaño descripción
paquetes fundamentales para la construcción de paquetes Debian:17
make, gcc, …
112
utilidades de compresión y descompresión de archivos bz2

I:71

6

git

V:351, I:549

46734

fakeroot

V:29, I:486

224

V:430, I:989

113

V:74, I:162

196

V:0, I:19406

V:6, I:40

2658

initramfs-tools
dkms
module-assistantdevscripts

I:480

bibliotecas de desarrollo y documentación de ncurses
git: sistema de control de versiones distribuido utilizado por el núcleo
de Linux
aporta el entorno fakeroot para la construcción de paquetes sin ser«root«
herramienta para construir initramfs (propio de Debian)soporte del núcleo para módulos dinámico (DKMS, dynamic kernel
module support) (genérico)
herramienta de ayuda para crear los paquetes de los módulos(específico de Debian)archivos de órdenes para el mantenimiento de Paquetes Debian(específico de Debian)Cuadro 9.26: Relación de los paquetes fundamentales para la recompilación del núcleo en los sistemas Debian

9.10.3.

Compilar el núcleo y los módulos asociados

Debian tiene su propio método para compilar el núcleo y los módulos asociados.

Si utiliza initrd en Sección 3.1.2, asegurese de leer la documentación asociada en initramfs-tools(8), update-initramfs(8mkinitramfs(8) y initramfs.conf(5).
aviso
No cree enlaces simbólicos en el árbol de directorios del código fuente (p. ej. «/usr/src/linux*») de«/usr/include/linux» y «/usr/include/asm» cuando compile código fuente del núcleo de Linux.
(Algunos documentos sin actualizar lo sugieren.)nota
Cuando compile el núcleo de Linux en el sistema Debian stable (estable), la utilización las últimas herramientas
retroportadas de Debian unstable (inestable) pueden ser necesarias.
module-assistant(8) (o su forma abreviada m-a) ayuda a los usuarios a construir e instalar fácilmente lospaquetes de los módulos para uno o más núcleos personalizados.
El soporte del núcleo a módulos dinámicos (dynamic kernel module support, DKMS) es un marco nuevo de distribución independiente diseñado para permitir la actualización de módulos sueltos sin cambiar el núcleo completo.
Esto es utilizado para mantener módulos externos. Esto también facilita la reconstrucción de módulos cuando actualice su núcleo.

9.10.4.

Compilando el código fuente del núcleo: recomendaciones del Equipo Debian delNúcleoPara la construcción de paquetes binarios personalizados del núcleo desde el código fuente del núcleo, podría utilizar el objetivo«deb-pkg» que se proporciona para ello.
$ sudo apt-get build-dep linux$ cd /usr/src$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-version.tar.xz$ tar --xz -xvf linux-version.tar.xz

Guía de referencia de Debian

188 / 257

$ cd linux-version$ cp /boot/config-version .config$ make menuconfig...
$ make deb-pkg

sugerencia
El paquete linux-source-version contiene el código fuente del núcleo de Linux con los parches de Debian como«/usr/src/linux-version.tar.bz2».

Para la construcción de paquetes binarios concretos desde el paquete de código fuente del núcleo de Debian, puede utilizar losobjetivos «binary-arch_architecture_featureset_flavour» en «debian/rules.gen».
$ sudo apt-get build-dep linux$ apt-get source linux$ cd linux-3.*$ fakeroot make -f debian/rules.gen binary-arch_i386_none_686

Compruebe la información adicional:
Debian Wiki: KernelFAQ
Debian Wiki: DebianKernel
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net

9.10.5.

Controladores y firware del hardware

El controlador de hardware es el código que se ejecuta en las CPU principales del sistema de destino.. La mayor parte de loscontroladores de hardware están disponibles como software libre actualmente se incluyen en los paquetes normales del núcleo de
Debian en el apartado main.
controlador de GPU• Controlador de Intel GPU (main)• Controladores AMD/ATI GPU (main)• Controlador NVIDIA GPU (main para el controlador nouveau y non-free para los controladores binarios aportado por
el vendedor.)El firmware es el código o los datos ubicados en el propio dispositivo (p. ej. CPU microcode, código ejecutable para el «rendering«en GPU, o los datos FPGA / CPLD , …). Algunos paquetes con firmware están disponibles como software libre pero no la mayoría
ya que contienen información binaria sin su código fuente. La instalación de estos datos de firmware es esencial para que eldispositivo funcione como se espera.
Paquetes de datos de firmware que contienen datos cargados en la memoria volátil en el dispositivo de destino.
• firmware-linux-free (main)• firmware-linux-nonfree (non-free-firmware)• firmware-linux-* (non-free-firmware)• *-firmware (non-free-firmware)• intel-microcode (non-free-firmware)• amd64-microcode (non-free-firmware)

Guía de referencia de Debian

189 / 257

El programa de actualización de firmware empaqueta los datos de actualización en la memoria no volátil en el dispositivo dedestino.
• fwupd (main): Demonio de actualización de firmware que descarga datos de firmware de Linux Vendor Firmware Service.
• gnome-firmware (principal): interfaz GTK para fwupd• plasma-discover-backend-fwupd (principal): interfaz Qt para fwupd
Ten en cuenta que el acceso a los paquetes de non-free-firmware lo proporcionan los medios de instalación oficiales para
ofrecer una experiencia de instalación funcional al usuario desde Debian 12 Bookworm. El área de firmware no libre se
describe en Sección 2.1.5.
Ten en cuenta también que los datos del firmware descargados por fwupd del Servicio de firmware del proveedor de Linux ycargados en el kernel de Linux en la ejecución pueden ser no libre.

9.11. Sistemas virtualizados
La utilización de sistemas virtualizados nos permite la ejecución de varias instancias del sistema a la vez sobre un único hardware.
sugerencia
Ver Debian wiki en SystemVirtualization.

9.11.1. Herramientas de virtualización y emulación
Hay varias plataformas de virtualización y emulación.
Completa los paquetes del hardware de emulación como los instalados por el metapaquete games-emulator
Principalmente la emulación a nivel de la CPU con algunas emulaciones de dispositivos de E/S como QEMU
Principalmente la virtualización a nivel de CPU con algunas emulaciones de dispositivos de E/S como Máquina virtual basada
en kernel (KVM)
Virtualización de los contenedores a nivel del sistema operativo con soporte a nivel de kernel como LXC (Linux Containers),
Docker, systemd-nspawn(1), ....
Virtualización del acceso al sistema de archivos a nivel del sistema operativo con la anulación de la llamada a la biblioteca delsistema en la ruta del archivo, como chroot
Virtualización del acceso al sistema de archivos a nivel del sistema operativo con la anulación de las llamada a la bibliotecadel sistema sobre la propiedad del archivo, como fakeroot
Emulación de API de SO como Wine
Virtualización a nivel del intérprete, además de la selección de la ejecución y anulaciones de las bibliotecas en el tiempo deejecución, como virtualenv y venv de Python
La virtualización de los contenedores utiliza Sección 4.7.5 y es la tecnología backend de Sección 7.7.
Aquí tienes algunos paquetes que te ayudarán a configurar el sistema virtualizado.
Consulte el artículo de Wikipedia Comparison of platform virtual machines para obtener detalles de la comparación entre diferentes plataformas y soluciones de virtualización.

190 / 257

Guía de referencia de Debianpaquetepopularidad
coreutils
V:880, I:999
systemd-container
V:53, I:61
schroot

V:5, I:7

sbuild

V:1, I:3

debootstrap
V:5, I:54
cdebootstrap
V:0, I:1
cloud-image-utils
V:1, I:17

tamaño descripción
18307 Utilidades básicas de GNU que contienen chroot(8)herramientas systemd container/nspawn que contienen
1330
systemd-nspawn(1)herramientas especializadas para la ejecución de paquetes binarios en2579«chroot«
herramientas para la construcción de paquetes binarios desde el243
código fuente de Debian314
sistema de arranque como sistema Debian mínimo (escrito en sh)
115
sistema de arranque de un sistema Debian (escrito en C)
66

utilidades para la gestión de las imágenes en la nube

V:3, I:13

71

utilidades para invitados en la nube

V:11, I:44

2296

Gestor de Máquinas Virtuales: aplicación de escritorio para la gestiónde máquinas virtuales

V:46, I:65

1241

programas para la biblioteca libvirt

incus

V:0, I:0

56209

lxd

V:0, I:0

podmanV:14, I:16

podman-docker

V:0, I:0

docker.io
games-emulator
bochs
qemu
qemu-systemqemu-user
qemu-utils
qemu-system-x86

V:41, I:43
I:0
V:0, I:0
I:14
I:22
V:1, I:6
V:12, I:106

virtualbox

V:6, I:8

gnome-boxes

V:1, I:7

xen-tools
wine

V:0, I:2
V:13, I:60

dosbox

V:1, I:15

cloud-guest-utils
virt-manager
libvirt-clients

V:33, I:91

lxc
V:9, I:12
python3-venv
I:88
python3-virtualenv
V:9, I:50
pipx

V:3, I:19

Incus: contenedor de los sistemas y gestor de máquinas virtuales (para
Debian 13 ”Trixie”)
LXD: contenedor de los sistemas y gestor de máquinas virtuales (para52119
Debian 12 ”Bookworm”)
41948 podman: motor para ejecutar contenedores basados en OCI en Pods
motor para ejecutar contenedores basados en OCI en Pods - wrapper
249
para docker
150003 docker: Tiempo de ejecución de contenedores Linux
21
games-emulator: emuladores de Debian para juegos
6956
Bochs: emulador de PC IA-32 PC
97
QEMU: emulador rápido de un procesador genérico
66
QEMU: binarios para la emulación de un sistema completo93760 QEMU: binarios para la emulación en modo usuario
10635 QEMU: utilidades
KVM: virtualización completa de hardware x86 con la virtualización
58140
asistida por hardware
130868 VirtualBox: solución de virtualización x86 en i386 y amd64
Boxes: Sencilla aplicación de GNOME para acceder a sistemas
6691
virtuales
719
herramientas para la gestión de debian del servidor virtual XEN
132
Wine: Implementación de la API Windows (suite estándar)
DOSBox: emulador x86 con gráficos
2696
Tandy/Herc/CGA/EGA/VGA/SVGA , sonido y DOS
25890 Contenedores Linux herramientas del espacio de usuario
6
venv para crear entornos virtuales python (biblioteca del sistema)356

virtualenv para crear entornos python virtuales aislados

3324

pipx para instalar aplicaciones python en entornos aislados

Cuadro 9.27: Relación de herramientas de virtualización

Guía de referencia de Debian

191 / 257

9.11.2. Flujo de trabajo de la virtualizaciónnota
El núcleo de Debian por defecto soporta KVM desde lenny.

El flujo de trabajo de la virtualización conlleva varios pasos.
Crear un sistema de archivos vacío (un árbol de directorios o una imagen de disco).
• El árbol de directorios puede ser creado mediante «mkdir -p /ruta/al/entorno//chroot».
• El archivo de la imagen de disco en crudo puede ser creado con dd(1) (ver Sección 9.7.1 y Sección 9.7.5).
• qemu-img(1) se puede utilizar para crear y convertir archivos de imagen de disco utilizados por QEMU.
• Los formatos de archivo crudos y VMDK se pueden utilizar como formato común entre diferentes herramientas de virtualización.
Monte la imagen de disco con mount(8) en el sistema de archivos (opcional).
• Para el archivo de imagen de disco crudo, móntelo como un dispositivo «loop« o mapeo de dispositivo (ver Sección 9.7.3).
• Para el soporte de imágenes de disco por QEMU, móntelos como dispositivo de bloque de red (ver Sección 9.11.3).
Llene el sistema de archivos objetivo con la información del sistema.
• La utilización de programas como debootstrap y cdebootstrap ayudan en este proceso (ver Sección 9.11.4).
• Utilización de instaladores de los sistemas operativos en la emulación del sistema completo.
Ejecute un programa en un entorno virtualizado.
• chroot ofrece un entorno de virtualización básico para compilar programas , ejecutar aplicaciones de consola y ejecutar
demonios en él.
• QEMU ofrece emulación de CPU independiente de la plataforma.
• QEMU con KVM ofrece un sistema de emulación completo por medio de la virtualización asistida por hardware.
• VirtualBox ofrece un sistema completo de emulación en i386 y amd64 con o sin la virtualización asistida por hardware.

9.11.3. Montando el archivo de imagen de disco virtualPara un archivo de imagen de disco crudo, ver Sección 9.7.
Para otros archivos de imágenes de disco virtuales, puede utilizar qemu-nbd(8) para exportarlos utilizando el protocolo dedispositivos de bloque de red y montarlos utilizando el módulo del núcleo nbd.
qemu-nbd(8) soporta los formatos de disco soportados por QEMU: QEMU que soporta los siguientes formato de disco: crudo,
qcow2, qcow, vmdk, vdi, bochs, cow (copia al escribir en modo usuario de Linux), parallels, dmg, cloop, vpc, vvfat (virtual
VFAT) y «host_device«.
Los dispositivos de bloque de red pueden soportar particiones de la misma manera que los dispositivos «loop« (ver Sección 9.7.3).
Puede montar la primera partición de «disk.img» como se muestra.
# modprobe nbd max_part=16# qemu-nbd -v -c /dev/nbd0 disk.img...
# mkdir /mnt/part1# mount /dev/nbd0p1 /mnt/part1

sugerencia
Puede exportar únicamente la primera partición de «disk.img» utilizando la opción «-P 1» de qemu-nbd(8).

192 / 257

Guía de referencia de Debian

9.11.4. Sistemas chroot
Si deseas probar un nuevo entorno Debian desde una consola de terminal, te recomiendo que uses chroot. Esto te permite ejecutar
aplicaciones de la consola de Debian inestable y prueba sin los riesgos habituales asociados y sin reiniciar. chroot(8) es
la forma más básica.

atención
Los ejemplos de abajo asumen que tanto el sistema padre como el sistema chroot comparten la mismaarquitectura de CPU amd64.

Aunque puedes crear manualmente un entorno chroot(8) usando debootstrap(1), esto requiere esfuerzos no triviales.
El paquete sbuild para crear paquetes Debian desde el código fuente utiliza el entorno chroot administrado por el paquete schroot.
Viene con una secuencia de comandos auxiliar sbuild-createchroot(1). Aprendamos cómo funciona ejecutándolo de lasiguiente manera.
$ sudo mkdir -p /srv/chroot$ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable- ←amd64-sbuild http://deb.debian.org/debian...

Puedes ver como debootstrap(8) rellena los datos del sistema para el entorno unstable bajo ”/srv/chroot/unstable-amd6
para un sistema de construcción mínimo.
Puedes acceder a este entorno utilizando schroot(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild

Verás cómo se crea un shell de sistema que se ejecuta en un entorno inestable.
notaElfichero”/usr/sbin/policy-rc.d”
quesiempre
sale
con
101
programasdemonioseinicienautomáticamenteenelsistema”/usr/share/doc/init-system-helpers/README.policy-rc.d.gz”.

impideDebian.

quelosConsulta

nota
Algunos programas en chroot pueden requerir acceso a más archivos del sistema principal para funcionar que losque proporciona sbuild-createchroot como se indicó anteriormente. Por ejemplo, ”/sys”, ”/etc/passwd”,”/etc/group”, ”/var/ run/utmp”, ”/var/log/wtmp”, etc. pueden necesitar ser montados o copiados.

sugerencia
El paquete sbuild ayuda a construir un sistema chroot y construye un paquete dentro del chroot usando schroot
como su backend. Es un sistema ideal para verificar las dependencias de compilación. Vea más en sbuild en Debianwiki y ejemplo de configuración de sbuild en la ”Guía para administradores de Debian”.

sugerencia
El comando systemd-nspawn(1) ayuda a ejecutar un comando o SO en un contenedor ligero de forma similar achroot. Es más potente ya que utiliza espacios de nombres para virtualizar completamente el árbol de procesos,
IPC, nombre de host, nombre de dominio y, opcionalmente, bases de datos de red y de usuario. Ver systemdnspawn.

Guía de referencia de Debian

193 / 257

9.11.5. Varios sistemas de escritorio
Si deseas probar un nuevo entorno de escritorio GUI de cualquier sistema operativo, te recomiendo que uses QEMU o KVM en
un sistema Debian stable (estable) para ejecutar múltiples sistemas de escritorio de forma segura usando la virtualización. Esto
te permite ejecutar cualquier aplicación de escritorio incluyendo las de Debian unstable (inestable) y testing (pruebas) sin
los riesgos habituales asociados a ellas y sin reiniciar.
Dado que QEMU puro es muy lento, se recomienda acelerarlo con KVM cuando el sistema anfitrión lo soporte.
Gestor de máquinas virtuales también conocido como virt-manager es una práctica herramienta GUI para gestionar lasmáquinas virtuales KVM a través de libvirt.
La imagen de disco virtual «virtdisk.qcow2» que contiene una imagen del sistema Debian para QEMU se puede crear
utilizando el instalador debian: en pequeños CDs como se muestra.
$ wget https://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso$ qemu-img create -f qcow2 virtdisk.qcow2 5G$ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256...

sugerencia
Ejecutar otra distribución GNU/Linux como Ubuntu y Fedora de forma virtualizada es un gran manera de aprenderformas de configuración. También se pueden ejecutar correctamente SS.OO. propietarios virtualializado sobre
GNU/Linux.

Ver más consejos en La Wikipedia de Debian: Virtualización del sistema.

Guía de referencia de Debian

194 / 257

Capítulo 10

Gestión de información
Se describen las herramientas y operaciones para la gestión de información en formato binarios y texto.

10.1.

Compartición, copia y archivo
aviso
El acceso de escritura sin coordinación a los dispositivos disponibles y a los archivos desde varios procesos
no debe realizarse sin evitar la condición de carrera. Para evitarla se puede utilizar el mecanismo de bloqueodel archivo (file locking) flock(1).

La seguridad de la información y el control de su compartición tiene varios aspectos.
La creación de un repositorio de información
El acceso al almacenamiento remoto
La duplicación
El seguimiento del histórico de modificaciones
Las facilidades de la compartición de la información
Evitar el acceso no autorizado a archivos
La detección de modificaciones no autorizadas de archivos
Esto se puede llevar a cabo por la combinación de algunas herramientas.
Herramientas de repositorios y compresión
Herramientas de sincronización y copia
Sistemas de archivos en red
Medios de almacenamiento extraíbles
El intérprete de órdenes seguro
El sistema de autenticación
Herramientas de sistemas de control de versiones
Herramientas de criptográficas de cifrado y resumen

Guía de referencia de Debian10.1.1.

195 / 257

Herramientas de repositorios y compresión

Aquí esta un resumen de las herramientas de repositorio y compresión disponibles en un sistema Debian.

aviso
No asigne la variable «$TAPE» a menos que sepa sus consecuencias. Esta cambia el comportamientotar(1).

Cuando se realiza una compresión gzip de un archivo tar(1) se utiliza la extensión de archivo «.tgz» o «.tar.gz».
La compresión xz de un archivo tar(1) utiliza la extensión de archivo «.txz» o «.tar.xz».
Los métodos de compresión más populares entre las herramientas FOSS como tar(1) ha evolucionado como se muestra:gzip → bzip2 → xz
cp(1), scp(1) y tar(1) puede tener alguna limitación con archivos especiales. Cpio(1) es más versátil.
cpio(1) esta diseñado para ser utilizado con find(1) y otras órdenes y archivos de órdenes para la creación de copias derespaldo ya que la parte de selección de archivo del archivo de órdenes puede ser probado de forma independiente.
La estructura interna de los archivos de información de Libreoffice son archivos «.jar» los cuales pueden incluso abrirse con
unzip.
La herramienta de archivo multiplataforma de facto es zip. Para conseguir la máxima compatibilidad utilícela mediante «zip-rX». Si el tamaño del fichero es importante añada también la opción «-s».

10.1.2.

Herramientas de sincronización y copia

Aquí hay un resumen de las herramientas de copia y respaldo disponibles en el sistema Debian.
La copia de archivos con rsync(8) aporta muchas más funcionalidades que otros.
el algoritmo de transferencia delta envía únicamente las diferencias entre los archivos de origen y los archivos que hay en eldestinoel algoritmo de comprobación rápido (quick check algorithm) (por omisión) busca los archivos que han cambiado su tamaño
o su fecha de última modificación
las opciones «--exclude» y «--exclude-from» son parecidas a las de tar(1)la sintáxis de «una barra «/« en el directorio origen« evita la creación de un nivel de directorios adicional en el destinosugerencia
Las herramientas de sistemas de control de versiones (VCS) en Tabla 10.14 pueden operar como herramientas
de sincronización y copia en múltiples sentidos.

10.1.3.

Formas de archivado

Aquí están algunas formas de archivar y desarchivar el contenido entero de un directorio «./origen» utilizando diferentes
herramientas.
GNU tar(1):$ tar -cvJf archive.tar.xz ./source$ tar -xvJf archive.tar.xz

196 / 257

Guía de referencia de Debianpaquetepopularidad

tamaño extensión

orden

tar

V:902, I:999

3077

.tar

tar(1)

cpio

V:440, I:998

1199

.cpio

cpio(1)binutils

V:172, I:629

144

.ar

ar(1)

fastjar

V:1, I:13

183

.jar

fastjar(1)pax

V:8, I:14

170

.pax

pax(1)

gzip

V:876, I:999

252

.gz

gzip(1),zcat(1), …

bzip2

V:166, I:970

112

.bz2

bzip2(1),bzcat(1),…

lzma

V:1, I:16

149

.lzma

lzma(1)xz-utils

V:360, I:980

1203

.xz

xz(1),
xzdec(1),…

zstd

V:193, I:481

2158

.zstd

p7zip

V:20, I:463

8.7z

p7zip-full

V:110, I:480

12

.7z

lzop

V:15, I:142

164

.lzo

zip

V:48, I:380

616

.zip

unzip

V:105, I:771

379

.zip

comentario
herramienta estándar del archivo(predeterminada)Archivador estilo Unix System V,
utilizado con find(1)archivador para la creación debibliotecas estáticas
archivador para Java (similar a zip)
nuevo archivador estándar POSIX,
comprometido entre tar y cpio
Utilidad de compresión GNU LZ77
(estándar de facto)
La utilidad de compresión por
ordenamiento de bloques
Burrows-Wheeler tiene el índice decompresión mayor que gzip(1) (máslento que gzip con una sintaxis similar)
Utilidad de compresión LZMA con
mayor ratio de compresión que gzip(1)(obsoleto)
La utilidad de compresión XZ tiene uníndice de compresión mayor que
bzip2(1) (más lento que gzip pero
más rápido que bzip2; es el sustituyo
del la utilidad de compresión LZMA)

zstd(1),
Utilidad de compresión rápida sin
zstdcat(1),pérdidas Zstandard…
7-Zip archivador de archivos con alto
7zr(1),
índice de compresión (compresión
p7zip(1)
LZMA).
7-Zip archivador de archivos con alto
7z(1),
ratio de compresión (compresión LZMA
7za(1)
y otros).
La utilidad de compresión LZO tiene
una velocidad de compresión ylzop(1)descompresión más alta que gzip(1)(menor índice de compresión que gzip
con una sintaxis parecida)
InfoZIP: herramienta de archivo yzip(1)
compresión DOS
InfoZIP: herramienta de desarchivo yunzip(1)descompresión DOS

Cuadro 10.1: Relación de las herramientas de repositorios y compresión

197 / 257

Guía de referencia de Debianpaquetepopularidad

tamaño herramienta

coreutils

V:880, I:999

18307

GNU cpopenssh-client

V:866, I:996

4959

scp

openssh-server

V:730, I:814

1804

sshd

rsync
unisonV:246, I:552
V:3, I:15

781
14

función
copia archivos y directorios localmente («-a« para
hacerlo recursivo)
copia archivos y directorios de forma remota (cliente,-r» para hacerlo recursivo)
copia archivos y directorios de forma remota (servidor
remoto)sincronización y respaldo remoto en un sentido
sincronización y respaldo remoto en dos direcciones

Cuadro 10.2: Relación de las herramientas de copia y sincronización
Otra forma es como se muestra.
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -T -cpio(1):$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio$ zcat archive.cpio.xz | cpio -i10.1.4.

Formas de copia

Aquí hay diferentes maneras de copiar el contenido completo de un directorio «./source» utilizando diferentes herramientas.
Copia local: directorio «./origen» → directorio «/destino»
Copia remota: directorio «./origen» en el equipo local → directorio «/destino» en el equipo «usuario@equipo.dom»
rsync(8):# cd ./source; rsync -aHAXSv . /dest# cd ./source; rsync -aHAXSv . user@host.dom:/dest

Puede utilizar la sintaxis de «barra «/« en el directorio origen«.
# rsync -aHAXSv ./source/ /dest# rsync -aHAXSv ./source/ user@host.dom:/dest

Otra forma es como se muestra.
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest

cp(1) de GNU y scp(1) de openSSH:# cd ./source; cp -a . /dest# cd ./source; scp -pr . user@host.dom:/dest

GNU tar(1):# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - )# (cd ./source && tar cf - . ) | ssh user@host.dom ’(cd /dest && tar xvfp - )’cpio(1):# cd ./source; find . -print0 | cpio -pvdm --null --sparse /destGuía de referencia de Debian

198 / 257

Puede sustituir «.» por «foo» para todos los ejemplos que contienen «.» para copiar archivos desde el directorio «./origen/foo»
al directorio «/destino/foo».
Puede sustituir «.» por la ruta absoluta «/ruta/al/origen/foo» para todos los ejemplos que contienen «.» para eliminar«cd ./source;». La copia de estos archivos a diferentes ubicaciones depende de las herramientas utilizadas como se muestra.
«/destino/foo»: rsync(8), GNU cp(1) y scp(1)«/destino/ruta/al/origen/foo»: GNU tar(1) y cpio(1)sugerencia
Rsync(8) y GNU cp(1) tiene la opción «-u» para no tener en cuenta los archivos que son más nuevos que losrecibidos.

10.1.5.

Formas de selección de archivos

La orden find(1) se utiliza para la selección de archivos en combinación con las órdenes de archivado y copia (consulte Sección 10.1.3 y Sección 10.1.4) o por xargs(1) (ver Sección 9.4.9). Esto se puede mejorar con la utilización de los parámetros dela orden.
La sintaxis básica de find(1) se puede resumir en lo que se muestra.
los parámetros condicionales son evaluados de izquierda a derecha
Esta evaluación se para una vez que se ha determinado la salida.
El «OR lógico« (que se escribe «-o» entre condiciones) tiene menor precedencia que el «AND lógico« (que se escribe «-a»o vacio entre condiciones).
El «NOT lógico« (que se escribe «!» antes de la condición) tiene mayor precedencia que el «AND lógico«.
La expresión «-prune» devuelve siempre un TRUE lógico y, si es un directorio, la búsqueda del archivos se detiene al llegar
a este punto.
La expresión «-name» encaja con los nombres de archivos con el mismo tipo de expresiones regulares que se usan en el
intérprete de órdenes (glob) (ver Sección 1.5.6) pero también encaja su «.» inicial con metacaracteres como «*» y «?». (Nueva
funcionalidad de POSIX)
La expresión «-regex» encaja con rutas absolutas al estilo de emacs BRE (ver Sección 1.6.2) por defecto.
La expresión «-size» encaja con los archivos en base a su tamaño (el valor precedido de «+» para mayor y precedido de «-»para menor)
La expresión «-newer» encaja con archivos más recientes que el que consta como parámetro.
La expresión «-print0» devuelve siempre un VERDADERO lógico e imprime el nombre de archivo completo (finalizado
con un null) por la salida estándar..
La orden find(1) se utiliza frecuentemente con el estilo que se muestra a continuación.
# find /path/to \-xdev -regextype posix-extended \-type f -regex ”.*\.cpio|.*~” -prune -o \-type d -regex ”.*/\.git” -prune -o \-type f -size +99M -prune -o \-type f -newer /path/to/timestamp -print0

Lo que se traduce en las acciones siguientes.

Guía de referencia de Debian

199 / 257

1. Busca todo los archivos que comienzan con «/ruta/a»
2. Limita la búsqueda globalmente al comienzo de su sistema de archivos y en su lugar utiliza ERE (ver Sección 1.6.2)
3. Excluye los archivos que encajan con las expresiones regulares «.*\.cpio» o «.*~» de la búsqueda sin procesarlos
4. Excluye los directorios que encajan con la expresión regular de «.*/\.git» de la búsqueda sin procesarlas
5. Excluye los archivos cuyo tamaño es mayor de 99 Megabytes (en bytes 1048576 ) de la búsqueda sin procesarla

6. Imprime los nombres de los archivos que cumplen los criterios de búsqueda anteriores y son más nuevos que «/path/to/timest
Por favor, tenga el cuenta la forma en que se utiliza «-prune -o»para excluir los archivos en los ejemplos anteriores.
nota
Para sistemas no Debian tipo Unix, algunas opciones de find(1) pueden no estar disponibles. En ese caso,
por favor, considere ajustar los métodos de encaje y sustituya «-print0» con «-print». Puede que también
necesite ajustar las órdenes parecidas.

10.1.6.

Medios de archivo

Cuando elija los medios de almacenamiento de información para el archivo de información importante, debe tener cuidado con
sus limitaciones. Para el respaldo de pequeñas cantidades de información personal, yo utilizo CD-R y DVD-R de una compañía
conocida y los almaceno en un lugar fresco, sin luz, seco y limpio. (El medio de archivo en cinta parece una opción común enentornos profesionales).
nota
Un lugar resistente al fuego tiene sentido para documentos en papel. La mayor parte de los medios de almacenamiento de información tienen menor tolerancia a la temperatura que el papel. Yo normalmente mantengo
almacenadas varias copias cifradas en diferentes ubicaciones seguras.

Tiempo de vida optimista de los medios de archivo (la mayor parte proveniente de los proveedores del medio).
Más de 100 años: papel libre de ácido con tinta
100 años : almacenamiento óptico (CD/DVD, CD/DVD-R)
30 años: almacenamiento magnético (cinta, disquete)
20 años: almacenamiento óptico con cambio de fase (CD-RW)
Esto no tiene en cuenta los errores mecánicos debido al manejo etc.
Ciclo de escritura de medios de archivos optimista visto en internet (proveniente de la información aportada por el vendedor).
Más de 250,000 ciclos : discos duros
Más de 10,000 ciclos : memoria flash
1,000 ciclos : CD/DVD-RW
1 ciclo : CD/DVD-R, papel
atención
Los datos que vida de los medios de almacenamiento y de los ciclos de escritura que hemos comentado no
se deben tener en cuenta para la toma de decisiones sobre almacenamiento de datos críticos. Por favor,
consulte la información especifica del producto que proporciona el fabricante.

Guía de referencia de Debian

200 / 257

sugerencia
Ya que los CD/DVD-R y el papel tienen únicamente un ciclo de escritura, impide de informa intrínseca la pérdida
de datos por sobreescritura. ¡Esto es una ventaja!

sugerencia
Si necesita copias de respaldo rápidas, frecuentes y de grandes cantidades de información, un disco duro en un
equipo remoto con una conexión de red rápida, puede ser la única opción real.

sugerencia
Si usas medios regrabables para tus copias de seguridad, usa un sistema de archivos como btrfs o zfs que admite
solo la lectura de las instantáneas pueden ser una buena idea.

10.1.7.

Dispositivos de almacenamiento extraíbles

Los dispositivos de almacenamiento extraíbles pueden ser cualquiera de los siguientes.
dispositivo USB flash
disco duro
disco óptico
Cámara digital
reproductor digital de música
Se pueden conectar de las siguientes maneras.
USB
IEEE 1394 / FireWire
PC CardLos entornos de escritorio modernos como GNOME y KDE pueden montar automáticamente estos dispositivos extraíbles sin su
entrada correspondiente en «/etc/fstab».
El paquete udisks2 proporciona un daemon (servicio) y utilidades asociadas para montar y desmontar estos dispositivos.
D-bus crea los actos para iniciar automáticamente dicho proceso.
PolicyKit aporta los permisos necesarios.
sugerencia
Los dispositivos que se montan de forma automática pueden tener la opción de montaje «uhelper=» que lo utiliza
umount(8).

sugerencia
En los entornos de escritorio modernos el automontaje ocurre únicamente cuando el dispositivo no posee una
entrada en «/etc/fstab».

201 / 257

Guía de referencia de Debian

El punto de montaje en el entorno de escritorio moderno se elige como ”/media/username/disk_label” que se puede
personalizar de la siguiente manera.
mlabel(1) para el sistema de archivos FAT
genisoimage(1) con la opción «-V» para el sistema de archivos ISO9660
tune2fs(1) con la opción «-L» para los sistemas de archivos ext2/ext3/ext4
sugerencia
Puede que necesite proporcionar el tipo de codificación como una opción a la hora del montaje (ver Sección 8.1.3).

sugerencia
Si utiliza el menú del interfaz gráfico de usuario para desmontar un sistema de archivos puede eliminar su nodo dedispositivo generado dinámicamente como «/dev/sdc». Si quiere mantener el node del dispositivo, desmóntelo
con la orden umount(8) desde el cursor del intérprete de órdenes.

10.1.8.

Selección del sistema de archivos para compartir datos

Cuando comparte información con otro sistema por medio de un dispositivo de almacenamiento extraíble, podría formatearlo en
un sistema de archivos que tenga soporte en ambos sistemas. Aquí esta una relación de posibles candidatos.
nombre del sistema dearchivos
FAT12
FAT16
FAT32
exFAT

NTFS
ISO9660
UDF
MINIX
ext2
ext3
ext4
btrfs

escenario típico de uso
compartición de información entre diferentes plataformas mediante disquete (<32MiB)
compartición de información entre plataformas con el uso de dispositivos como pequeños
discos duros (<2GiB)
compartición de información entre plaaformas mediante dispositivos como un gran disco duro(<8TiB, soportados por MS Windows95 OSR2 y posteriores)
Intercambio de datos multiplataforma en dispositivos de disco duro grandes (<512TiB,compatible con Windows XP, Mac OS X Snow Leopard 10.6.5 y Linux kernel versión 5.4 ysuperior)
compartición de información entre plataformas mediante un dispositivo como un gran disco
duro (soporte nativo en MS Windows NT y versiones posteriores y soportado porNTFS-3G por
medio de FUSE en Linux)
compartición de información entre plataformas de datos no volátiles en CD-R y DVD+/-R
escritura incremental de información en CD-R y DVD+/+R (nuevo)
almacenamiento de información en archivos unix eficiente en disquete
almacenamiento de información en dispositivos como discos duro para sistemas Linux antiguos
almacenamiento de información en dispositivos como discos duro para sistemas Linux antiguos
compartición de datos en un dispositivo como un disco duro para sistemas Linux actuales
uso compartido de datos en el disco duro como dispositivo con sistemas Linux actuales con
instantáneas de solo lectura

Cuadro 10.3: Relación de posibles sistemas de archivos para dispositivos de almacenamiento extraíbles con sus casos de uso
normalessugerencia
Consulte Sección 9.9.1 para la compartición de información entre plataformas utilizando cifrado a nivel de dispositivo.

Guía de referencia de Debian

202 / 257

El sistema de archivos FAT esta soportado por casi todos los sistemas operativos modernos y es bastante útil para el intercambio
de información por medio de un disco duro externo.
Cuando se formatea un disco duro externo con el sistemas de archivos FAT para compartir información entre diferentes plataformas, lo siguiente podrían ser las opciones más seguras.
Se particiona con fdisk(8), cfdisk(8) o parted(8) (ver Sección 9.6.2) en una única partición primaria y la marcamos
como se muestra.
• Tipo «6« para FAT15 para dispositivos menores de 2 GB.
• Tipo «c« para FAT32 (LBA) para dispositivos grandes.
Formateemos la partición primaria con mkfs.vfat(8) como se muestra.
• Si el nombre del dispositivo fuera, p. ej. «/dev/sda1» para FAT16• La opción explícita para FAT32 y su nombre de dispositivo, p.ej. «-F 32 /dev/sda1»
Cuando se utiliza el sistema de archivos FAT o ISO9660 para compartir los datos, los siguientes son los problemas de seguridad
a los que se debe prestar atención.
El archivo de archivos se recomienda utilizar primero tar(1), o cpio(1) par mantener los nombres de archivos largos, losenlaces blandos, los permisos originales de Unix y la información del propietario.
Para protegerlo de las limitaciones de tamaño divida el archivo en trozos menores de 2GiB con la orden split(1).
Cifre el archivo para asegurar que no existirán accesos no autorizados.
nota
En sistemas de archivos FAT debido a su diseño, el tamaño máximo de un archivo es (2^32 - 1) bytes =(4GiB - 1 byte). Para algunas aplicaciones antiguas en SSOO de 32 bits, el tamaño máximo de archivo es
todavía menor (2^31 - 1) bytes = (2GiB - 1 byte). Debian no tiene este último problema.

nota
La propia compañía Microsoft no recomienda el uso de FAT para dispositivos o particiones menores de 200 MB.
Microsoft resalta en su «Visión de conjunto de los sistemas de archivos FAT, HPFS y NTFS« su uso ineficiente delespacio de disco. Sin duda en Linux habitualmente usaremos el sistema de archivos ext4.

sugerencia
Para más información acerca de sistemas de archivos y su uso, por favor lea «Cómo Sistemas de Archivos«.

10.1.9.

Compartir información a través de la red

Para compartir información con otros sistemas a través de internet, debería utilizar un servicio común. He aquí algunas pistas.
Aunque los sistemas de archivos montados a través de la red pueden ser útiles, estos pueden ser inseguros. Sus conexiones de reddeben ser securos como se muestra.
Cifrado con SSL/TLS
Con túnel con SSH
Con túnel por medio de VPN
Limitando al área interna cubierto por un cortafuegos
Consulte además Sección 6.5 y Sección 6.6.

203 / 257

Guía de referencia de Debianservicio de red
SMB/CIFS sistema de archivos en red montado
con Samba
Sistema de archivos montado NFS con el
núcleo de Linuxservicio HTTP
servicio HTTPS
servicio FTP

descripción del caso de uso normalcompartición de archivos por medio de«Microsoft Windows Network«,
consulte smb.conf(5) y Cómo Oficial y Guía de Referencia de 3.x.x
o el paquete samba-doc
compartir archivos mediante una «Red Unix/Linux«, ver exports(5)y Linux NFS-HOWTO
compartiendo archivos entre cliente/servidor web
compartiendo archivos entre servidor web/cliente con cifrado con«Secure Sockets Layer« (SSL) o «Transport Layer Security« (TLS)
compartiendo archivos entre servidor FTP/cliente

Cuadro 10.4: Relación de los servicios de red disponibles con el escenario típico de utilización

10.2.

Respaldo y recuperación

Todos sabemos que los equipos fallan algunas veces o los errores humanos producen daños en el sistema o la información. Las
operaciones de copia de seguridad y respaldo son una parte esencial de la administración de sistemas. Todos los errores posible
ocurrirán alguna vez.
sugerencia
Mantenga su sistema de respaldo simple y cree copias de seguridad con frecuencia. El hecho de tener copias deseguridad de la información es más importante que la forma en las que las realice.

10.2.1.

Política de respaldo y recuperación

Existen tres factores que determinan la directriz de copia de seguridad y recuperación real.
1. Saber lo qué hay que respaldar y recuperar.
Los archivos creados por usted: información en «~/»
Archivos de información creados por las aplicaciones que utiliza: la información en «/var/» (excepto «/var/cache/»,«/var/run/» y «/var/tmp/»)Archivos de configuración del sistema: información en «/etc/»
Programas locales: datos en «/usr/local/» o «/opt/»
Información de la instalación del sistema: un resumen en texto plano de los pasos fundamentales (particionado, ...)
Probar el conjunto de datos: confirmarlo mediante la ejecución de operaciones de recuperación• Un trabajo cron como un proceso de usuario, los archivos en el directorio «/var/spool/cron/crontabs» yreinicie cron(8). Ver Sección 9.4.14 para cron(8) y crontab(1).
• Trabajos del temporizador del sistema como procesos de usuario: archivos en el directorio ”~/.config/systemd/user”.
Ver systemd.timer(5) y systemd.service(5).
• Tareas de inicio automático como procesos de usuario: archivos en el directorio ”~/.config/autostart”. Ver
Desktop Application Autostart Specification.
2. Saber como respaldar y recuperar datos.
Seguridad de la información almacenada: protegerlo de la sobreescritura y del fallo del sistema
Frecuencia de respaldo: planificación del respaldo
Redundancia de respaldo: copias de la información
Proceso a prueba de fallos: una única y sencilla orden para crear la copia de respaldo
3. Evaluación de riesgos y costes implícitos.

204 / 257

Guía de referencia de DebianPeligro de pérdida de datos• Los datos deben estar al menos en diferentes particiones del disco, preferiblemente en diferentes discos y máquinas
para resistir la corrupción del sistema de archivos. Los datos importantes se almacenan mejor en un sistema de archivosde solo lectura. 1
Riesgo de violación de datos• Datos de identidad confidenciales, como ”/etc/ssh/ssh_host_*_key”, ”~/.gnupg/*”, ”~/.ssh/*”, ”~/.local”/etc/passwd”, ”/etc/shadow”, ”popularity-contest.conf”, ”/etc/ppp/pap-secrets”, y ”/etc/exi
se debe hacer una copia de seguridad cifrada. 2 (Ver Sección 9.9.)• Nunca codifique la contraseña de inicio de sesión del sistema ni la frase de contraseña de descifrado en ningún script,
incluso en cualquier sistema confiable. (Ver Sección 10.3.6.)
Modo de error en la recuperación y sus posibilidades• El hardware (especialmente el disco duro) se romperá• El sistema de archivos puede estar dañado y los datos que contiene pueden perderse• No se puede confiar en los sistemas de almacenamiento remoto para las brechas de seguridad• La protección de la contraseña débil puede verse fácilmente comprometida• El sistema de permisos de los archivos puede estar comprometido
Uso de recursos para el respaldo: humanos, hardware, software, …
• Copia de seguridad automática programada con cron job o systemd timer job
sugerencia
Puede recuperar la información dedebconf-selections» y la selección<dpkg-selections.list».

configuración debconf con «debconf-set-selections
de información de dpkg con «dpkg --set-selectionnota
No respalde el contenido de los pseudo sistemas de archivos ubicados en /proc, /sys, /tmp y /run (consulte
Sección 1.2.12 y Sección 1.2.13). A menos que sepa exactamente que está haciendo, estas ubicaciones contienen
grandes cantidades de información poco relevantes.

nota
Puede que quiera parar algunos demonios como MTA (ver Sección 6.2.4) mientras respalda su información.

10.2.2.

Suites de utilidades de copias de seguridad

He aquí una relación de las suites de copias de seguridad más importantes en un sistema Debian.
Las herramientas de copias de seguridad están especializadas en diferentes aspectos.
Mondo Rescue es un sistema de copias de seguridad centrado en realizar la restauración completa de un sistema rápidamente
desde una copia en CD/DVD etc. sin seguir el proceso normal de instalación del sistema.
Bacula, Amanda, y BackupPC son suites de utilidades de copia de respaldo con funcionalidad completa centradas en la copias
de seguridad regulares a través de la red.
Duplicity, y Borg son utilidades de copia de seguridad más sencillas para estaciones de trabajo típicas.
1Un medio de escritura única, como CD / DVD-R, puede evitar accidentes de sobrescritura. (Ver Sección 9.8 para saber cómo escribir en el medio dealmacenamiento desde la línea de comandos del shell. El entorno GUI de escritorio GNOME le brinda fácil acceso a través del menú: ”Lugares→Creador de
CD/DVD”.)
2Algunos de estos datos no se pueden regenerar introduciendo la misma cadena de entrada en el sistema.

205 / 257

Guía de referencia de Debianpaquetepopularidad

bacula-common

V:8, I:10

bacula-client

V:0, I:2

bacula-console

V:0, I:3

bacula-server

I:0

amanda-common

V:0, I:2

amanda-client

V:0, I:2

amanda-server

V:0, I:0

backuppc

V:2, I:2

duplicitydeja-dup
borgbackup
borgmatic
rdiff-backup
resticbackupninja
flexbackup
slbackup
backup-manager

V:30, I:50
V:28, I:44
V:11, I:20
V:2, I:3
V:4, I:10
V:2, I:6
V:2, I:3
V:0, I:0
V:0, I:0
V:0, I:1

backup2l

V:0, I:0

tamaño descripción
Bacula: copia de respaldo en red, recuperación y verificación 2305
archivos de apoyo comunes
Bacula: copia de seguridad en red, recuperación y verificación 178
metapaquete cliente
Bacula: copia de seguridad en red, recuperación y verificación 112
consola de texto
Bacula: copia de seguridad en red, recuperación y verificación 178
metapaquete del servidor
Amanda: Archivador Automático de Discos en Red Avanzado
9897
Maryland (Bibliotecas)
Amanda: Archivador Automático de Discos en Red Avanzado
1092
Maryland (Cliente)
Amanda: Archivador Automático de Discos en Red Avanzado
1077
Maryland (Servidor)
BackupPC sistema de copia de respaldo de PCs( basado en disco) de
3178
alto rendimiento y ámbito empresarial
1973
respaldo incremental (remoto)
4992
Interfaz gráfica de usuario para duplicity
3301
copia de seguridad deduplicada (remota)
509
ayudante borgbackup
1203
respaldo incremental (remoto)21385 respaldo incremental (remoto)360
sistema meta-backup extensible y ligero
243
respaldo incremental (remoto)151
respaldo incremental (remoto)566
herramienta de copia de seguridad en línea de órdenes
herramienta para medios externos para su copia/restauración con bajo
115
mantenimiento (basado en discos)

Cuadro 10.5: Relación de suites de utilidades de copias de respaldo

Guía de referencia de Debian10.2.3.

206 / 257

Consejos para copias de seguridad

Para una estación de trabajo personal, las utilidades completas de la suite de copia de seguridad diseñadas para el entorno deservidor pueden no servir bien. Al mismo tiempo, las utilidades de copia de seguridad existentes para estaciones de trabajo
pueden presentar algunas deficiencias.
He aquí algunos consejos para facilitar las copias de seguridad con el mínimo esfuerzo por parte del usuario. Estas técnicas pueden
utilizarse con cualquier utilidad de copia de seguridad.
Con propósito demostrativo, vamos a suponer que el usuario principal y el nombre de grupo es pingüino y crear un ejemplode script de copia de seguridad e instantánea ”/usr/local/bin/bkss.sh” como:#!/bin/sh -e
SRC=”$1” # source data path
DSTFS=”$2” # backup destination filesystem path
DSTSV=”$3” # backup destination subvolume name
DSTSS=”${DSTFS}/${DSTSV}-snapshot” # snapshot destination pathif [ ”$(stat -f -c %T ”$DSTFS”)” != ”btrfs” ]; thenecho ”E: $DESTFS needs to be formatted to btrfs” >&2 ; exit 1
fi
MSGID=$(notify-send -p ”bkup.sh $DSTSV” ”in progress ...”)
if [ ! -d ”$DSTFS/$DSTSV” ]; thenbtrfs subvolume create ”$DSTFS/$DSTSV”
mkdir -p ”$DSTSS”
firsync -aHxS --delete --mkpath ”${SRC}/” ”${DSTFS}/${DSTSV}”
btrfs subvolume snapshot -r ”${DSTFS}/${DSTSV}” ${DSTSS}/$(date -u --iso=min)
notify-send -r ”$MSGID” ”bkup.sh $DSTSV” ”finished!”

Aquí, sólo se utiliza la herramienta básica rsync(1) para facilitar la copia de seguridad del sistema y el espacio de almacenamiento lo utiliza eficientemente Btrfs.
sugerencia
Para su información: Este autor utiliza su propio script de shell similar ”bss: Btrfs Subvolume Snapshot Utility” parasu estación de trabajo.

10.2.3.1.

Copia de seguridad de la GUI

A continuación se muestra un ejemplo para configurar la copia de seguridad con un solo clic de GUI.
Prepare un dispositivo de almacenamiento USB para utilizarlo como copia de seguridad.
• Formatea un dispositivo de almacenamiento USB con una partición en btrfs con su nombre de etiqueta como ”BKUP”. Esto
se puede cifrar (ver Sección 9.9.1).
• Conéctalo al sistema. El sistema de escritorio debería montarlo automáticamente como ”/media/penguin/BKUP”.
• Ejecute ”sudo chown penguin:penguin /media/penguin/BKUP” para que el usuario pueda escribir en él.
Crear ”~/.local/share/applications/BKUP.desktop” siguiendo las técnicas escritas en Sección 9.4.10 como:[Desktop Entry]
Name=bkss
Comment=Backup and snapshot of ~/Documents
Exec=/usr/local/bin/bkss.sh /home/penguin/Documents /media/penguin/BKUP Documents
Type=Application

Por cada clic en la GUI, se realiza una copia de seguridad de sus datos desde ”~/Documents” a un dispositivo de almacenamiento USB y se crea una instantánea de sólo lectura.

Guía de referencia de Debian10.2.3.2.

207 / 257

Montar la copia de seguridad activada por el acto

A continuación se muestra un ejemplo de configuración para la copia de seguridad automática activada por el hecho de montar.
Prepara un dispositivo de almacenamiento USB que se utilizará para la copia de seguridad como en Sección 10.2.3.1.
Crear un archivo de la unidad de servicio systemd ”~/.config/systemd/user/back-BKUP.service” como:[Unit]
Description=USB Disk backup
Requires=media- %u-BKUP.mount
After=media- %u-BKUP.mount[Service]
ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/ %u/BKUP Documents
StandardOutput=append: %h/.cache/systemd-snap.log
StandardError=append: %h/.cache/systemd-snap.log[Install]WantedBy=media- %u-BKUP.mount

Habilite esta configuración de unidad systemd con lo siguiente:$ systemctl --user enable bkup-BKUP.service

Para cada acto de montar, se realiza una copia de seguridad de los datos desde ”~/Documents” a un dispositivo de almacenamiento USB y se crea una instantánea de sólo lectura.
Aquí, los nombres de las unidades de montaje systemd que systemd tiene actualmente en memoria se pueden pedir al gestor deservicios del usuario que llama con ”systemctl --user list-units --type=mount”.
10.2.3.3.

Copia de seguridad activada por acción del temporizador

A continuación se muestra un ejemplo de configuración para la copia de seguridad automática activada por la acción del temporizador.
Prepara un dispositivo de almacenamiento USB que se utilizará para la copia de seguridad como en Sección 10.2.3.1.
Crear un archivo de unidad de temporizador systemd ”~/.config/systemd/user/snap-Documents.timer” como:[Unit]
Description=Run btrfs subvolume snapshot on timer
Documentation=man:btrfs(1)[Timer]
OnStartupSec=30
OnUnitInactiveSec=900[Install]WantedBy=timers.target

Crear un archivo de unidad de servicio systemd ”~/.config/systemd/user/snap-Documents.service” como:[Unit]
Description=Run btrfs subvolume snapshot
Documentation=man:btrfs(1)[Service]
Type=oneshot
Nice=15

208 / 257

Guía de referencia de Debian

ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/ %u/BKUP Documents
IOSchedulingClass=idle
CPUSchedulingPolicy=idle
StandardOutput=append: %h/.cache/systemd-snap.log
StandardError=append: %h/.cache/systemd-snap.log

Habilite esta configuración de unidad systemd con lo siguiente:$ systemctl --user enable snap-Documents.timer

Para cada acción del temporizador, se realiza una copia de seguridad de sus datos desde ”~/Documents” a un dispositivo dealmacenamiento USB y se crea una instantánea de sólo lectura.
Aquí, los nombres de las unidades de usuario del temporizador systemd que systemd tiene actualmente en memoria se pueden
pedir al gestor de servicios del usuario llamante con ”systemctl --user list-units --type=timer”.
Para el sistema de escritorio moderno, este enfoque systemd puede ofrecer un control más fino que los tradicionales de Unix
usando at(1), cron(8), o anacron(8).

10.3.

Infraestructura de seguridad de la información

La infraestructura de seguridad de la información es una combinación de herramientas de cifrado de datos, herramientas deresúmenes de mensajes y herramientas de firma.
paquetepopularidad

tamaño orden

gnupg

V:554, I:906

885

gpgv

V:893, I:999

922

paperkey

V:1, I:1458

cryptsetup

V:19, I:79

417

coreutils
coreutils

V:880, I:999
V:880, I:999

18307
18307

openssl

V:841, I:995

2111

V:0, I:10

41

secret-tool(1)almacenar y recuperar las contraseñas (CLI)

V:80, I:269

7987

seahorse(1) herramienta de gestión de claves (GNOME)

libsecret-tools
seahorse

descripción
GNU Privacy Guard - herramienta de firma y cifrado
gpg(1)
OpenPGPGNU Privacy Guard - herramienta de verificación de
gpgv(1)
firma
extracción únicamente de la información secreta sin
paperkey(1)considerar las claves secretas OpenPGP
cryptsetup(8),utilidades para dm-crypt cifrado de dispositivos de…
bloque compatibles con LUKS
md5sum(1)crea y comprueba el resumen MD5 de un mensaje
sha1sum(1) crea y comprueba el resumen SHA1 de un mensaje
crea el resumen de un mensaje con «openssl
openssl(1ssl)
dgst» (OpenSSL)

Cuadro 10.6: Relación de herramientas de infraestructura de seguridad de la información
Ver Sección 9.9 en dm-crypt y fscrypt que implementan una infraestructura de cifrado automático de datos a través de módulos
del núcleo de Linux.

10.3.1.

Gestión de claves con GnuPG

He aquí las órdenes GNU Privacy Guard para la gestión básica de claves.
Aquí esta el significado de un código seguro.
Lo siguiente carga mi clave «1DD8D791» a un popular servidor de claves «hkp://keys.gnupg.net».
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791

209 / 257

Guía de referencia de Debianorden
gpg --gen-key
gpg --gen-revoke
mi_Id_de_usuario
gpg --edit-key ID_de_usuario
gpg -o archivo --export
gpg --import filegpg --send-keys user_ID
gpg --recv-keys user_ID
gpg --list-keys user_ID
gpg --list-sigs user_ID
gpg --check-sigs user_ID
gpg --fingerprint user_ID
gpg --refresh-keys

descripción
genera una nueva clave
provoca la revocación de la clave para mi_ID_de_usuario
edición interactiva de la clave, «help« para obtener ayuda
exporta todas las claves a un archivo
importa todas las claves desde un archivo
envía la clave de un ID_de_usuario al servidor de claves
recibe claves del usuario ID_de_usuario desde el servidor de claves
relación de las claves de ID_de_usuario
relación de las firmas de ID_de_usuarios
comprueba la firma de ID_de_usuario
comprueba la huella del ID_de_usuario
actualiza el círculo de claves local

Cuadro 10.7: Relación de las órdenes GNU Privacy Guard par la gestión de claves
códigoeqnmfudescripción de la confianza
sin asignación del dueño de la confianza /no calculado todavía
cálculo de confianza fallido
falta de información suficiente para el cálculo
no confíe nunca en esta clave
confianza marginal
confianza total
confianza básica
Cuadro 10.8: Relación del significado del código de confianza

Un buen servidor de claves por defecto configurado en «~/.gnupg/gpg.conf» (o su ubicación antigua «~/.gnupg/options»)
contiene lo siguiente.
keyserver hkp://keys.gnupg.net

Lo siguiente obtiene las claves desconocidas del servidor de claves.
$ gpg --list-sigs --with-colons | grep ’^sig.*\[User ID not found\]’ |\cut -d ’:’ -f 5| sort | uniq | xargs gpg --recv-keys

Existió un error en el Servidor de Claves Públicas OpenPGP (pre versión 0.9.6) el cual corrompía las claves con más de dos
subclaves. El nuevo paquete gnupg (>1.2.1-2) pueden gestionar estas subclaves corruptas. Consulte gpg(1) bajo la opción«--repair-pks-subkey-bug».

10.3.2.

Usando GnuPG en archivos

Aquí están los ejemplos de utilización de las órdenes GNU Privacy Guard sobre archivos.

10.3.3.

Uso de Mutt con GnuPG

Añada lo siguiente a «~/.muttrc» para mantener el lento el inicio automático de GnuPG, mientras permite usarlo pulsado «S»del menú principal.
macro index S ”:toggle pgp_verify_sig\n”
set pgp_verify_sig=no210 / 257

Guía de referencia de Debianorden
gpg -a -s archivo
gpg --armor --sign archivo
gpg --clearsign archivo
gpg --clearsign archivo|mailfoo@example.org
gpg --clearsign--not-dash-escaped parche
gpg --verify archivo
gpg -o archivo.sig -b archivo
gpg -o file.sig --detach-sign
file
gpg --verify archivo.sig
archivo
gpg -o archivo_cifrado.gpg -r
nombre -e archivo
gpg -o archivo_cifrado.gpg--recipient nombre --encryptarchivo
gpg -o archivo_cifrado.asc -a-r name -e archivo
gpg -o archivo_cifrado.gpg -carchivo
gpg -o archivo_cifrado.gpg--symmetric archivo
gpg -o archivo_cifrado.asc -a-c archivo
gpg -o archivo -darchivo_cifrado.gpg -r name
gpg -o file --decryptarchivo_cifrado.gpg

descripción
archivo de firma en ASCII del archivo.asc blindado,,
mensaje sin firmar
envía un mensaje de correo sin firmar a foo@example.org
parche sin firmar
comprueba un archivo sin firmar
crea un firma objetivo,,
comprueba el archivo con archivo.sig
intento de cifrado con clave pública para el nombre del archivo al
arhivo binario archivo_cifrado.gpg,,
intento de cifrado con clave pública para el nombre del archivo alarchivo blindado ASCII archivo_cifrado.asc
cifrado simétrico de archivo a archivo_cifrado_gpg,,
intento del cifrado simétrico para el nombre desde el archivo fuente alarchivo blindado en ASCII archivo_cifrado.asc
Descifrado,,

Cuadro 10.9: Relación de órdenes GNU Privacy Guard sobre archivos

211 / 257

Guía de referencia de Debian

10.3.4.

Utilizando Vim con GnuPG

El plugin gnupg permite ejecutar GnuPG de forma transparente para los archivos con extensiones ”.gpg”, ”.asc”, y ”.pgp”.3$ sudo aptitude install vim-scripts$ echo ”packadd! gnupg” >> ~/.vim/vimrc

10.3.5.

El resumen MD5

md5sum(1) proporciona la funcionalidad de hacer resúmenes de un archivo utilizando el método descrito en rfc1321 y verificarcada archivo con él.
$ md5sum foo bar >baz.md5$ cat baz.md5
d3b07384d113edec49eaa6238ad5ff00
c157a79031e1c40f85931829bc5fc552$ md5sum -c baz.md5
foo: OK
bar: OK

foo
bar

nota
La computación de la suma MD5 es menos intensiva en CPU que la de firma criptográfica de GNU Privacy Guard(GnuPG). Normalmente, solo los archivos resumen de alto nivel están firmados criptologicamente para asegurarla integridad de la información.

10.3.6.

Llavero de contraseña

En el sistema GNOME, la herramienta GUI seahorse(1) gestiona las contraseñas y las almacena de forma segura en el llavero~/.local/share/keyrings/*.
secret-tool(1) puede almacenar la contraseña en el llavero desde la línea de comandos.
Almacenemos la frase de la contraseña utilizada para la imagen del disco encriptada LUKS/dm-crypt$ secret-tool store --label=’LUKS passphrase for disk.img’ LUKS my_disk.img
Password: ********

Esta contraseña almacenada puede ser recuperada y cedida a otros programas, por ejemplo, cryptsetup(8).
$ secret-tool lookup LUKS my_disk.img | \cryptsetup open disk.img disk_img --type luks --keyring $ sudo mount /dev/mapper/disk_img /mnt

sugerencia
Siempre que necesites proporcionar una contraseña en un script, utiliza secret-tool y evita codificar directamente la frase de la contraseña en él..

10.4.

Herramientas para mezclar código fuente

Existen múltiples herramientas para el código fuente. Las siguientes órdenes llamaron mi atención.
3Si utilizas ”~/.vimrc” en lugar de ”~/.vim/vimrc”, sustituye lo según corresponda.

212 / 257

Guía de referencia de Debianpaquetepatch
vim

popularidad
V:97, I:700
V:95, I:369

tamaño orden
248
patch(1)3743
vimdiff(1)descripción
aplica un archivo diff al originalcompare dos archivos en vim uno contra otro
herramienta interactiva de fusión 2/3 a pantalla
imediff(1)completa
meld(1)compara y mezcla archivos (GTK)
wiggle(1)aplica parches rechazados
diff(1)compara archivos línea a línea
diff3(1)compara y mezcla tres archivos línea a línea
quilt(1)gestiona un conjunto de parches
muestra las palabras diferentes en dos archivos dewdiff(1)textosdiffstat(1) produce un histograma de los cambios de diffcrea un parche acumulativo con dos parches
combinediff(1)incrementales
dehtmldiff(1)extrae un diff de un página HTMLfilterdiff(1)extrae o excluye diffs de un archivo diffrepara archivos diff creados por CVS que son
fixcvsdiff(1)malinterpretados por patch(1)flipdiff(1) intercambia el orden de dos parches
muestra que archivos son modificados por un parche
grepdiff(1)de acuerdo a una expresión regular
muestra las diferencias entre dos archivos diffinterdiff(1)unificados
lsdiff(1)muestra los archivos modificados por un parche
recalcula las cuentas y desplazamientos en un contexto
recountdiff(1)diff unificado
repara los desplazamientos y cuentas en un diff editado
rediff(1)de forma manual
splitdiff(1)selecciona parches incrementales
unwrapdiff(1)deshace los parches que han sido mezclados
muestra las diferencias y mezcla los cambios entre
dirdiff(1)árboles de directorio
compara dos archivos palabra a palabra / carácter a
docdiff(1)carácter
makepatch(1)genera archivos de parches extendidos
applypatch(1)aplica archivos de parches extendidos

imediff

V:0, I:0200

meld
wigglediffutils
diffutils
quilt

V:7, I:30
V:0, I:0
V:862, I:996
V:862, I:996
V:2, I:22

3536
175
1735
1735
871

wdiff

V:7, I:51

648

diffstat

V:13, I:121

74

patchutils

V:16, I:119

232

patchutils
patchutils

V:16, I:119
V:16, I:119

232
232

patchutils

V:16, I:119

232

patchutils

V:16, I:119

232

patchutils

V:16, I:119

232

patchutils

V:16, I:119

232

patchutils

V:16, I:119

232

patchutils

V:16, I:119

232

patchutils

V:16, I:119

232

patchutils
patchutils

V:16, I:119
V:16, I:119

232
232

dirdiff

V:0, I:1

167

docdiff

V:0, I:0553

makepatch
makepatch

V:0, I:0
V:0, I:0100
100

Cuadro 10.10: Relación de las herramientas para mezclar código fuente

Guía de referencia de Debian

10.4.1.

213 / 257

extrae las diferencias entre dos archivos fuente

Los procedimientos siguientes extraen las diferencias entre dos archivos de código fuente y crea los archivos diff unificados«archivo.patch0» o «archivo.patch1» dependiendo de la ubicación del archivo.
$ diff -u file.old file.new > file.patch0$ diff -u old/file new/file > file.patch1

10.4.2.

Mezcla actualizaciones del archivos de código fuente

Un archivo diff (también llamado un parche o un archivo de parche) se utiliza para enviar una actualización de un programa.
Quien lo recibe aplica esta actualización a otro archivo como se muestra.
$ patch -p0 file < file.patch0$ patch -p1 file < file.patch1

10.4.3.

Integración interactiva

Si tienes dos versiones de un código fuente, puede realizar la fusión bidireccional de forma interactiva utilizando imediff(1)de la siguiente forma.
$ imediff -o file.merged file.old file.new

Si tiene tres versiones de un código fuente, puede realizar la fusión a tres bandas de forma interactiva utilizando imediff(1) dela siguiente forma.
$ imediff -o file.merged file.yours file.base file.theirs

10.5.

Git

Git es la herramienta de elección en estos días para el sistema de control de versiones (VCS) ya que Git puede hacerlo todo tantopara la gestión local como remota del código fuente.

Debian proporciona servicios Git gratuitos a través de Servicio Debian Salsa. Su documentación puede encontrarse en https://wiki.debian.o
Salsa .
Aquí hay algunos paquetes relacionados con Git.

10.5.1.

Configuración del cliente Git

Puede que quiera guardar parte de la configuración global en «~/.gitconfig» como su nombre y la dirección de correo
electrónico que utiliza Git como se muestra.
$ git config --global user.name ”Name Surname”$ git config --global user.email yourname@example.com

También puedes personalizar el comportamiento predeterminado de Git de la siguiente manera.
$ git config --global init.defaultBranch main
$ git config --global pull.rebase true
$ git config --global push.default current

Si esta acostumbrado a utilizar órdenes Subversion o CVS, puede que quiera crear algunos alias de orden como se muestra.

214 / 257

Guía de referencia de Debianpaquetepopularidad

tamaño orden

gitk
V:5, I:33
git-gui
V:1, I:18
git-email
V:0, I:10
git-buildpackage
V:1, I:9

1838
2429
1087

descripción
Git, el sistema de control de versiones rápido,
git(7)
escalable y distribuido
gitk(1)
Navegador de repositorios Git GUI con históricos
git-gui(1) GUI para Git (sin históricos)
git-send-email(1)Git envía un conjunto de parches como un correo

git

V:351, I:549

46734

1988

git-buildpackage(1)automatiza la creación de paquetes Debian con Git

dgit

V:0, I:1473

dgit(1)

imediff

V:0, I:0200

git-ime(1)stgit
git-doc
gitmagic

V:0, I:0
I:12
I:0

601
13208
721

stg(1)
N/A
N/A

interoperabilidad de git con el archivo de Debianherramienta de ayuda interactiva para confirmaciones
de git separadas
quilt sobre git (Python)
documentación oficial de Git«Git Mágico«, una guía de Git fácil de entender

Cuadro 10.11: Relación de paquetes y órdenes relacionados con git$ git config --global alias.ci ”commit -a”$ git config --global alias.co checkout

Puede comprobar la configuración global como se muestra.
$ git config --global --list

10.5.2.

Comandos Git básicos

La operación Git involucra varios datos.
El árbol de trabajo que contiene los archivos del usuario y en el que se realizan los cambios.
• Los cambios a registrar deben ser explícitamente seleccionados y puestos en escena en el índice. Se trata de los comandos
git add y git rm.
El índice mantiene los archivos organizados.
• Los archivos almacenados se enviarán al repositorio local en las solicitudes posteriores. Este es el comando git commit.
El repositorio local mantiene los archivos confirmados.
• Git realiza un seguimiento del historial vinculado de los datos comprometidos y lo administra como una bifurcación en el
repositorio.
• El repositorio local puede enviar datos al repositorio remoto con el comando git push.
• El repositorio local puede recibir datos del repositorio remoto mediante los comandos git fetch y git pull.
◦ El comando git pull ejecuta el comando git merge o git rebase después del comando git fetch.
◦ Aquí, git merge combina los extremos de las historias de dos ramas separadas en un solo punto. (A falta de un git
pull personalizado, este es el valor predeterminado, y también es bueno para que los autores anteriores publiquen ramaspara muchas personas)◦ Aquí, git rebase crea una única rama del historial secuencial de la rama remota, seguida de la rama local. (Este es elcaso de la personalización pull.rebase true y esto puede ser válido para el resto de nosotros.)
El repositorio remoto que contiene los archivos confirmados.
• La comunicación con el repositorio remoto utiliza protocolos de comunicación seguros como SSH o HTTPS.
El árbol de trabajo son los archivos fuera del directorio .git/. Los archivos dentro del directorio .git/ contienen el índice,los datos del repositorio local y algunos archivos de texto de configuración de git.
Aquí hay una descripción general de los principales comandos de Git.

215 / 257

Guía de referencia de Debian

Comandos Git
git init
git clone URL
git pull origin main
git add .
git add -A .
git rm filename
git commit
git commit -agit push -u origin branch_namegit push origin branch_namegit diff treeish1 treeish2
gitk

función
crea un repositorio (local)
clonar el repositorio remoto en un repositorio local con el árbol detrabajoactualizar la rama local principal por el repositorio remoto
origenañadir archivo(s) en el árbol de trabajo al índice sólo para archivos
preexistentes en el índice
añadir archivo(s) en el árbol de trabajo al índice para todos losarchivos, incluidas las eliminaciones
eliminar archivo(s) del árbol de trabajo y del índiceconfirmar los cambios por etapas en el índice al repositorio local
agrega todos los cambios en el árbol de trabajo al índice y los envía alrepositorio local (agregar + confirmar)
actualizar el repositorio remoto origin por la rama local
branch_name (invocación inicial)actualizar el repositorio remoto origin por la rama local
branch_name (invocación posterior)
Muestra la diferencia entre la confirmación treeish1 y la confirmación
treeish2
Visualización GUI del árbol histórico de ramas del repositorio VCS

Cuadro 10.12: Principales comandos de Git

10.5.3.

Consejos para Git

Aquí hay algunos consejos para Git.

aviso
No utilice etiquetas con caracteres blancos a pesar de que algunas herramientas permiten su utilización
como gitk(1). Puede provocar errores en otras órdenes git.

atención
Si una rama local que se ha enviado a un repositorio remoto se reubica o aplasta, enviar esta rama tiene
riesgos y requiere la opción --force. Por lo general, esto no es aceptable para la rama main, pero puede
ser aceptable para una rama temática antes de fusionarse con la rama main.

atención
LLamar una subórden git directamento como «git-xyz» desde la línea de órdenes ha sido declarado
obsoleto desde principios de 2006.

sugerencia
Si existe un archivo ejecutable git-foo en la ruta determinada por $PATH, al escribir «git foo» sin guión en lalínea de órdenes llama a git-foo. Esto es una funcionalidad de la orden git.

10.5.4.

Algunas referencias sobre Git

Ver lo siguiente.

216 / 257

Guía de referencia de Debian

Línea de comandos Git

función
ver el historial completo de Git y operar en ellos, como restablecer
HEAD a otro compromiso, seleccionar un parche, crear etiquetas yramas...
recuperar el árbol de trabajo limpio sin pérdida de datos
verifica la configuración del control remoto
verifica la configuración de la rama del repositorio
mostrar el estado del árbol de trabajo
listar la configuración de git
revertir todos los cambios en el árbol de trabajo y limpiarlos porcompleto
revertir índice por pasos cambiado por git add filename
obtener el registro de referencia (útil para recuperar confirmaciones dela rama eliminada)

gitk --allgit stash
git remote -v
git branch -vv
git status
git config -l
git reset --hard HEAD; git
clean -x -d -f
git rm --cached filename
git reflog
git branch new_branch_name
HEAD@{6}git remote add new_remote URL
git remote rename origin
upstreamgit branch -u
upstream/branch_namegit remote set-url origin
https://foo/bar.git
git remote set-url --push
upstream DISABLED

crear una nueva rama a partir de la información de reflog
añadir un repositorio remoto new_remote apuntado por URL
cambiar el nombre del repositorio remoto de origin a upstream
establecer el seguimiento remoto en el repositorio remoto upstream
y su nombre de rama branch_name.
cambiar la URL de origin

git remote update upstream
git fetch upstream
foo:upstream-foo
git checkout -b topic_branch ;git push -u topic_branch origin
git branch -m oldname newname
git push -d origin
branch_to_be_removed
git push origin:branch_to_be_removed
git checkout --orphan
unconnected

git reset HEAD^; git commit--amendgit checkout topic_branch ; git
merge --squash topic_branch
git fetch --unshallow--update-head-ok origin’+refs/heads/*:refs/heads/*’

git repack -a -d; git prune

hacer un nuevo topic_branch y llevarlo a origin
cambiar el nombre del nombre de la sucursal local
eliminar una rama remota (nuevo método)
eliminar la rama remota (método antiguo)
crear una rama desconectada nueva
reorder/drop/squish commits desde origin/main para limpiar elhistorial de la rama

git rebase -i origin/main

git imedeshabilitar pulsar para upstream (Editar .git/config para
volver a habilitar)
Obtener actualizaciones de todas las ramas remotas en el repositorio
upstreamcrear una rama local (posiblemente huérfana) upstream-foo como
copia de la rama foo en el repositorio upstreamsquash los últimos 2 commits en uno
squash todo topic_branch en un commit
convertir un clon superficial en un clon completo de todas las ramas
dividir la última confirmación en una serie de confirmaciones de losarchivos por archivos más pequeñas, etc. (se requiere el paquete
imediff)
Vuelve a empaquetar el repositorio local en un paquete separado (estopuede limitar las oportunidades de recuperar los datos perdidos deramas eliminadas, etc.)

Cuadro 10.13: Consejos para Git

217 / 257

Guía de referencia de Debian

manpage: git(1) (/usr/share/doc/git-doc/git.html)
Manual de Usuario (/usr/share/doc/git-doc/user-manual.html)
Un tutorial de introducción a git (/usr/share/doc/git-doc/gittutorial.html)
Un tutorial inicial a git: parte dos (/usr/share/doc/git-doc/gittutorial-2.html)«20 órdenes GIT para todos los días (/usr/share/doc/git-doc/everyday.html)
Git Mágico (/usr/share/doc/gitmagic/html/index.html)

10.5.5.

Otros sistemas de control de versiones

Los Sistemas de control de versiones (VCS) a veces se denominan Sistemas de control de revisiones (RCS) o Administradoresde configuración de software (SCM).
Aquí hay un resumen de otros VCS notables que no son Git en sistemas Debian.
paquetepopularidad

tamaño herramienta

Tipo deCVS

mercurial

V:5, I:32

2019

Mercurial

distribuido

darcs

V:0, I:5

34070

Darcs

distribuido

bzr

I:8

28

GNU
Bazaardistribuidotla

V:0, I:11022

GNU arch

distribuido

subversion

V:13, I:72

4837

Subversion

remotocvs

V:4, I:30

4753

CVS

remototkcvs

V:0, I:1

1498

CVS, …

remotorcs
cssc

V:2, I:13
V:0, I:1

564
2044

RCS
CSSC

local
local

comentario
DCVS escrito en Python y una pequeña
parte en C
DCVS con notación álgebraica
inteligente (lento)
DVCS influenciado por tla, escrito en
Python (historic)
DVCS principalmente por Tom Lord
(histórico)«CVS bien hecho«, nuevo estándar CVS
remoto (histórico)estándar remoto anterior VCS (histórico)
Visualización GUI del árbol derepositorios VCS (CVS, Subversion,
RCS)«Unix SCCS bien hecho« (histórico)clon de Unix SCCS (histórico)Cuadro 10.14: Lista de otras herramientas del sistema del control de las versiones

218 / 257

Guía de referencia de Debian

Capítulo 11

Conversión de datos
Se describen herramientas y métodos para convertir formatos de datos en el sistema Debian.
Las herramientas para formatos estándar son muy buenas pero para formatos propietarios son limitadas.

11.1. Herramientas para la conversión de información en formato texto
Los siguientes paquetes para la conversión de información en formato texto llamaron mi atención.
paquetepopularidad

tamañopalabra
clave

libc6

V:917, I:999

12988

conjunto decaracteres

recodeV:2, I:18

602

konwert

V:1, I:48

134

nkf

V:0, I:9360

tcs

V:0, I:0518

unaccent

V:0, I:035

tofrodos

V:1, I:17

51

eol

macutils

V:0, I:0312

eol

conjunto decaracteres+eol
conjunto decaracteresconjunto decaracteresconjunto decaracteresconjunto decaracteres

descripción
conversor de la codificación de texto entre
configuraciones locales mediante iconv(1)(fundamental)
conversor de codificaciones de texto entre
configuraciones locales (versátil, con más
funcionalidades y alias)
conversor de codificaciones de texto entre
configuraciones locales (sofisticado)
traductor del conjunto de caracteres para el japonéstraductor de conjunto de caracterescambia las letras acentuadas por su equivalente sin
acentuarconversor entre formatos de texto entre DOS y Unix:
fromdos(1) y todos(1)conversor de formatos de texto entre Macintosh y
Unix: frommac(1) y tomac(1)Cuadro 11.1: Relación de herramientas de conversión de información en formato texto

11.1.1. Convirtiendo un archivo de texto con iconv
sugerencia
iconv(1) es parte del paquete libc6 y esta siempre disponible en practicamente el cualquier sistema tipo Unix
para la conversión de codificaciones de caracteres.

219 / 257

Guía de referencia de Debian

Puede converitr las codificaciones de los archivos de texto con iconv(1)como es muestra.
$ iconv -f encoding1 -t encoding2 input.txt >output.txt

Los valores de codificaciones para el encaje distinguen entre mayúsculas y minúsculas y pasan por alto «-» y «_». Puede obteneruna relación de las codificaciones reconocidas mediante la orden «iconv -l».
valor de la codificación
ASCII
UTF-8
ISO-8859-1
ISO-8859-2
ISO-8859-15
CP850
CP932
CP936
CP949
CP950
CP1251
CP1252
KOI8-R
ISO-2022-JP
eucJP
Shift-JIS

uso
Código Estándar Americano para el Intercambio de Información,
código de 7 bits sin caracteres acentuados
estándar multilenguaje actual en los sistemas operativos modernos
estándar antiguo de las lenguas occidentales, ASCII+ caracteres
acentuados
antiguo estándar de las lenguas occidentales, ASCII + caracteres
acentuados
antiguo estándar de las lenguas occidentales, ISO-8859-1 con elsímbolo del europágina de códigos 850, caracteres de Microsoft DOS con gráficos paralos lenguajes de la Europa occidental, variante de ISO-8859-1
página de código 932, variante del japonés de Shift-JIS al estilo
Microsoft Windows
página de códigos 936,GB2312, GBK o GB18030 variante para chino
simplificado al estilo Microsoft Windows
página de código 949, EUC-KR o Código Unificado Hangul par
coreano al estilo Microsoft Windows
código de página 950, Big5 variante par chino tradicional al estilo
Microsoft Windows
código de página 1251, codificación del alfabeto cirílico al estilo
Microsoft Windows
código de página 1252, ISO-8859-15 para las lenguas de Europa
occidental al estilo Microsoft Windows
antiguo estándar ruso UNIX para el alfabeto cirílico
estándar de codificación japones para el correo electrónico que solo
utiliza códigos de 7 bit
código de 8 bit del antiguo estándar japonés de UNIX, completamentediferente de Shift-JIS
Apéndice 1 para el japonés JIS X 0208 (consulte CP932)
Cuadro 11.2: Relación de valores de codificación y su uso

nota
Algunas codificaciones son únicamente usadas para la conversión de información y no son usables como valores
locales (Sección 8.1).

Para los conjuntos de caracteres que caben en un único byte como ASCII y ISO-8859, la códificación de caracteres es casi lo
mismo que el conjunto de caracteres.
Para los conjuntos de caracteres con muchos elementos como JIS X 0213 en el japonés o Conjunto de Caracteres Universal(UCS, Unicode, ISO-10646-1) en prácticamente cualquier lenguaje, existen muchos esquemas de codificación y encajan comosecuencias de bytes de datos.
EUC e ISO/IEC 2022 (también conocido como JIS X 0202) para el japonés
UTF-8, UTF-16/UCS-2 y UTF-32/UCS-4 para UnicodeGuía de referencia de Debian

220 / 257

En este caso existe un diferenciación clara entre el conjunto de caracteres y la códificación de caracteres
Algunos proveedores en algunos casos utilizan la página de códigos como sinónimo de la tabla de codificación de caracteres.
nota
Tenga en cuenta que la mayor parte de los sistemas de codificación comparten los mismos códigos con ASCII de
7 bits. Pero existen algunas excepciones. Si esta convirtiendo programas antiguos japoneses en C y datos URL dela codificación conocida como formato shift-JIS a formato UTF-8, utilice «CP932» como nombre de la codificación
en lugar de «shift-JIS» para obtener los resultados correctos: 0x5C → «\» y 0x7E → «~». De otro modo seránconvertidos a los caracteres incorrectos.

sugerencia
recode(1) también puede ser usado y aporta mayor funcionalidad que la combinación de iconv(1), fromdos(1),todos(1), frommac(1) y tomac(1). Para más información, consulte «info recode».

11.1.2. Comprobando que un archivo es UTF-8 con iconv
Puede comprobar si un archivo de texto está codificado en UTF-8 con iconv(1) como se muestra.
$ iconv -f utf8 -t utf8 input.txt >/dev/null || echo ”non-UTF-8 found”

sugerencia
Utilice la opción «--verbose» en el ejemplo anterior para determinar el primer caracter que no pertenece a UTF8.

11.1.3. Convirtiendo los nombres de archivos con iconv
Aquí esta un archivo de órdenes de ejemplo de conversión de los nombres de archivos creados en un sistema operativo antiguo aotro moderno UTF-8 en un único directorio.
#!/bin/sh
ENCDN=iso-8859-1
for x in *;do
mv ”$x” ”$(echo ”$x” | iconv -f $ENCDN -t utf-8)”
done

La variable «$ENCDN» contiene la codificación original utilizada por el nombre de archivo en el sistema operativo antiguo comoen Tabla 11.2.
Para escenarios más complicados, por favor, monte el sistema de archivos (p. ej. la partición del disco) que contiene los nombresde archivos con la codificación adecuada mediante la opción correspondiente de mount(8) (consulte Sección 8.1.3) y copie elcontenido completo a otro sistema de archivos montado como UTF-8 con la orden «cp -a».

11.1.4. Conversión EOL
El formato de archivo de texto, concretamente el código de final de línea (EOL) depende de la plataforma.
,Los porgramas de conversion del formato EOL fromdos(1), todos(1), frommac(1) y tomac(1), son muy útiles. Recode(1)también es muy útil.

221 / 257

Guía de referencia de Debianplataforma
Debian (unix)
MSDOS y Windows
Macintosh

codificaciónde EOLLF
CR-LF
CR

control decimal
^J
^M^J
^M

10
13 10
13

hexadecimal
0A
0D 0A
0D

Cuadro 11.3: Relación de estilos EOL para las diferentes plataformas

nota
Algunos datos del sistema Debian, como las páginas wiki del paquete python-moinmoin utilizan el estilo de
MSDOS usando como EOL la combinación CR-LF. Así es que lo anterior es solo una regla general.

nota
La mayor parte de los editores (p ej.vim, emacs, gedit, …) gestionan de forma transparente el estilo EOL de
MSDOS.

sugerencia
La utilización de «sed -e ’/\r$/!s/$/\r/’» en lugar de todos(1) es mejor si quiere unificar el uso de EOL
de los estilos MSDOS y Unix. (p. ej. tras mezclar dos archivos MSDOS con diff3(1).) Esto es debido a que todos
añade CR a todas las líneas.

11.1.5. Conversión de tabuladores
Existen unow pocos programas especializados en convertir los códigos de tabulación.
función
cambia los tabuladores a espacios
no cambia los tabuladores por
espacios

bsdmainutils«col -x»

coreutils
expand«col -h»

unexpandCuadro 11.4: Relación de las órdenes de conversión de tabuladores de los paquetes bsdmainutils y coreutils
indent(1) perteneciente al paquete indent reformatea completamente a un programa en C..
Los programas de edición como vim y emacs pueden también utilizar la conversión de tabuladores. Por ejemplo con vim, puede
expandir los tabuladores con la secuencia de órdenes «:set expandtab» y «: %retab». Puede deshacer estos cambios conla secuencia de órdenes «:set noexpandtab» y «: %retab!».

11.1.6. Editores con conversión automática
Los editores modernos inteligentes como el programa vim son lo bastante inteligentes y trabajan bien con cualquier sistema de
codificación y formato de archivo. Para mejorar la compatibilidad debería usar la configuración local UTF-8 en una consola con
esta posibilidad.
Un archivo de texto Unix «u-file.txt» almacenado en la antiguo europeo occidental con la codificación latin1 (iso-8859-1)
puede ser editado con vim como se muestra.
$ vim u-file.txt

222 / 257

Guía de referencia de Debian

Esto es debido al mecanismode autodetección de la codificación del archivo en vim que asume por defecto UTF-8 y si falla
asume que será latin1.
Un antiguo archivo de text polaco en Unix, «pu-file.txt», almacenado en la codificación latin2 (iso-8859-2) puede ser
editado con vim como se muestra.
$ vim ’+e ++enc=latin2 pu-file.txt’

Un antiguo fichero de texto Unix en japonés, «ju-file.txt», almacenado con la codificación eucJP puede ser editado por
vim como se muestra.
$ vim ’+e ++enc=eucJP ju-file.txt’

Un archivo de texto MS-Windows antiguo en japonés, «jw-file.txt», almacenado con la codificación shift-JIS (concretamente: CP932) puede ser editado con vim como se muestra.
$ vim ’+e ++enc=CP932 ++ff=dos jw-file.txt’

Cuando se abre un archivo con las opciones «++enc» y «++ff» , la orden de Vim «:w» lo almacena en su formato original
sobreescribiendo el archivo original. También puede guardarlo con un formato y nombre de archivo específico con la orden deVim correspondiente, p. ej. , «:w ++enc=utf8 new.txt».
Por favor para más información sobre el «soporte de texto multibyte« consulte mbyte.txt en la ayuda de vim y Tabla 11.2 paralos valores de configuraciones de la ubicación utilizados por «++enc».
En los programas de la familia de emacs existen funcionalidades equivalentes a las anteriormente descritas.

11.1.7. Extracción de texto planoLos siguiente lee un página web y la convierte en un archivo de texto. Es muy útil copiando configuraciones de la Web o para
aplicarle las herramientas de texto de Unix a la página web como grep(1).
$ w3m -dump https://www.remote-site.com/help-info.html >textfile

De igual forma, puede extraer información en texto plano desde otros formatos como se muestra.
paquetepopularidad

tamañopalabraclave

w3m

V:15, I:187

2837

html→text

html2text

V:3, I:53

243

lynx

V:25, I:344

1948

elinks

V:3, I:20

1654

links

V:3, I:28

2314

links2

V:1, I:125492

catdocantiword
unhtml
odt2txt

V:14, I:155
V:1, I:7
V:0, I:0
V:2, I:40

686
589
40
60

función

conversor de HTML a texto con la orden «w3m
-dump»
html→text
conversor avanzado de HTML a texto (ISO 8859-1)
conversor de HTML a texto con la orden «lynx
html→text-dump»
conversor de HTML a texto con la orden «elinks
html→text-dump»
Conversor de HTML a texto con la orden «links
html→text-dump»
conversor de HTML a texto con la orden «links2
html→text-dump»
MSWord→text,TeX
convierte archivos MSWord a texto plano o TeXMSWord→text,psconvierte archivos MSWord a texto plano o ps
html→text
borra lass etiquetas de marcado de un archivo HTML
odt→texto
conversor de Texto OpenDocument a texto

Cuadro 11.5: Relación de las herramientas para extraer información en texto plano223 / 257

Guía de referencia de Debianpaquetepopularidad

tamañovim-runtime

V:18, I:395

36525

cxref
src2tex

V:0, I:0
V:0, I:0

source-highlight

V:0, I:5

highlight

V:0, I:5

grc

V:0, I:5

pandoc

V:9, I:45

python3-docutils

V:14, I:51

markdown

V:0, I:9

asciidoctor

V:0, I:7

python3-sphinx

V:6, I:24

hugo

V:0, I:5

palabraclave

descripción

Vim MACRO para convertir código fuente a HTMLcon «:source$VIMRUNTIME/syntax/html.vim»
1190
c→htmlconvierte un programa en lenguaje C a latext y HTML622
highlight
convierte varios códigos fuentes a TeX (lenguaje C)
convierte varias códigos fuente a HTML, XHTML,2114
highlight
LaTeX, Texinfo, secuencias de escape de color ANSI yarchivos DocBook con resaltado (C++)
convierte varios códigos fuente a archivos HTML,
1371
highlight
XHTML, RTF, LaTeX, TeX o XSL-FO con resaltado
(C++)
208
texto→color coloreado genérico para todo (Python)
texto→cualquier
194495conversor general «markup« (Haskell)cosa
texto→cualquierformateador de documentos de Texto ReStructurado a
1804
cosa
XML (Python)
Formateador de documentos de texto Markdown en58
texto→html(X)HTML (Perl)texto→cualquierformateador de documentos de texto AsciiDoc a
98
cosa
XML/HTML (Ruby)
texto→cualquierSistema de publicación de documentos basado en
2756
cosa
ReStructured Text (Python)
Sistema de publicación de sitios estáticos basado en
78678 texto→html
Markdown (Go)highlight

Cuadro 11.6: Relación de herramientas para resaltar información en texto plano224 / 257

Guía de referencia de Debian

11.1.8. Resaltando y dándole formato a información en texto plano
Puede resaltar y dar formato a información en texto plano como se muestra.

11.2. datos XML
El Lenguaje de Marcado Extensible (XML) es un lenguaje de marcado para documentos que tengan la información estructurada.
Consulte la información introductoria en XML.COM.
«¿Qué es XML?««¿Qué es XSLT?««¿Qué es XSL-FO?««¿Qué es XLink?«

11.2.1. Conceptos básicos de XML
El código XML tiene la apariencia de HTML. Nos permite obtener diferentes formatos de un documento. Un sistema sencillo de
XML es el paquete docbook-xsl, que utilizamos aquí.
Todo archivo XML comienza con una declaración estándar XML como se muestra.
<?xml version=”1.0” encoding=”UTF-8”?>

La sintaxis fundamental de un elemento XML se marca como se muestra.
<name attribute=”value”>content</name>

Un elemento XML sin contenido se marca de forma resumida como se muestra.
<name attribute=”value” />El «atributo=«valor«» de los ejemplos anteriores son opcionales.
Un comentario en XML se marca como se muestra.
<!-- comment -->Mientras que otros añaden marcas, XML necesita cambios menores al utilizar entidades predefinidas para los siguientes caracteres.
entidad predefinida&quot;&apos;
&lt;
&gt;
&amp;

carácter a ser convertido« : comillas’ : apóstrofe< : menor que> : mayor que& : signo &Cuadro 11.7: Relación de entidades predefinidas para XML

atención«<» y «&» no se pueden utilizar en los atributos y elementos.

225 / 257

Guía de referencia de Debian

nota
Cuando se utilizan entidades definidas por el usuario, p. ej. «&alguna_etiqueta:», la primera definición prevalece sobre las demás. La definición de la entidad se realiza como «<!ENTITY alguna-etiqueta «valor dela entidad«>».

nota
Ya que las marcas XML se realizan de forma coherente con un cierto conjunto de etiquetas (y alguna información
en su contenido y atributos), la conversión a otro XML es un procedimiento trivial utilizando Transformaciones delLenguaje de Estilo Extensibles (XSLT, Extensible Stylesheet Language Transformations).

11.2.2. Procesamiento XML
Existen muchas herramientas para procesar archivos XML como el Lenguaje de Estilos Extensible (XSL, the Extensible Stylesheet
Language).
Principalmente, una vez que tenga un archivo XML bien formado, puede convertirlo en cualquier otro formato utilizando el
Lenguaje de Transformación de Estilos Extensible (XSLT, Extensible Stylesheet Language Transformations .
El Lenguaje de Estilo Extensible para dar Formato a Objetos (XSL-FO, Extensible Stylesheet Language for Formatting Objects)
se supone que es la solución en lo referente a dar formato. El paquete fop es nuevo en el archivo main de Debian debido a su
dependencia del lenguaje de programación Java. Así que el código LaTeX se genera normalmente partiendo de XML y utilizando
XSLT y el sistema LaTeX se utiliza para crear los formatos de archivo imprimibles como DVI, PostScript y PDF.
paquetepopularidad

tamañopalabraclave

docbook-xml

I:403

2134

xml

docbook-xsl

V:13, I:146

14851

xml/xslt

xsltproc

V:16, I:79

162

xslt

xmlto
fop

V:1, I:14
V:0, I:11130
284

xml/xslt
xml/xsl-fo

dblatex

V:2, I:104636

xml/xslt

dbtoepub

V:0, I:037

xml/xslt

descripción
Documento de definición de XML (DTD) para
DocBook
Hojas de estilos XSL para procesar documetnos XML
DocBook a diferentes formatos de salida con XSLT
procesador de línea de órdenes XSLT (XML → XML,
HTML, texto plano, etc.)
conversor de XML a cualquier cosa con XSLT
convierte archivos XML Docbook a PDF
convierte archivos Docbook adocumentos DVI,
PostScript, PDF con XSLT
conversor DocBook XML a .epub

Cuadro 11.8: Relación de herramientas XML
Ya que XML es un subconjunto del Lenguaje Estándar de Marcas Generalizado (SGML), puede ser procesado por cualquier
herramienta para SGML, como Lenguaje de Especificación y Semantica de Documentos de Estilo (DSSSL, Document Style
Semantics and Specification Language).
sugerencia
Algunas veces es práctico leer directamente archivos XML DocBook con yelp de GNOME ya que tiene una
representación de imágenes en X decente.

11.2.3. La extracción de información XML
Puedes extraer los datos HTML o XML de otros formatos utilizando los siguientes.

226 / 257

Guía de referencia de Debianpaquetepopularidad

tamañopalabraclave

openjade

V:1, I:26

1061

dsssl

docbook-dsssl

V:0, I:132605

xml/dsssl

docbook-utils

V:0, I:9287

xml/dsssl

sgml2x

V:0, I:090

SGML/dsssl

descripción
ISO/IEC 10179:1996 procesador de estándar DSSSL(más actualizado)
Hojas de estilo DSSSL para el procesamiento de
documentos XML DocBook a diferentes formatos desalida con DSSSL
utilidades para archivos DocBook incluyendo laconversión a otros formatos (HTML, RTF, PS, man,
PDF) con las órdenes docbook2* con DSSSL
conversor de SGML y XML usando hojas de estilos de
DSSSL

Cuadro 11.9: Relación de herramientas DSSSL

paquetepopularidad

tamañoman2html

V:0, I:1

142

doclifter
texi2html
info2www

I:0
V:0, I:5
V:1, I:2

472
1847
74

wv

V:0, I:4

733

unrtf

V:0, I:3

148

wp2x

V:0, I:0200

palabraclave
páginasman→html
troff→xml
texi→html
info→html

descripción
conversor de páginas man a HTML (soporte CGI)

conversor de troff a DocBook XML
conversor de Texinfo a HTMLconversor de GNU info a HTML (soporte CGI)
conversor de documentos de Microsoft Word a HTML,
MSWord→cualquiera
LaTeX, etc.
rtf→html
conversor de documentos de RTF a HTML, etc
archivos WordPerfect 5.0 y 5.1 a TeX, LaTeX, troff,
WordPerfect→cualquiera
GML y HTML

Cuadro 11.10: Relación de herramientas de extracción de información XML

227 / 257

Guía de referencia de Debian

11.2.4. Análisis de datos XML
Para archivos HTML que no son XML, puede convertirlos a XHTML el cual es una ocurrencia de XML bien formado. XHTML
puede ser procesado por las herramientas XML.
Se puede comprobar la sintaxis de los archivos XML y la bondad de las URL encontradas en ellos.
paquetepopularidad

tamaño función

descripción
herramienta XML en línea de órdenes xmllint(1)xml↔html↔xhtml(comprobación de sintáxi, reformateo, filtrado, …)
xml↔html↔xhtml
comprobador de la sintáxis HTML y reformateador
lintcomprobador de estilo mínimo y sintáctico para HTML
Comprobar
herramientas de mantenimiento de sitios web yel enlacecomprobador de enlaces rápido

libxml2-utils

V:21, I:213

180

tidy
weblint-perl

V:1, I:9
V:0, I:175
32

linklint

V:0, I:0343

Cuadro 11.11: Relación de las herramientas de impresión de calidad de XML
Una vez que se genera el apropiado XML, puede utilizar la tecnología XSLT para extraer información basandose el contexo demarcas, etc.

11.3. Configuración tipográfica
El programa Unix troff, creado por AT&T puede utilizarse para la composición tipográfica simple. Las páginas de man son
generalmente creadas con él.
TeX fue creado por Donald Knuth y es una herramienta de composición tipográfica muy poderoso y el estándar de facto LaTeX
fue creado por Leslie Lamport y permite un acceso a nivel alto a todas la potencia de TeX.
paquetepopularidad

tamañopalabraclave

texlive

V:2, I:35

56(La)TeXgroff

V:2, I:36

20720

troff

descripción
El sistema de composición tipográfica TeX, paraprevisualización e impresión
sistema para dar formato al texto GNU troff

Cuadro 11.12: Relación de las herramientas de composición tipográfica

11.3.1. composición tipográfica roff
Tradicionalmente, roff es el sistema principal de Unix para la composición tipográfica. Consulte roff(7), groff(7), groff(1),grotty(1), troff(1), groff_mdoc(7), groff_man(7), groff_ms(7), groff_me(7), groff_mm(7) y «info groff».
Puede leer o imprimir un buen tutorial y texto de referencia en la macro «-me» instalando el paquete groff en el archivo«/usr/share/doc/groff/».
sugerencia
Con «groff -Tascii -me -» se obtiene una salida en texto plano con códigos de escape ANSI. Si lo quequiere son páginas man con muchos «^H« y «_«, utilice en su lugar«GROFF_NO_SGR=1 groff -Tascii -me-».

sugerencia
Para eliminar los «^H« y «_« del archivo de texto que groff ha generado, fíltrelo con «col -b -x».

Guía de referencia de Debian

228 / 257

11.3.2. TeX/LaTeXEl software TeX Live contiene un sistema completo del sistema TeX. El metapaquete texlive aporta un selección apropiada
de paquetes TeX Live que cumplirá decentemente la mayor parte de las tareas.
Hay disponibles numerosas referencias a TeX y LaTeX.
Cómo teTeX: La Guía Local de Linux-teTeX
tex(1)
latex(1)texdoc(1)texdoctk(1)«El libro de TeX«, de Donald E. Knuth, (Addison-Wesley)«LaTeX - Un Sistema para Preparar un Documento«, de Leslie Lamport, (Addison-Wesley)«El Compendio de LaTeX«, de Goossens, Mittelbach, Samarin, (Addison-Wesley)
Este es el entorno de composición tipográfica más potente. Muchos procesadores de SGML lo utilizan como motor para elprocesamiento de texto. Lyx que está en el paquete lyx y GNU TeXmacs que se encuentra en el paquete texmacs ofrecen un
entorno de edición LaTeX agradable WYSIWYG mientras que muchos utilizan Emacs y Vim como su preferencia como editor.
Existen multitud de recursos disponibles en la red.
La Guía de TEX Live - TEX Live 2007 («/usr/share/doc/texlive-doc-base/english/texlive-en/live.html»)(del paquete texlive-doc-base)
Una Guía Sencilla de Latex/Lyx
Procesando Texto con LaTeX
Cuando los documentos se vuelven grandes, algunas veces TeX puede fallar. Debe incrementar el tamaño de los recursos compartidos en «/etc/texmf/texmf.cnf» (o más concretamente editar «/etc/texmf/texmf.d/95NonPath» y ejecutar
update-texmf(8)) con el fin de solucionarlo.
nota
La fuente TeX de ”The TeXbook” está disponible en www.ctan.org sitio tex-archivo para texbook.tex. Este archivo
contiene la mayoría de las macros necesarias. He oído que puedes procesar este documento con tex(1) despuésde comentar las líneas 7 a 10 y añadir ”input manmac \proofmodefalse”. Se recomienda encarecidamentecomprar este libro (y todos los demás libros de Donald E. Knuth) en lugar de usar la versión en línea, ¡pero lafuente es un gran ejemplo de entrada TeX!

11.3.3. Impresión de una página de manual
Puede imprimir una página manual en PostScript con una de las órdenes que se muestran.
$ man -Tps some_manpage | lpr

11.3.4. Crear una página de man
Aunque es posible escribir una página de man en formato troff plano, existen algunos paquetes que ayudan a crearla.

229 / 257

Guía de referencia de Debianpaquetepopularidad

tamañodocbook-to-man

V:0, I:8

191

help2man

V:0, I:7542

info2man

V:0, I:0134

txt2man

V:0, I:0112

palabradescripción
clave
SGML→página
conversor de SGML DocBook en macros man roffman
text→página
generador de página man automático con --help
man
info→página
conversor de GNU info a POD o páginas man
man
text→página conversor de texto ASCII plano a formato de página
man
man

Cuadro 11.13: Relación de paquetes que ayudan a crear páginas man

11.4. Información imprimible
En el sistema Debian la información imprimible se realizan en formato PostScript. El Sistema de Impresión Común de Unix
(CUPS) utiliza Ghostscript como motor de representación para impresoras que no reconocen PostScript.
Los datos imprimibles también pueden expresarse en formato PDF en el reciente sistema Debian.
Los archivos PDF pueden visualizarse y las entradas de sus formularios pueden rellenarse utilizando herramientas de visualización
GUI como Evince y Okular (véase Sección 7.4); y navegadores modernos como Chromium.
Los archivos PDF pueden editarse con algunas herramientas gráficas como LibreOffice, Scribus y Inkscape (véase Sección 11.6).
sugerencia
Puede leer un archivo PDF con GIMP y convertirlo a formato PNG utilizando una resolución superior a 300 ppp.
Esto se puede utilizar como una imagen de fondo para LibreOffice para producir una impresión alterada deseable
con el mínimo esfuerzo.

11.4.1. Ghostscript
El núcleo de la manipulación es el intérprete de Ghostscript PostScript (PS) el cual genera imágenes de representación.
paqueteghostscript

popularidad
V:161, I:583

ghostscript-x

V:2, I:38

libpoppler102
V:16, I:129
libpoppler-glib8
V:260, I:485
poppler-data

V:134, I:607

tamaño descripción
179
El intérprete GPL Ghostscript de PostScript/PDF
Intérprete Ghostscript de PostScript/PDF GPL - soporte para entornos
87
X
4274
biblioteca de representación de PDF bifurcado del visor PDF xpdf
biblioteca de representación PDF (biblioteca compartida basada en
484
Glib)
biblioteca de representación CMaps para PDF (con soporte CJK:
13086
Adobe-*)

Cuadro 11.14: Relación de intérpretes Ghostscript de PostScript

sugerencia«gs -h» puede mostrar la configuración de Ghostscript.

230 / 257

Guía de referencia de Debian

11.4.2. Mezcla de dos archivos PS o PDF
Puede mezclar dos archivos PostScript (PS) o Formato de Documentos Portable (PDF, Portable Document Format ) utilizando laorden gs(1) de Ghostscript.
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=bla.ps -f foo1.ps foo2.ps$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=bla.pdf -f foo1.pdf foo2.pdf

nota
El formato PDF, el cual se usa de forma habitual como un formato de impresión multiplatafoma, es en su esencia
un formato PS comprimido con algunas funcionalidades y extensiones adicionales.

sugerencia
Para la manipulación de documentos PostScript desde la línea de órdenes existen órdenes como psmerge(1) yotras que pertenecen al paquete psutils package. pdftk(1) del paquete pdftk se utiliza para la manipulaciónde documentos PDF.

11.4.3. Utilidades de impresión
Los siguienetes paquetes contienen utilidades para la impresión que considero importantes.
palabraclave
pdf→ps,texto,
…
ps→ps
ps→ps
texto→ps,
html, rtf

paquetepopularidad

tamañopoppler-utils

V:152, I:471

728

psutilsposterV:4, I:67
V:0, I:3

219
57

enscript

V:1, I:14

2130

a2ps

V:0, I:10

3979

texto→ps

pdftk

I:37

28

pdf→pdf

html2ps
gnuhtml2latex

V:0, I:2
V:0, I:0261
27

html→pshtml→latex

latex2rtf

V:0, I:4495

latex→rtf

ps2eps

V:2, I:4295

ps→epse2ps

V:0, I:0109

texto→ps

impose+V:0, I:0

118

ps→ps

trueprint

V:0, I:0

149

texto→ps

pdf2svg

V:0, I:332

pdf→svg

pdftoipe

V:0, I:065

pdf→ipe

descripción
Utilidades PDF : pdftops, pdfinfo, pdfimages,
pdftotext, pdffonts
herramientas de conversión de documentos PostScript
crea póster grandes de páginas PostScript
convierte texto ASCII a PostScript, HTML, RTF o una
impresión bonita
conversor de «cualquier formato a PostScript« e
impresión bonita
herramienta de conversión de documentos PDF:
pdftk
conversor de HTML a PostScript
conversor de html a latex
conversor de documentos LaTeX a RTF la cual puede
ser leído por MS Word
conversor de PostScript a EPS (PostScript
encapsulado)
conversor de texto a PostScript con soporte a la
codificación japonésutilidades PostScript
imprime bien muchos códigos fuente (C, C++, Java,
Pascal, Perl, Pike, Sh y Verilog) a PostScript (lenguajeC).
conversor de PDF al formato gráficos de vector
escalable (Scalable vector graphics)
conversor de PDF a formato XML IPE

Cuadro 11.15: Relación de utilidades para la impresión231 / 257

Guía de referencia de Debian

11.4.4. Imprimiendo con CUPS
Tanto las órdenes de lp(1) y lpr(1) existen en Sistema de Impresión Común de Unix (CUPS) que proporciona opciones personalizadas para la impresión.
Puede imprimir tres copias del archivo correspondiente utilizando las siguientes órdenes.
$ lp -n 3 -o Collate=True filename$ lpr -#3 -o Collate=True filename

Puede personalizar las impresiones mediante opciones como «-o number-up=2», «-o page-set=even», «-o page-set=odd«-o scaling=200», «-o natural-scaling=200», etc., según consta en Impresión con línea de órdenes y sus opciones.

11.5. La conversión de los datos de correo
Considero importantes los siguientes paquetes de conversión de datos de correo.
paquetepopularidad

tamañosharutils

V:2, I:361415

palabra
clave
mail

mpack

V:1, I:11

108

MIME

tnef

V:0, I:6110

ms-tnef

uudeview

V:0, I:3

105

mail

descripción
shar(1), unshar(1), uuencode(1), uudecode(1)codifica y decodifica los mensajes MIME: mpack(1) ymunpack(1)desempaca los archivos adjuntos MIME del tipo
«application/ms-tnef« que es un formato propio deMicrosoftcodifica y decodifica los siguientes formatos:
uuencode, xxencode, BASE64, quoted printable y
BinHexCuadro 11.16: Relación de paquetes que ayudan a la conversión de datos de correo

sugerencia
Se puede utilizar un servidor del Protocolo de Acceso a Mensajes de Internet versión 4 (IMAP4) para obtener loscorreos de un sistema de correo propietario siempre que el cliente permita configurar el servidor de correo IMAP4.

11.5.1. Fundamentos de información de correo
La información de correo (SMTP) deben utilizar 7 bits. Así los datos binarios y los de texto de 8 bits se codifican en formato de
7 bits con Multipurpose Internet Mail Extensions (MIME) y la selección del juego de caracteres (ver Tabla 11.2).
El formato de almacenamiento estándar de correo es mbox según RFC2822 (actualizado por el RFC822). Consulte mbox(5) (esproporcionado por el paquete mutt).

En las lenguas europeas normalmente se utiliza en el correo la «Codificación-para-Tranferir-Contenido:quoted-princon el juego de caracteres ISO-8859-1 ya que no existen muchos de los caracteres de 8 bits. SI el texto europeo esta codificado
en UTF-8, «Codificación-para-Transferir-Contenido: quoted-printable» es usado como la mayor partede la información en 7 bits.
En japonés el tradicional «Content-Type: text/plain; charset=ISO-2022-JP» es normalmente utilizado en elcorreo ya que mantiene el texto en 7 bits. Pero los antiguos sistemas Microsoft puede enviar información en Shift-JIS sin la
declaración correspondiente. Si el texto japonés esta codificado en UTF-8 Base64 es como utilizar información de 8 bits. Lo que
ocurre en otros lenguajes asiáticos es parecido.

232 / 257

Guía de referencia de Debiannota
Si su información de correo no Unix se accede desde un cliente que no es de Debian, con soporte de IMAP4,
puede moverlo desplegando su propio servidor IMAP4.

nota
Si utiliza otros formatos de almacenamiento de correo, moverlos al formato mbox es un buen comienzo. Un clienteversátil como mutt(1) puede ser útil para ello.

Puede partir el contenido del buzón de correo en mensajes utilizando procmail(1) y formail(1).
Cada mensaje de correo se puede desempaquetar utilizando munpack(1) del paquete mpack (u otra herramienta especiaizada)para obtener el contenido codificado con MIME.

11.6. Herramientas para información gráfica
Aunque existen programas GUI muy potentes como gimp(1), las herramientas en línea de órdenes como imagemagick(1) son
muy útiles para automatizar la manipulación de imágenes por medio de archivos de órdenes.
El formato de facto de los archivos de imágenes en cámaras digitales es Formato de Archivo de Imagen Intercambiable (EXIF, Exchangeable Image File Format) que se corresponde con el formato de archivo de imágenes JPEGcon etiquetas de metainformación
adicionales. Puede contener información como la fecha, la hora y la configuración de la cámara.
La patente de compresión de datos sin pérdida Lempel-Ziv-Welch (LZW) ha expirado. Las utilidades del Formato de Intercambio
de Gráficos (GIF, Graphics Interchange Format), que utiliza el método de compresión LZW, están ahora disponibles libremente
en el sistema Debian.
sugerencia
Cualquier cámara digital o escáner con un medio de grabación extraible interactua con Linux a través de lectoresde almacenamiento USB ya que cumple con el las reglas del Sistema de archivos para Cámaras y utiliza el sistemade archivos FAT. Consulte Sección 10.1.7.

11.6.1. Herramientas gráficas de datos (meta paquete)
Los siguientes meta paquetes son buenos puntos de partida para buscar herramientas de datos gráficos utilizando aptitude(8).
”Resumen de paquetes para los mantenedores de Debian PhotoTools” puede ser otro punto de partida.
tamañopalabraclave

descripción

design-desktop-graphics
I:013svg, jpeg, …

meta paquete para diseñadores gráficos

education-graphics
I:030

svg, jpeg, …

meta paquete para la enseñanza de gráficos y artepictórico.

open-font-design-toolkit
I:09ttf, ps, …

metapaquete para el diseño de tipos de letra abiertos

paquetepopularidad

Cuadro 11.17: Lista de herramientas de datos gráficos (meta paquete)

sugerencia
Busque más herramientras de imágenes utilizando«~Gworks-with::image» (consulte Sección 2.2.6).

aptitude(8)

con

la

expresión

regular233 / 257

Guía de referencia de Debian

11.6.2. Herramientas de datos gráficos (GUI)Me llamaron la atención los siguientes paquetes para las herramientas de organización, edición y conversión de datos gráficosGUI.
paquetepopularidad

tamañogimp

V:50, I:252

19304

xsane

V:12, I:144

2339

scribus

V:1, I:16

31345

V:72, I:430

10312

inkscape

V:15, I:112

99800

dia

V:2, I:22

3741

xfig

V:0, I:11

7849

gocr
eog
gthumbgeeqieshotwell
gwenview
kameradigikamdarktablehuginlibrecad
freecad

V:0, I:7
V:64, I:277
V:3, I:16
V:4, I:15
V:17, I:255
V:33, I:106
I:105
V:1, I:9
V:4, I:13
V:0, I:8
V:1, I:15
I:18

540
7770
5032
2522
6263
11755
998
293
30554
5208
8963
36

blender

V:3, I:28

84492

mm3d

V:0, I:0

3881

fontforge

V:0, I:63993

xgridfit

V:0, I:0806

libreoffice-draw

palabradescripción
clave
imagenGNU GIMP Programa de Manipulación de Imágenes(bitmap)
imagenInterfaz GTKbasado en X11 para SANE (Acceso(bitmap)
inmediato y fácil a escáner)ps/pdf/SVG/
Scribus editor de documentos…
imágenLibreOffice office suite - dibujo(vector)imágeneditor SVG (Scalable Vector Graphics)(vector)imágeneditor de diagramas (Gtk)(vector)imágenfacilidad para la creación interactiva de figuras en X11(vector)imágen→texto software libre OCR
imágen(Exif) programa visor de gráficos «Eye of GNOME«
imágen(Exif) visor y navegador de imágenes (GNOME)
imágen(Exif) visor de imágenes utilizando GTK
imágen(Exif) organizador de fotos digital (GNOME)
imágen(Exif) visor de imágenes (KDE)
imágen(Exif) aplicaciones KDE para soporte de cámaras digitales
imágen(Exif) aplicación para la gestión de fotos digitales para KDE
imágen(Exif) mesa de luz y cuarto oscuro virtuales para fotógrafos
imágen(Exif) agrupador de fotografías panorámicas
DXF, ...
Editor de datos CAD en 2D
DXF, ...
Editor de datos CAD en 3D
blend, TIFF,
editor de animaciones 3D etc
VRML, …
ms3d, obj,
editor OpenGL de modelado 3D
dxf, …
ttf, ps, …
editor de tipos de letra PS, TrueType y OpenTypeprogramas para la ajuste e interpolación (gridfitting yttf
hinting) de tipos de letra TrueType

Cuadro 11.18: Lista de herramientas de datos gráficos (GUI)11.6.3. Herramientas de datos gráficos (CLI)
Me llamaron la atención los siguientes paquetes para las herramientas de conversión, edición y organización de datos gráficos
CLI.

11.7. Conversiones de información variadas
Existen otros programas para la conversión entre datos. Los siguientes paquetes llamaron mi atención al usar aptitude(8) conla expresión regular «~Guse::converting» (consulte Sección 2.2.6).
Puede extraer la información de formato RPM como se muestra.

234 / 257

Guía de referencia de Debianpaquetepopularidad

tamañoimagemagick

I:317

74

graphicsmagick

V:1, I:115565

netpbm

V:28, I:326

8526

V:0, I:2

191

icoutils

V:7, I:50

221

pstoedit

V:2, I:52

1011

libwmf-bin

V:7, I:119

151

fig2sxd

V:0, I:0151

unpaper

V:2, I:17

412

tesseract-ocr

V:7, I:33

2228

tesseract-ocr-eng
V:7, I:34

4032

ocrad

V:0, I:3

587

exif

V:2, I:42

339

exiv2

V:2, I:27

275

exiftran

V:1, I:1469

exiftags

V:0, I:3292

exifprobe

V:0, I:3

499

dcraw

V:1, I:12583

findimagedupes

V:0, I:177

ale

V:0, I:0839

imageindex

V:0, I:1

145

outguessjpegoptim
optipngpngquant

V:0, I:1
V:0, I:7
V:3, I:43
V:0, I:9

230
59
213
61

libheif-examples

palabraclave
imagen(bitmap)
imagen(bitmap)
imagen(bitmap)

descripción
programa de manipulación de imágenes
programas de manipulación de imágenes(bifurcaciones de imagemagick)herramienta de conversión de gráficosconvertir Formato de archivo de imagen de alta
heif→jpeg(bitmap)
eficiencia (HEIF) a formatos JPEG, PNG o Y4M conel comando heif-convert(1)convierte iconos y cursores MS Windows a y desdepng↔ico(bitmap)
formatos PNG (favicon.ico)
ps/pdf→image(vector)
conversor de archivos PostScript y PDF a SVG
herramientas de conversión de archivos con formato
Windows/imágen(vector)
metafile de Windows (formato de gráficos vectoriales)
convierte archivos XFig a formato Draw de
fig→sxd(vector)
OpenOffice.org
herramienta para el procesado posteriro de páginas
imágen→imágenescaneadas para OCR
software libre OCR basado en el motor OCR
imágen→texto
comercial de HP
motor de información OCR: archivo en inglés
imágen→texto
tesseact-ocr para textos inglesesimágen→texto software libre OCR
utilidad de línea de órdenes para mostrar información
imágen(Exif)
EXIF de archivos JPEG
herramienta de manipulación de metainformación
imágen(Exif)
EXIF/IPTC
imágen(Exif) transforma imágenes de cámaras digitales jpeg
utilidad para leer etiquetas Exif de archivos JPEG de
imágen(Exif)cámaras digitales
imágen(Exif) lee metainformación de imágenes digitales
imágen (crudecodifica imágenes en crudo de cámaras digitales
do)→ppm
imagen→huella busca imágenes duplicadas o parecidas visualmente
fusiona imágenes para aumentar su integridad o crea
imágen→imágen
mosaicos
genera galerias HTML estáticos partiendo un grupo deimagen(Exif)→html
imágenesjpeg,png
herramienta universal esteanográfica
jpeg
optimizar los archivos JPEG
png
optimizar archivos PNG, compresión sin pérdidas
png
optimizar los archivos PNG, compresión con pérdida

Cuadro 11.19: Lista de herramientas de datos gráficos (CLI)

235 / 257

Guía de referencia de Debianpaquetepopularidad

tamañoalien

V:1, I:19

163

freepwing

V:0, I:0424

calibreV:6, I:28

63385

palabradescripción
clave
rpm/tgz→deb conversor entre paquetes externos en paquetes Debianconversor de «Libro Electrónico« (común en Japón) a
EB→EPWING uno único con formato JIS X 4081 (un subconjunto de
EPWING V1)
gestión de bibliotecas y conversor de libros
cualquiera→EPUB
electrónicosCuadro 11.20: Relación de herramientas varias para la conversión de información$ rpm2cpio file.src.rpm | cpio --extract

Guía de referencia de Debian236 / 257

Capítulo 12

Programación
Algunos consejos para quién quiera aprender a programar en el sistema Debian para trazar el código fuente. Aquí están lospaquetes más importantes y los paquetes de documentación más importantes para la programación.
Las referencia en línea está disponible escribiendo by typing «man nombre» tras instalar los paquetes manpages y manpages-dev.
La referencia en línea para las herramientas GNU están disponibles escribiendo «info nombre_de_programa» después deinstalar los paquetes correspondientes de documentación. Pude necesitar incluir los repositorios contrib y non-free ademásdel repositorio main ya que una parte de la documentación GFDL no se cosidera que cumple con DFSG.
Por favor, considera la posibilidad de utilizar las herramientas de los sistemas de lod control de las versiones. Véase Sección 10.5.

aviso
No use«test» como nombre de un archivo ejecutable. «test» es una orden interna del intérprete deórdenes.

atención
Usted puede instalar programas de software directametne compilado de la fuente en «/usr/local» o«/opt» para evitar la colisión con los programas del sistema.

sugerencia
Los ejemplos de código para crear «La canción de 99 botellas de Cerveza« le aportará buenas ideas para pácticamente cualquier lenguaje de programación.

12.1.

Los archivos de órdenes

Un archivo de órdenes es un archivo de texto co el bit de ejecución activado y contiene órdenes con el formato siguiente.
#!/bin/sh... command lines

La primera línea determina cuál es el intérprete de órdenes que se encarga de leer y ejecutar el contenido del archivo.
La lectura de archivos de órdenes es la mejor manera de entender como funciona un sistema tipo Unix. Aquí, doy algunos apuntes
para la programación de archivos de órdenes. Consulte «Errores con el intérprete de órdenes« (https://www.greenend.org.uk/rjk/2001/04/shell.html) para aprender los errores más comunes.
A diferencia del uso interactivo del intérprete de órdenes (consulte Sección 1.5 y Sección 1.6) en los archivos de órdenes se usan
generalmente parámetros, condiciones y bucles.

237 / 257

Guía de referencia de Debian12.1.1.

Compatibilidad del intérprete de órdenes POSIX

Muchos scripts en el sistema pueden ser ejecutados por cualquier shell POSIX (ver Tabla 1.13).
El shell POSIX no interactivo por defecto ”/usr/bin/sh” es un enlace simbólico que apunta a /usr/bin/dash y es
utilizado por muchos programas del sistema.
El shell POSIX interactivo predeterminado es /usr/bin/bash.
Evite escribir archivos de órdenes con particularidades de bash o zs para hacerlo portable entre intérpretes de órdenes POSIX.
Puede comprobaro utilizando checkbashisms(1).
Bien: POSIX
if [ «$foo« = «$bar« ] ; then …
diff -u archivo.c.orig
archivo.c
mkdir /foobar /foobaz
funcname() { …}octal format: «\377»

Mal: bashismif [ «$foo« == «$bar« ] ; then …
diff -u archivo.c{.orig,}
mkdir /foo{bar,baz}function funcname() { …}formato hexadecimal: «\xff»

Cuadro 12.1: Relación de particularidades de bash
La orden «echo» debe utilizarse con cuidado ya que su implementación cambia entre la orden interna y la externa.
Evite utilizar cualquier opción excepto -n».
Evite utilizar secuencias de escape en una cadena ya que su tratamiento varia.
nota
Ya que la opción «-n» no pertenece realmente a la sintáxis POSIX es aceptada normalmente.

sugerencia
Utilice la orden «printf» en vez de la orden «echo» si necesita incluir secuencias de caracteres en las cadenas
de caracteres de salida.

12.1.2.

Parámetros del intérprete de órdenes

Frecuentemente son utilizados por el intérprete de órdenes parámetros especiales
parámetro del intérprete de órdenes
$0
$1
$9
$#
«$*«
«$@«
$?
$$
$!

valor
nombre del archivo de órdenes
primer parámetro del archivo de órdenes
noveno parámetro del archivo de órdenes
parámetro posicionado en el número
«$1 $2 $3 $4 …««$1« «$2« «$3« «$4« …
estado de finalización de la orden más reciente
PID de este archivo de órdenes
PID del trabajo en segundo plano que se ha iniciado más recientemente

Cuadro 12.2: Relación de los parámetros de intérprete de órdenes
Lasexpansiones de parámetros fundamentales que debe recordar son las que se muestran.
Aquí, el símbolo «:» en todos estos operadores es realmente opcional.

238 / 257

Guía de referencia de Debianforma de expresión delparámetro${var:-string}${var:+string}${var:=string}

valor si var esta activado

valor si var no está asignado«$var»«string»«$var»«string»«null»«string» (y ejecuta «var=string»)
echo «string» a stderr (y finalizar con
error)«$var»${var:?string}Cuadro 12.3: Relación de expansiones de parámetros del intérprete de órdenes
con «:» el operador = comprueba que existe y no es nullsin «:» el operador = comprueba unicamente si existe
formulario de sustitución del parámetro${var %suffix}${var % %suffix}${var#prefix}${var##prefix}

resultado
elimina patrón del sufijo más pequeño
elimina el patrón del sufijo más largo
elimina el patrón del prefijo más pequeño
elimina el patrón del prefijo más largo

Cuadro 12.4: Relación de las sustituciones clave de parámetros del intérprete de órdenes

12.1.3.

Condiciones del intérprete de órdenes

Cada comando devuelve un estado de salida que puede usarse para expresioneos condicionales.
Éxito: 0 («Verdadero«)
Error: no 0 («Falso«)nota
En el contexto del intérprete de órdenes «0« es equivalente a «verdadero«, mientras que en contexto de una
condición en C «0« significa «falso«.

nota«[» es el equivalente a la orden test, la cual detemina la expresión condicional de sus parámetros hasta«]».
Algunas expresiones condicionales que es importate recordar son las que se muestran.
«orden && si_éxito_ejecuta_esta_orden_además || true»«orden || si_no_tiene_éxito_ejecuta_esta_orden_además || true»
Un pequeño archivo de órdenes de varias líneas como se muestra
if [ conditional_expression ]; then
if_success_run_this_commandelse
if_not_success_run_this_commandfi

Aquí se añade «|| true» para asegurarnos de que el archivo de órdenes no finaliza en esta línea si el intérprete de órdenes sellama con la bandera «-e».
Los operadores aritméticos de comparación de enteros en la expresión original son «-eq», «-ne», «-lt», «-le», «-gt» y«-ge».

239 / 257

Guía de referencia de Debian

ecuación-e archivo-d archivo-f archivo-w archivo-x archivo
archivo1 -nt archivo2
archivo1 -ot archivo2
archivo1 -ef archivo2

condición que devuelve un verdadero lógico
archivo existe
archivo existe y es un directorio
archivo existe y es un archivo normalarchivo existe y se puede modificararchivo existe y es ejecutablearchivo es más nuevo quearchivo2 (respecto de la modificación)
archivo1 es más viejo que archivo2 (respecto de al modificación)
archivo1 y archivo2 están en el mismo dispositivo y tienen el mismo
número de inodo

Cuadro 12.5: Relación de operadores para comparar archivos en la expresión condicional
ecuación-z cadena_de_caracteres-n cadena_de_caracterescadena_de_caracteres1 =cadena_de_caracteres2
cadena_de_caracteres1 !=cadena_de_caracteres2
cadena_de_caracteres1 <cadena_de_caracteres2
cadena_de_caracteres1 >cadena_de_caracteres2

condición que devuelve un verdadero lógico
la longitud de str es cerola longitud de str no es cerocadena1 y cadena2 son iguales
str1 y str2 no son iguales
cadena1 está antes que cadena2 (depende de la configuración regional)
cadena1 está después de la cadena2 (depende de la configuración local)

Cuadro 12.6: Relación de operadores de comparación de cadenas en expresiones condicionales

12.1.4.

Bucles del intérprete de órdenes

Existen diferentes bucles en el intérprete de órdenes POSIX.
«for x in foo1 foo2 …; do comand0 ; done» asigna secuencialmente elementos de la relación «foo1 foo2…» a la variable «x» y ejecuta «comando».
«while condición ; do comando ; done» repite «comando» mientras «condición» sea verdadero.
«until condición ; do comando ; done» repite «comando» mientras «condición» no sea verdadero.
«break» permite salir del bucle.
«continue» permite continuar con la próxima iteración del bucle.
sugerencia
La iteración sobre números como la del lenguaje C puede realizarse con la utilización de seq(1) como un generadorde «foo1 foo2 …».

sugerencia
Consulta Sección 9.4.9.

12.1.5.

Variables del entorno de shell

Algunas variables del entorno populares para el símbolo del sistema del shell normal pueden no estar disponibles en el entorno
de ejecución de su script.

Guía de referencia de Debian

240 / 257

Para ”$USER”, usar ”$(id -un)”Para ”$UID”, usa ”$(id -u)”Para ”$HOME”, utiliza ”$(getent passwd ”$(id -u)”|cut -d ”:” -f 6)” (esto también funciona en Sección 4.5.2)

12.1.6.

La secuencia de procesamiento de la línea de órdenes

El shell procesa un script aproximadamente como la siguiente secuencia.
el intérprete de órdenes lee la línea
El intérprete de órdenes agrupa como un único elemento la parte de la línea incluida entre «…« o ’…’.
el intérprete de órdenes divide el resto de la línea en elementos como se muestra.
• Espacios en blanco: espacio tabulador <nueva línea>• Metacaracteres: < > | ; & ( )El intérprete de órdenes comprueba si cada elemento es una palabra reservada para adaptar su comportamiento si no esta
incluida entre «…« o ’…’.
• palabras reservadas: if then elif else fi for in while unless do done case esac
el intérprete de órdenes expande los alias si no están incluidos entre «…« o ’…’
El intérprete de órdenes expande las tilde si no están incluidas entre «…« o ’…’.
• «~» → el directorio home del usuario actual• «~usuario» → el directorio home de usuario
el intérprete de órdenes expande los parámetros a sus valores si no están incluidos entre ’…’• parámetro: «$PARAMETER» o «${PARAMETER}»
el intérprete de órdenes expande la sustitución de órdenes si no está incluida entre ’…’• «$( comando )» → la salida de «comando»• « ̀ comandò» → la salida de «comando»

el intérprete de órdenes expande las rutas de nombres que encajan con nombres de archivos si no están incluidas entre «…«o ’…’• * → cualesquier caracteres• ? → un caracter• […] → cualquiera de los caracteres en «…»el intérprete de órdenes busca las órdenes como se muestra y los ejecuta• definición de lafunción• orden interna• archivo ejecutable en «$PATH»
el intérprete de órdenes va a la siguiente línea y repite este proceso de nuevo desde el inicio de la secuencia
Las comillas simples no tienen efecto dentro de comillas dobles.
Si ejecuta «set -x» en el intérprete de órdenes o lo llama con la opción «-x» hace que se impriman todas las órdenes ejecutadas.
Esto puede ser muy útil para la depuración.

241 / 257

Guía de referencia de Debian12.1.7.

Programas útiles para los archivos de órdenes

Para hacer los archivos de órdenes tan portables como sea posible entre sistemas Debian, es una buena idea limitar las utilidadesa aquellos que son proporcionados por los paquetes esenciales.
«aptitude search ~E» relación paquetes esenciales.
«dpkg -L paquete | grep ’/man/man.*/’» relación páginas de manual de las órdenes del paquete paquete.
paquetedashcoreutils
grep
sed
mawk
debianutils
bsdutils
bsdextrautils
moreutils

popularidad
V:884, I:997
V:880, I:999
V:782, I:999
V:790, I:999
V:442, I:997
V:907, I:999
V:519, I:999
V:596, I:713
V:15, I:38

tamaño
191
18307
1266
987
285
224
356
339
231

descripción
Shell compatible con POSIX pequeño y rápido para sh
Utilidades fundamentales GNU
GNU grep, egrep y fgrep
GNU sedpequeño y rápido awk
utilidades varias específicas de Debianutilidades básicas de BSD-Lite 4.4
Herramientas adicionales de 4.4BSD-Liteutilidades adicionales de Unix

Cuadro 12.7: Relación de paquetes que contienen pequeñas utilidades para los archivos de órdenes

sugerencia
Aunque moreutils puede no existir fuera de Debian, proporciona algunos pequeños programas interesantes. El
más notable es sponge(8), que es muy útil cuando desea sobrescribir el archivo original.

Consulta Sección 1.6 para ver un ejemplo.

12.2.

Programación en lenguajes interpretados

Cuando deseas automatizar una tarea en Debian, deberías pprogramarla primero con un lenguaje interpretado. La línea guía parala elección del lenguaje interpretado es:
Utilizadash, si la tarea es sencilla y combina programas CLI con un programa shell.
Utiliza python3, si la tarea no es sencilla y la estás escribiendo desde cero.
Usa perl, tcl, ruby, ... si hay un código existente usando uno de estos lenguajes en Debian que necesita ser retocado para
hacer la tarea.
Si el código resultante es demasiado lento, puede reescribir sólo la parte crítica para la velocidad de ejecución en un lenguaje
compilado y llamarlo desde el lenguaje interpretado.

12.2.1.

Depuración de los códigos del lenguaje interpretado

La mayoría de los intérpretes ofrecen funciones básicas de comprobación sintáctica y rastreo de código.
“dash -n script.sh”- Comprobación de sintaxis de un script de Shell“dash -x script.sh”- Trazar un script de Shell”python -m py_compile script.py” - Comprobación sintáctica de un script Python

242 / 257

Guía de referencia de Debianpaquete
dash
bash
mawk
gawk

popularidad
V:884, I:997
V:838, I:999
V:442, I:997
V:285, I:349

tamaño
191
7175
285
2906

perl

V:707, I:989

673

libterm-readline-gnu-perl
V:2, I:29

380

libreply-perl
V:0, I:0
libdevel-repl-perl
V:0, I:0

171

documentación
sh: shell pequeño y rápido compatible con POSIX para sh
sh: ”info bash” proporcionado por el paquete bash-doc
AWK: pequeño y rápido awk
AWK: ”info gawk” proporcionado por gawk-doc
Perl: perl(1) y páginas html proporcionadas por perl-doc yperl-doc-html
Extensión de Perl para la biblioteca GNU ReadLine/History Library:perlsh(1)REPL para Perl: reply(1)237

REPL para Perl: re.pl(1)python3

V:718, I:953

81

tcl

V:25, I:218

21tk

V:20, I:211

21

ruby

V:86, I:208

29

Python: python3(1) y páginas html proporcionadas por
python3-doc
Tcl: tcl(3) páginas de manual detalladas proporcionadas por
tcl-doc
Tk: tk(3) y páginas detalladas del manual proporcionadas por
tk-docRuby: ruby(1), erb(1), irb(1), rdoc(1), ri(1)Cuadro 12.8: Lista de paquetes relacionados con el intérprete”python -mtrace --trace script.py” - Rastrear un script de Python”perl -I ../libpath -c script.pl” - Comprobación sintáctica de un script Perl
“perl -d:Trace script.pl”- Trazar un script de Perl
Para probar el código para dash, prueba Sección 9.1.4 que se acomoda a un entorno interactivo tipo bash.
Para probar código para perl, prueba el entorno REPL para Perl que acomoda Python-like REPL (=READ + EVAL + PRINT+ LOOP) entorno para Perl.

12.2.2.

Programa GUI con el script de shell

El script de shell se puede mejorar para crear un programa GUI atractivo. El truco es usar uno de los llamados programas de
diálogo en lugar de una interacción ligera usando los comandosecho y read.
paquetepopularidad

x11-utils

V:192, I:566

whiptail

V:284, I:996

dialog

V:11, I:99

zenityV:76, I:363

ssft

V:0, I:0

gettext

V:56, I:259

tamaño descripción
xmessage(1): muestra un mensaje o realiza un pregunta en una
651
ventana(X)muestra cuadros de diálogo de fácil uso para los archivos de órdenes
56(newt)
muestra cuadros de diálogo de fácil uso para los archivos de órdenes
1227(ncurses)183
mostrar cuadros de diálogo gráficos a partir de scripts de shell (GTK)
Herramienta de interfaz de archivo de órdenes (cubierto con zenity,
75
kdialog y dialog con gettext)
5818«/usr/bin/gettext.sh»: traduce un mensajes
Cuadro 12.9: Lista de programas de diálogo

Aquí hay un ejemplo del programa GUI para demostrar lo fácil que es sólo con un script de shell.
Este script usa zenity para seleccionar un archivo (predeterminado /etc/motd) y mostrarlo.
El lanzador GUI para este script se puede crear siguiendo Sección 9.4.10.

Guía de referencia de Debian

243 / 257#!/bin/sh -e# Copyright (C) 2021 Osamu Aoki <osamu@debian.org>, Public Domain# vim:set sw=2 sts=2 et:
DATA_FILE=$(zenity --file-selection --filename=”/etc/motd” --title=”Select a file to check ←”) || \( echo ”E: File selection error” >&2 ; exit 1 )# Check size of archiveif ( file -ib ”$DATA_FILE” | grep -qe ’^text/’ ) ; thenzenity --info --title=”Check file: $DATA_FILE” --width 640 --height 400 \--text=”$(head -n 20 ”$DATA_FILE”)”
else
zenity --info --title=”Check file: $DATA_FILE” --width 640 --height 400 \--text=”The data is MIME=$(file -ib ”$DATA_FILE”)”
fi

Este tipo de aproximación al programa GUI con el shell script es útil sólo para casos de elección simple. Si va a escribir cualquierprograma con complejidades, por favor considera escribirlo en una plataforma más capaz.

12.2.3.

Acciones personalizadas para el archivador GUI

Los programas archivadores GUI pueden ampliarse para realizar algunas acciones populares en archivos seleccionados utilizando paquetes de extensión adicionales. También pueden realizar acciones personalizadas muy específicas añadiendo sus scripts
específicos.
Para GNOME, véase NautilusScriptsHowto.
Para KDE, consulta Creación de menús de servicio Dolphin.
Para Xfce, consulta Thunar - Acciones personalizadas y https://help.ubuntu.com/community/ThunarCustomActions.
Para LXDE, consulta Acciones personalizadas.

12.2.4.

Locura de pequeños archivos de órdenes en Perl

Para procesar los datos, sh necesita generar subprocesos que ejecuten cut, grep, sed, etc., es lento. Por otro lado, perl tiene
capacidades internas para procesar datos, y es rápido. Así que muchos scripts de mantenimiento del sistema en Debian usan perl.
Pensemos en seguir un fragmento de la secuencia de comandos AWK de una sola línea y sus equivalentes en Perl.
awk ’($2==”1957”) { print $3 }’ |Esto es equivalente a cualquiera de las siguientes líneas.
perl -ne ’@f=split; if ($f[1] eq ”1957”) { print ”$f[2]\n”}’ |perl -ne ’if ((@f=split)[1] eq ”1957”) { print ”$f[2]\n”}’ |perl -ne ’@f=split; print $f[2] if ( $f[1]==1957 )’ |perl -lane ’print $F[2] if $F[1] eq ”1957”’ |perl -lane ’print$F[2]if$F[1]eq+1957’ |El último es retorcido. Utiliza algunas de las funcionalidades avanzadas de Perl.
El espacio en blanco es opcional.

244 / 257

Guía de referencia de Debian

La conversión entre números y cadenas se realiza de forma automática.
Trucos de ejecución de Perl mediante las opciones de la línea de comandos: perlrun(1)Variables especiales de Perl: perlvar(1)Esta flexibilidad es el punto fuerte de Perl. Al mismo tiempo, esto nos permite crear códigos crípticos y enredados. Así que ten
cuidado.

12.3.

Codificación en lenguajes compiladospaquetegcc

popularidad
V:167, I:550

libc6-dev

V:248, I:567

g++
V:56, I:501
libstdc++-10-dev
V:14, I:165
cpp
V:334, I:727
gettext
V:56, I:259
glade
V:0, I:5
valac
V:0, I:4
flex
V:7, I:73
bison
V:7, I:80
susv2
I:0
susv3
I:0
susv4
I:0
golang
I:20
rustc
V:3, I:14
haskell-platform
I:1
gfortranfpc

V:6, I:62
I:2

tamaño descripción
36
Compilador de GNU C
Biblioteca en C de GNU: Bibliotecas de desarrollo y archivos de12053
cabecera
13
Compilador GNU C++
17537

GNU Standard C++ Library v3 (archivos de desarrollo)

18
5818
1204
725
1243
3116
16
16
16
11
8860

Preprocesador GNU C
Utilidades de internacionalización GNU
Desarrollador de interfaces de usuario GTK
Lenguaje similar a C# para el sistema GObject
LEX-compatible generador analizador de léxico rápidoYACC-compatible generador de analizador
cumple «La Especificación Única de UNIX v2«
cumple «La Especificación Única de UNIX v3«
buscar ”Las especificaciones únicas de UNIX v4”
Compilador del lenguaje de programación Go
Lenguaje de programación de sistemas Rust

12

Bibliotecas y herramientas estándarHaskell

15
103

Compilador de GNU Fortran 95
Pascal gratis

Cuadro 12.10: Lista de paquetes relacionados con el compilador
Aquí, Sección 12.3.3 y Sección 12.3.4 se incluyen para indicar cómo se puede escribir un programa similar a un compilador en
lenguaje C compilando una descripción de nivel superior en lenguaje C.

12.3.1.

C

Puede configurar su entorno para la compilación de programas escritos en el lenguaje de programación C como se muestra.
# apt-get install glibc-doc manpages-dev libc6-dev gcc build-essential

El paquete libc6-dev, a saber, la biblioteca GNU C, aporta la biblioteca estándar de C que es un conujnto de archivos decabecera y rutinas de biblioteca utilizadas por el lenguaje de programación C.
Consulte las referencias siguientes sobre C.
«info libc» (referencia de las funciones de la biblioteca de C)
gcc(1) y «info gcc»
nombre_de_cada_función_de_la_biblioteca_de_C(3)
Kernighan & Ritchie, «The C Programming Language«, 2nd edición (Prentice Hall)

245 / 257

Guía de referencia de Debian

12.3.2.

Programa sencillo en C (gcc)

Se puede crear un ejecutable «ejecutable_de_ejemplo» utilizando la biblioteca «libm» mediante este sencillo ejemplo.
$ cat > example.c << EOF#include <stdio.h>#include <math.h>#include <string.h>
int main(int argc, char **argv, char **envp){
double x;char y[11];x=sqrt(argc+7.5);
strncpy(y, argv[0], 10); /* prevent buffer overflow */y[10] = ’\0’; /* fill to make sure string ends with ’\0’ */printf(” %5i, %5.3f, %10s, %10s\n”, argc, x, y, argv[1]);return 0;}
EOF$ gcc -Wall -g -o run_example example.c -lm$ ./run_example
1, 2.915, ./run_exam,(null)$ ./run_example 1234567890qwerty
2, 3.082, ./run_exam, 1234567890qwerty

Aquí, se necesita «-lm» para enlazar la biblioteca «/usr/lib/libm.so» del paquete libc6 para utilizar la función sqrt(3).
La biblioteca real está ubicada en «/lib/» con el nombre de archivo «libm.so.6», el cual es un enlace simbólico a «libm-2.7.so».
Mire el último elemento de la salida. Tiene incluso más de 10 caracteres a pesar de tener « %10s».
La utilización de operaciones de punteros sin comprobar los límites, como ocurre con sprintf(3) y strcpy(3), no se utilizan
para evitar el desbordamiento del buffer que puede provocar problemas desconocidos. En su lugar se utilizan snprintf(3) ystrncpy(3).

12.3.3.

Flex —una mejora de Lex

Flex es un generador rápido de analizadores léxicos compatible con Lex.
Puede encontrar un tutuorial de flex(1) en «info flex».
Se pueden encontrar muchos ejemplos sencillos en ”/usr/share/doc/flex/examples/”. 1

12.3.4.

Bison —una mejora de Yacc

Los paquetes que proporcionan un mejor y compatible Yacc son el analizador sintáctico LR o el analizador sintáctico LALR de
Debian.
paquetebison
byacc
btyaccpopularidad
V:7, I:80
V:0, I:4
V:0, I:0

tamaño
3116
258
243

descripción
Analizador sintáctico GNU LALR
Analizador sintáctico LALR Berkeley
analizador sintáctico hacia atrás basado en byacc

Cuadro 12.11: Relación de analizadores sintácticos LALR compatibles con Yacc
Puede encontrar un tutorial de bison(1) en «info bison».
1Es posible que se necesiten algunos ajustes para que funcionen con el sistema actual.

246 / 257

Guía de referencia de Debian

Puede que sea necesario que proporcione su propio «main()» y «yyerror()». El método «main()» invoca «yyparse()»el cual invoca «yylex()», que normalmente se crea con Flex.
He aquí un ejemplo para crear un sencillo programa de calculadora de terminal.
Vamos a crear example.y:/* calculator source for bison */%{#include <stdio.h>
extern int yylex(void);
extern int yyerror(char *);%}/* declare tokens */%token NUMBER%token OP_ADD OP_SUB OP_MUL OP_RGT OP_LFT OP_EQU%%
calc:| calc exp OP_EQU;
exp: factor| exp OP_ADD factor| exp OP_SUB factor;{ printf(”Y: RESULT = %d\n”, $2); }{ $$ = $1 + $3; }{ $$ = $1 - $3; }factor: term
| factor OP_MUL term { $$ = $1 * $3; };term: NUMBER| OP_LFT exp OP_RGT;%%{ $$ = $2; }int main(int argc, char **argv){
yyparse();}int yyerror(char *s){
fprintf(stderr, ”error: ’ %s’\n”, s);}Vamos a crear example.l:/* calculator source for flex */%{#include ”example.tab.h”%}%%[0-9]+ { printf(”L: NUMBER = %s\n”, yytext); yylval = atoi(yytext); return NUMBER; }”+”{ printf(”L: OP_ADD\n”); return OP_ADD; }”-”{ printf(”L: OP_SUB\n”); return OP_SUB; }”*”{ printf(”L: OP_MUL\n”); return OP_MUL; }”(”{ printf(”L: OP_LFT\n”); return OP_LFT; }”)”{ printf(”L: OP_RGT\n”); return OP_RGT; }”=”{ printf(”L: OP_EQU\n”); return OP_EQU; }Guía de referencia de Debian247 / 257

”exit” { printf(”L: exit\n”);
return YYEOF; } /* YYEOF = 0 */.
{ /* ignore all other */ }%%A continuación, ejecute lo siguiente desde el símbolo del sistema para probar esto:$ bison -d example.y$ flex example.l$ gcc -lfl example.tab.c lex.yy.c -o example$ ./example
1 + 2 * ( 3 + 1 ) =L: NUMBER = 1
L: OP_ADD
L: NUMBER = 2
L: OP_MUL
L: OP_LFT
L: NUMBER = 3
L: OP_ADD
L: NUMBER = 1
L: OP_RGT
L: OP_EQU
Y: RESULT = 9exit
L: exit

12.4.

Herramientas de análisis estático de memoria

Lint herramientas similares pueden ayudar a análisis de código estático automático.
Indent como herramientas pueden ayudar a las revisiones humanas de código reformateando los códigos fuente de forma coherente.
Ctags como herramientas pueden ayudar a las revisiones humanas de código mediante la generación de un archivo de índice (oetiqueta) de los nombres que se encuentran en los códigos fuente.
sugerencia
Configurar tu editor favorito (emacs o vim) para usar plugins asíncronos del motor lint ayuda a tu escritura decódigo. Estos plugins se están volviendo muy potentes aprovechando Protocolo de servidor de idiomas. Dadoque se están moviendo rápidamente, usar su código upstream en lugar del paquete Debian puede ser una buena
opción.

12.5.

Depuración

La depuración es una parte importante de las actividades de programación. Saber cómo depurar programas lo convierte en unbuen usuario de Debian que puede producir informes de errores significativos.

12.5.1.

Fundamentos de gdb

El principal depurador en Debian es gdb(1) el cual permite inspeccionar un programa mientras se ejecuta.
Instalemo gdb y otros programas relevantes com se muestra.

248 / 257

Guía de referencia de Debianpaquetevim-alevim-syntastic
elpa-flycheckelpa-relint
cppcheck-gui
shellcheckpyflakes3
pylintpopularidad
I:0
I:3
V:0, I:1
V:0, I:0
V:0, I:1
V:2, I:13
V:2, I:15
V:4, I:20

tamaño
2591
1379
808
147
7224
18987
20
2018

perl

V:707, I:989

673

rubocopclang-tidy

V:0, I:0
V:2, I:113247
21

splint

V:0, I:22320

flawfinder

V:0, I:0

205

black
perltidy
indentastylebcpp
xmlindent
globalexuberant-ctags

V:3, I:13
V:0, I:4
V:0, I:7
V:0, I:2
V:0, I:0
V:0, I:1
V:0, I:2

660
2493
431
785
111
53
1908

V:2, I:20

341

V:1, I:11

3386

universal-ctags

descripción
Motor asíncrono Lint para Vim 8 y NeoVim
Trucos de comprobación sintáctica para vim
moderna comprobación sintáctica sobre la marcha para Emacs
Buscador de errores regexp de Emacs Lisp
herramientra para el análisis de código C/C++ (GUI)herramienta útil para scripts de shell
Verificado pasivo de programas Python 3comprobador de código estático Python
intérprete con comprobador de código estático interno:
B::Lint(3perl)
Analizador de código estático Ruby
Herramienta de verificación de formato de regla C++ basada en Clangherramienta para la comprobación estática de errores de programación
en C
herramienta que examina código fuente en C/C++ para encontrar
debilidades de seguridad
Formateador de código Python agresivo
Indentador y reformateador de scripts de Perl
Programa de formateo del código fuente en lenguaje C
Indentador de código fuente para C, C++, Objective-C, C# y Java
Embellecer C(++)
reformateador del flujo XML
Herramientas de búsqueda y exploración de código fuente
Crea un índice de archivo de etiquetas de definiciones del código
fuenteCrea un índice de archivo de etiquetas de definiciones del código
fuenteCuadro 12.12: Relación de las herramientras para el análisis de código estático

paquetegdb
ddd

popularidad
V:14, I:96
V:0, I:7

tamaño documentación
11637 «info gdb» proporcionado por gdb-doc
4105«info ddd» proporcionado por ddd-doc

Cuadro 12.13: Lista de paquetes de la depuración

249 / 257

Guía de referencia de Debian# apt-get install gdb gdb-doc build-essential devscripts

Se puede encontrar un buen tutorial de gdb:
“info gdb”
“Depuración con GDB”en /usr/share/doc/gdb-doc/html/gdb/index.html“tutorial en la web”
Aquí hay un ejemplo simple del uso de gdb(1) en un ”programa” compilado con la opción ”-g” para generar información dedepuración.
$ gdb program(gdb) b 1(gdb) run args(gdb) next...
(gdb) step...
(gdb) p parm...
(gdb) p parm=12...
(gdb) quit

# set break point at line 1# run program with args
# next line
# step forward# print parm# set value to 12

sugerencia
Existen abreviaturas para la mayor parte de las órdenes de gdb(1). La expansión del tabulador funciona de lamisma manera que en el intérprete de órdenes.

12.5.2.

Depurando un paquete DebianDado que todos los archivos binarios instalados deben eliminarse en el sistema Debian de forma predeterminada, la mayoríade los símbolos de depuración se eliminan en el paquete normal. Para depurar paquetes Debian con gdb(1), se deben instalar
paquetes *-dbgsym (p. ej., coreutils-dbgsym en el caso de coreutils). Los paquetes fuente generan automáticamentepaquetes *-dbgsym junto con paquetes binarios normales y esos paquetes de depuración se colocan por separado en el archivo
debian-debug. Consulte los artículos en Debian Wiki para obtener más información.
Si un paquete que se va a depurar no proporciona su paquete *-dbgsym, debe instalarlo después de reconstruirlo de la siguiente
manera.
$ mkdir /path/new ; cd /path/new$ sudo apt-get update$ sudo apt-get dist-upgrade$ sudo apt-get install fakeroot devscripts build-essential$ apt-get source package_name$ cd package_name*$ sudo apt-get build-dep ./Si lo necesita corrija los errores.
Cuando recompile la publicación de un paquete ya existente elija una que no exista en Debian, p. ej. añadiendole «+debug1» oañadiendole «~pre1» como se muestra.
$ dch -i

Compila o instala los paquetes con los símbolos de depuración de la siguiente manera.

Guía de referencia de Debian

250 / 257

$ export DEB_BUILD_OPTIONS=”nostrip noopt”$ debuild$ cd ..
$ sudo debi package_name*.changes

Necesita comprobar que los archivos de órdenes del paquete y utlizar «CFLAGS=-g -Wall» para la compilación de binarios.

12.5.3.

Obteniendo trazas

Cuando encuentre un programas que no funciona, es una buena idea al informar del error añadir información sobre las trazas desu ejecución.
El backtrace se puede obtener mediante gdb(1) usando uno de los siguientes enfoques:
Enfoque de los errores en GDB:
• Ejecuta el programa desde GDB.
• Bloquea el programa.
• Escriba ”bt” en el indicador de GDB.
Primer enfoque de los errores:• Actualiza el archivo “/etc/security/limits.conf”para incluir lo siguiente:* soft core unlimited• Escribe ”ulimit -c ilimitado” en el indicador de shell.
• Ejecuta el programa desde este indicador de shell• Bloquea el programa para generar un archivo core dump.
• Cargar el archivo core dump a GDB como ”gdb gdb ./program_binary core” .
• Escriba ”bt” en el indicador de GDB.
Para un bucle infinito o una situación de teclado congelado, puede forzar el bloqueo del programa pulsando Ctrl-\ o Ctrl-Co ejecutando “kill -ABRT PID”. (Ver Sección 9.4.12)
sugerencia
Frecuentemente encontrará en primeras líneas «malloc()» o «g_malloc()». Cuando esto ocurre disminuyen
las posibilidades de que las trazas sean útiles. La forma más fácil de encontrar alguna información útil es asignado
a la variable de entorno «$MALLOC_CHECK_» el valor de 2 (malloc(3)). Puede hacer esto a la vez que se ejecuta
gdb como se muestra.
$ MALLOC_CHECK_=2 gdb hello

12.5.4.

Órdenes avanzadas de gdb

12.5.5.

Comprobar las dependencias de las bibliotecas

Utilice como se muestra ldd(1) para determinar las bibliotecas de las que depende un programa.
$ ldd /usr/bin/ls
librt.so.1 => /lib/librt.so.1 (0x4001e000)
libc.so.6 => /lib/libc.so.6 (0x40030000)
libpthread.so.0 => /lib/libpthread.so.0 (0x40153000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Para que ls(1) funcione en un entorno ̀chroot ̀ las bibliotecas siguientes deben estar disponibles en dicho entorno.
Consulte Sección 9.4.6.

251 / 257

Guía de referencia de Debianorden(gdb) hilo aplica a todos bt(gdb) bt full(gdb) thread apply all bt full(gdb) thread apply all bt full10(gdb) set logging on

descripción de la funcionalidad de la orden
recogen trazas de todos los hilos para programas multihilo
recoge los parámetros de la pila de las llamadas de función
recoge trazas y parámetros como una combinación de las opciones
anteriores
recoge trazas y parámetros de las 10 llamadas más recientes paraeliminar información no relevante
escribe la salida del registro de gdb a un archivo (por defecto«gdb.txt»)

Cuadro 12.14: Relación de órdenes avanzadas gdb

12.5.6.

Herramientas de rastreo dinámico de llamadas

Hay varias herramientas de rastreo dinámico de llamadas disponibles en Debian. Consulta Sección 9.4.

12.5.7.

Errores de depuración X

Si el programa GNOME preview1 ha recibido un error de las X se puede ver el mensaje como se muestra.
The program ’preview1’ received an X Window System error.

En este caso, puede intentar ejecutar el programa con «--sync», y poner un punto de ruptura en la función «gdk_x_error»
con el fin de obtener trazas.

12.5.8.

Herramientas de detección de fugas de memoria

Existen varias herramientas de detección de fugas de memoria en Debian.
paquetelibc6-dev
valgrindelectric-fence
libdmalloc5

popularidad
V:248, I:567
V:6, I:37
V:0, I:3
V:0, I:2

tamaño
12053
78191
73
390

duma

V:0, I:0296

leaktracer

V:0, I:1

56

descripción
mtrace(1): funcionalidad de depuración de malloc en glibc
depurador y analizador de memoria
depurador malloc(3)biblioteca de depuración de la asignación de memoria
biblioteca para detectar desbordamientos y subdesbordamientos debúfer en programas C y C++
programas C++ para trazar fugas de memoria

Cuadro 12.15: Relación de herramientas de detección de fugas de memoria

12.5.9.

Desemsamblado de binarios

Usted puede desemsamblar código binario con objdump(1) como se muestra.
$

objdump -m i386 -b binary -D /usr/lib/grub/x86_64-pc/stage1

nota
gdb(1) puede ser utilizado para desemsamblar el código de forma interactiva.

252 / 257

Guía de referencia de Debianpaquetemakeautoconf
automakelibtool
cmake

popularidad
V:151, I:555
V:31, I:230
V:30, I:228
V:25, I:212
V:17, I:115

tamaño
1592
2025
1837
1213
36607

ninja-build

V:6, I:41

428

meson

V:3, I:22

3759

xutils-dev

V:0, I:91484

documentación«info make» proporcionado por make-doc«info autoconf» proporcionado con autoconf-doc«info automake» proporcionado con automake1.10-doc”info libtool” proporcionado por libtool-doc
cmake(1) sistema make multiplataforma de código abierto
ninja(1) pequeño sistema de construcción más cercano en espíritu aMakemeson(1) sistema de construcción de alta productividad sobre
ninja
imake(1), xmkmf(1), etc.

Cuadro 12.16: Lista de paquetes de herramientas de compilación

12.6.

Herramientas de construcción

12.6.1.

Make

Make es una utilidad para mantener grupos de programas. is a utility to maintain groups of programs. La ejecución de make(1)consiste en, la lectura del archivo de reglas «Makefile» por parte de make y la actualización de un objetivo si los archivos que
son necesarios han sido modificados desde la última vez o si el objetivo no existe. La ejecución de estas actualizaciones pueden
suceder de concurrentemente.
La sintáxis del archivo de reglas es la que se muestra.
target: [ prerequisites ... ][TAB] command1[TAB] -command2 # ignore errors[TAB] @command3 # suppress echoing

Aquí «[TAB]» es un código TAB. Cada línea es interpretada por el intérprete de órdenes después de la sustitución de las variables.
Utilice «\» al final de la líena para continuar el archivo de órdenes. Utilice «$$» para incluir «$» par los valores del entorno parael archivo de órdenes.
Las reglas implícitas y los prerequisitos para un objetivos pueden ser escrito, por ejemplo, como se muestra.
%.o: %.c header.hAquí, el objetivo contiene el carácter « %» (únicamente un carácter). El carácter %» encaja con cualquier cadena no vacía que
corresponda a los nombres de archivo del objetivo real. Así mismo el prerrequisito utiliza « %» para mostrar como se relaciones
sus nombres con los nombres del objetivo real.
variable automática
$@
$<
$?
$^
$*

valor
objetivo
primer prerrequisitos
todos los prerrequisitos nuevos
todos los prerequisitos« %» encaja la raíz en el patrón del objetivo
Cuadro 12.17: Relación de variables automáticas de makeEjecute «make -p -f/dev/null»para ver las reglas internas automática.

12.6.2.

Autotools (Autoherramientas) (herramientas de automatización)

Autotools es un conjunto de herramientas de programación diseñadas para ayudar a que los paquetes de código fuente seanportables a muchos sistemas Unix-like.

253 / 257

Guía de referencia de Debian

expansión variable
foo1 := bar
foo2 = bar
foo3 += bar

descripción
expansión por única vez
expansión recursiva
anexarCuadro 12.18: Relación de expansiones de variables de make

Autoconf es una herramienta para generar scripts de shell ”configure” desde ”configure.ac”.
• ”configure” se usa más adelante para producir ”Makefile” a partir de la plantilla ”Makefile.in”.
Automake es una herramienta para producir ”Makefile.in” a partir de ”Makefile.am”.
Libtool es un script de shell para abordar el problema de la portabilidad del software al compilar bibliotecas compartidas apartir del código fuente.
12.6.2.1.

Compilando e instalando un programa

aviso
Cuando compile programas y los instale no sobreescriba los archivos del sistema.

Debian no modifica los archivos en «/usr/local/» o «/opt». Así que si compila un programa desde el código fuente,instaleló en «/usr/local/» para que no interfiera con Debian.
$ cd src$ ./configure --prefix=/usr/local$ make # this compiles program$ sudo make install # this installs the files in the system

12.6.2.2.

Desistalando programas

Si se tiene el código original, se utiliza autoconf(1)/automake(1) y se recuerda como se configuró, ejecute lo siguiente pararealizar la desistalación del programa.
$ ./configure all-of-the-options-you-gave-it$ sudo make uninstall

Otra manera, si está totalmente seguro de que la instalación solo únicamente archivos en «/usr/local/» y no hay nada
importante allí, puede borrar todo su contenido como se muestra.
# find /usr/local -type f -print0 | xargs -0 rm -f

Si no estás seguro de dónde se instalaron los archivos, puede considerar usar checkinstall(8) del paquete checkinstall,que proporcionará una ruta de desinstalación clara. Ahora admite la creación de paquetes Debian con la opción ”-D”.

12.6.3.

Meson

El sistema de creación del software ha ido evolucionando:
Autotools en la parte superior de Make ha sido el estándar de facto para la infraestructura de compilación portátil desde 1990.
Esto es extremadamente lento.

Guía de referencia de Debian

254 / 257

CMake lanzado inicialmente en el 2000 mejoró la velocidad significativamente pero fue construido originalmente sobre el
inherentemente lento Make. (Ahora Ninja puede ser tu backend).
Ninja, lanzado inicialmente en 2012, está destinado a sustituir a Make para mejorar aún más la velocidad de la compilación yestá diseñado para que tus archivos sean generados por un sistema de compilación de nivel superior.
Meson lanzado inicialmente en 2013 es el nuevo, popular y rápido sistema de compilación de nivel superior que utiliza Ninja
como backend.
Consulta los documentos que se encuentran en ”El sistema de construcción Meson” y ”El sistema de construcción Ninja”.

12.7.

Web

Se pueden crear páginas web dinámicas básicas como se muestra.
Las consultas se presentan al navegador del usuario utilizando formularios HTML.
Rellenando y pulsado sobre las entradas del formulario se envia la cadena URL con los parámetros codificados desde elnavegador al servidor web.
• «https://www.foo.dom/cgi-bin/program.pl?VAR1=VAL1&VAR2=VAL2&VAR3=VAL3»• «https://www.foo.dom/cgi-bin/program.py?VAR1=VAL1&VAR2=VAL2&VAR3=VAL3»• «https://www.foo.dom/program.php?VAR1=VAL1&VAR2=VAL2&VAR3=VAL3»« %nn» en la URL se sustituye por el carácter hexadecimal que tiene el valor nn.
Las variables de entorno se asignan como: «QUERY_STRING=«VAR1=VAL1 VAR2=VAL2 VAR3=VAL3«».
Un programa CGI (independientemente de su extensión «programa.*») en un servidor web se ejecuta a si mimo con lavariable de entorno «$QUERY_STRING».
La salida de un programa CGI se envía al servidor web y se representa como una página web dinámica.
Por seguridad es mejor no realizar de forma manual o de otras formas la gestión de análisis de los parámetros CGI. Existen módulos
para ello en Perl y Python. PHP tiene dicha funcionalidad. Cuando se necesita almacenar información del usuario, se utilizan las
cookies HTTP cookies. Cuando se necesita procesar información en el lado del cliente, normalmente se utiliza Javascript.
Para mayor información, consulteInterfaz de Pasarela Común (Common Gateway Interface), La Fundación de Software Apache(The Apache Software Foundation) y JavaScript.
Buscar «CGI tutorial« en Google, escribiendo la URL codificada https://www.google.com/search?hl=en&ie=UTF-8&q=CGI+tutorial
directamente en la barra de direcciones del navegador, es una buena manera de ver en acción un archivo de órdenes en el servidorG¡de Google.

12.8.

La traducción de código fuente

Existen aplicaciones para convertir código fuente de un lenguaje a otro.

12.9.

Haciendo un paquete Debian

Si quiere hacer un paquete Debian, lea lo siguiente.
Capítulo 2 para comprender los fundamentos del sistema de paquetes
Sección 2.7.13 para comprender lo fundamental del proceso de portabilidad

255 / 257

Guía de referencia de Debianpaquetepopularidad

tamañoperl

V:707, I:989

673

f2c

V:0, I:3442

intel2gas

V:0, I:0178

palabradescripción
clave
AWK→PERL converit código fuente de AWK a PERL: a2p(1)convierte código fuente de FORTRAN 77 a C/C++:FORTRAN→C
f2c(1)
convierte de NASM (formato Intel) a GAS
intel→gas(Ensamblador GNU)

Cuadro 12.19: Relación de herramientas de traducción de código fuente
Sección 9.11.4 para comprender los fundamentos de la técnica de chroot
debuild(1), y sbuild(1)Sección 12.5.2 para la recompilación con la finalidad de la depuración
Guía de Mantenedores Debian (Guide for Debian Maintainers) (el paquete debmake-doc)
Referencia para desarrolladores Debian (el paquete developers-reference).
Manual Directrices de Debian (en el paquete debian-policy)
Existen paquetes que ayudan al empaquetado como debmake, dh-make, dh-make-perl, etc.

Guía de referencia de Debian

256 / 257

Apéndice A

Apéndice
Aquí estan las referencias de este documento.

A.1. La mazmorra de Debian
El sistema Debian es una platadorma de computación compleja para un equipo en red. Sin embargo, aprender a utilizar todas
sus capacidades no es sencillo. Configurar una cola de impresora LPR con una impresora que no soporta PostScript es un buen
ejemplo de ello. (No existen ahora problemas con ello desde que se utiliza el sistema CUPS).
Es un completo y detallado mapa llamado el «CÓDIGO FUENTE«. Es muy preciso pero difícil de entender. Existen también
referencias a Cómos o MiniCómos. Son más fáciles de comprender pero tienden a dar demasiados detalles y pierden la visión
global. Algunas veces tengo problemas para encontrar la sección correcta en los Cómos largo cuando solo necesito saber comose ejecutan.
Espero que esta ”Referencia de Debian (versión 2.124)” (2024-06-30 04:06:30 UTC) proporciona una buena dirección de inicio
para las personas en el laberinto de Debian.

A.2. Histórico de copyright
La Referencia de Debian fue iniciada por mi, Osamu Aoki <osamu at debian punto org>, como un sistema personal de administración de notas. Mucho contenido proviene del conocimiento que he adquirido de la lista de correo de usuarios de debian y otros
recursos Debian.
La Referencia de Debian (versión 1, 2001-2007) fue creado como una sugerencia de Josip Rodin, que es muy activo en el Proyecto
de Documentación Debian (DDP) como parte de los documentos DDP.
Después de 6 años, me di cuenta de que la versión original de la «Referencia de Debian« estaba desactualizada y comencé areescribir parte de su contenido. La nueva «Referencia de Debian (versión 2)» se publicó en 2008.
He actualizado ”Referencia Debian (versión 2)” para tratar temas nuevos (Systemd, Wayland, IMAP, PipeWire, núcleo Linux 5.10)
y eliminado temas obsoletos (SysV init, CVS, Subversion, protocolo SSH 1, núcleos Linux anteriores a 2.5). Se han eliminado
la mayoría de las referencias a Jessie 8 (2015-2020) release situation o anteriores.
Esta ”Referencia de Debian (versión 2.124)” (2024-06-30 04:06:30 UTC) cubre principalmente Bookworm (=stable) y Trixie(=testing) Lanzamientos de Debian.
El contenido del tutorial puede ser seguido desde su original y su inspiración como se muestra.
«Guía Linux de Usuario (Linux User’s Guide)« de Larry Greenfield (Diciembre 1996)• obsoleto por el «Tutorial de Debian«Guía de referencia de Debian257 / 257

”Tutorial de Debian” por Havoc Pennington. (11 de diciembre, 1998)• parcialmente escrito por Oliver Elphick, Ole Tetlie, James Treacy, Craig Sawyer e Ivan E. Moore II• obsoleto por la «GNU/Linux Debian: guía de instalación y uso«
«GNU/Linux Debian: guía de instalación y uso« de John Goerzen y Ossama Othman (1999)• obsoleto por la «Referencia de Debian (versión 1)«
El paquete y la descripción del archivo puede seguir algo sobre sus origenes y su inspiración en lo siguiente.
«FAQ Debian FAQ« (versión de March 2002, que era mantenida por Josip Rodin)
Otro contenido puede seguir a sus originales y su inspiración de lo siguiente.
«Referencia de Debian (version 1)« de Osamu Aoki (2001–2007)• obsoleto por la nueva ”Referencia de Debian (versión 2)” en 2008.
La versión anterior «Referencia Debian (versión 1)« fue creada por varios autores.
la mayor parte del contenido de la configuración de red fue escrito por Thomas Hooduna parte significativa del contenido de X y CSV fue escrita por Brian Nelson
la ayuda en los archivos de órdenes de contrucciń y la mayor parte de las correcciones fueron aportadas por Jens Seidel
gran parte de las correcciones fueron aportadas por David Sewell
múltiples contribuciones de los traductores, colaboradores y personas que descubrieron errores
Se utilizaron muchas páginas de manual y páginas de información sobre el sistema Debian, así como también páginas web
originales y documentos de Wikipedia como referencias principales para escribir este documento. En la medida en que Osamu
Aoki los consideró dentro del uso justo, muchas partes de ellos, especialmente las definiciones de comandos, se usaron como
fragmentos de frases después de cuidadosos esfuerzos editoriales para encajarlos en el estilo y la objetivo de este documento.
La descripción de depurardor gdb se amplió utilizando el contenido de la Wiki de Debian sobre la depuración con el consentimientode Ari Pollak, Loïc Minier y Dafydd Harries.
El contenido de la actual ”Referencia de Debian (versión 2.124)” (2024-06-30 04:06:30 UTC) es principalmente mi propio trabajo
excepto como se mencionó anteriormente. Estos también han sido actualizados por los colaboradores.
El autor, Osamu Aoki, agradece a todos ellos su ayuda para hacer posible este documento.

A.3. Formato del documento
La fuente del documento original en inglés está escrita actualmente en archivos DocBook XML. Esta fuente Docbook XML seconvierten a HTML, texto sin formato, PostScript y PDF. (Algunos formatos pueden omitirse para su distribución)