FRANCISCO SOLSONA Y ELISA VISO (COORDINADORES)

MANUAL DE SUPERVIVENCIA EN LINUX

MAURICIO ALDAZOSA JOSÉ GALAVIZ IVÁN HERNÁNDEZ CANEK PELÁEZ KARLA RAMÍREZ FERNANDA SÁNCHEZ PUIG FRANCISCO SOLSONA MANUEL SUGAWARA ARTURO VÁZQUEZ ELISA VISO

FACULTAD DE CIENCIAS, UNAM 2007 Esta obra aparece gracias al apoyo del proyecto PAPIME PE-100205

Manual de supervivencia en Linux 1ª edición, 2007

Diseño de portada: Laura Uribe

©Universidad Nacional Autónoma de México, Facultad de Ciencias Circuito exterior. Ciudad Universitaria. México 04510 [email protected]

ISBN: 978-970-32-5040-0

Impreso y hecho en México Índice general

Prefacio XII

1. Introducción a 1 1.1. Historia ...... 1 1.1.1. Sistemas UNIX libres ...... 2 1.1.2. El proyecto GNU ...... 3 1.2. Sistemas de tiempo compartido ...... 4 1.2.1. Los sistemas multiusuario ...... 4 1.3. Inicio de sesión ...... 5 1.4. ...... 6 1.4.1. Introducción a Emacs ...... 6 1.4.2. Emacs y tú ...... 7

2. Ambientes gráficos en Linux 9 2.1. Ambientes de escritorio ...... 9 2.2. KDE ...... 10 2.2.1. Configuración de KDE ...... 10 2.2.2. KDE en 1, 2, 3 ...... 14 2.2.3. Quemado de discos con K3b ...... 14 2.2.4. Amarok ...... 18 2.3. Emacs ...... 20 2.4. Comenzando con Emacs ...... 20

3. Sistema de Archivos 23 3.1. El sistema de archivos ...... 23 3.1.1. Rutas absolutas y relativas ...... 26 3.2. Moviéndose en el árbol del sistema de archivos ...... 27 3.2.1. Permisos de archivos ...... 30 3.2.2. Archivos estándar y redireccionamiento ...... 34 3.3. Otros comandos de Unix ...... 37 3.3.1. Sintaxis estándar de comandos ...... 37 ii

3.4. Agrupando nombres de archivos ...... 44 3.5. : administrador de archivos y algo más ...... 45 3.5.1. Iniciando Konqueror ...... 46 3.5.2. Konqueror como administrador de archivos ...... 46 3.5.3. Konqueror como un navegador web ...... 48 3.5.4. Konqueror como una aplicación integrada ...... 49 3.6. Emacs ...... 50 3.6.1. Ejecutando Emacs desde la línea de comandos ...... 50 3.6.2. Conceptos esenciales ...... 52 3.6.3. Dired ...... 53 3.6.4. Ejecución de comandos de Unix desde Emacs ...... 54

4. Edición 55 4.1. La guerra de los editores de texto ...... 55 4.1.1. Vieja guardia contra nueva guardia ...... 56 4.2. Kate: un editor para programadores ...... 56 4.2.1. Introducción ...... 56 4.2.2. Empezando a utilizar Kate ...... 57 4.2.3. Editando archivos ...... 59 4.3. Emacs ...... 64 4.3.1. Comandos ...... 65 4.3.2. Movimiento ...... 66 4.3.3. Matando y borrando ...... 67 4.3.4. Reencarnación de texto ...... 68 4.3.5. Regiones ...... 68 4.3.6. Rectángulos ...... 68 4.3.7. Registros ...... 69 4.3.8. Archivos ...... 70 4.3.9. Buscar ...... 70 4.3.10. Reemplazar ...... 70 4.3.11. Guardar ...... 71 4.3.12. Ventanas ...... 71 4.3.13. Marcos (frames) ...... 71 4.3.14. Ayuda en línea ...... 72 4.3.15. Lista de buffers ...... 72 4.3.16. Anzuelos (Hooks), setq y otros ...... 72 4.3.17. Ortografía ...... 73 4.3.18. Extendiendo Emacs ...... 74 iii

5. Internet 77 5.1. Redes de computadoras ...... 77 5.1.1. Relación cliente-servidor ...... 78 5.1.2. TCP/IP ...... 79 5.2. Web ...... 80 5.3. Redes y direcciones ...... 81 5.3.1. Domicilios estándar en Internet ...... 81 5.3.2. Nomenclatura antigua e internacional ...... 81 5.4. WWW ...... 82 5.4.1. URL: especificación de objetos en Internet ...... 83 5.4.2. Navegadores ...... 83 5.4.3. Google ...... 85 5.4.4. Wikipedia ...... 85 5.5. Los programas de correo de Unix ...... 86 5.6. Netiquete ...... 87 5.6.1. Algunos puntos del netiquete ...... 87 5.7. KMail: lector de correo electrónico ...... 89 5.7.1. Introducción ...... 89 5.7.2. Utilizando KMail ...... 90 5.8. FTP ...... 93 5.8.1. ¿Qué es un FTP anónimo? ...... 93 5.8.2. Comandos para FTP ...... 93 5.9. SSH: Secure Shell ...... 95 5.9.1. Accediendo a sistemas remotos ...... 96 5.9.2. Copiando archivos entre sistemas ...... 96 5.10. PGP: Pretty Good Privacy ...... 97 5.10.1. Funcionamiento de PGP ...... 98 5.11. RSS: sistema de noticias ...... 99 5.11.1. Introducción ...... 99 5.11.2. Akregator ...... 99 5.12. Mensajería instantánea ...... 101 5.12.1. Introducción ...... 101 5.12.2. Kopete ...... 101 5.12.3. Creando cuentas ...... 103 5.12.4. Funciones básicas ...... 104 5.12.5. Extensiones ...... 105 5.13. Rdesktop: Remote Desktop Protocol Client ...... 106 5.13.1. Utilizando Rdesktop ...... 106 5.14. Kontact, una suite de productividad en KDE ...... 106 5.14.1. Resumen ...... 108 5.14.2. Correo, KMail ...... 108 iv

5.14.3. Contactos, KAddressBook ...... 108 5.14.4. Calendario y pendientes con KOrganizer ...... 112 5.15. Emacs ...... 119 5.15.1. VM ...... 121 5.15.2. BBDB ...... 128 5.15.3. ...... 131 5.15.4. ERC ...... 136 5.15.5. TRAMP ...... 139 5.15.6. Diccionario ...... 140

6. LATEX 143 6.1. Introducción ...... 143 6.2. Componentes de un texto ...... 144 6.3. Ambientes para formato ...... 145 6.3.1. Posibles errores ...... 147 6.4. Formato general de un documento ...... 149 6.4.1. Cartas ...... 152 6.5. Tipos y tamaños de letras ...... 153 6.6. Listas de enunciados o párrafos ...... 156 6.6.1. Numeraciones ...... 157 6.6.2. Listas marcadas ...... 160 6.6.3. Descripciones ...... 161 6.6.4. Listas más compactas ...... 163 6.7. Tablas ...... 164 6.7.1. Multicolumnas ...... 166 6.7.2. Separación de renglones y columnas ...... 168 6.7.3. Líneas “incompletas” verticales y horizontales ...... 172 6.7.4. Espacio entre los renglones ...... 173 6.8. Matemáticas en LATEX...... 174 6.8.1. Fórmulas matemáticas ...... 176 6.9. Emacs y LATEX...... 178 6.9.1. Anotaciones en los símbolos ...... 192 6.9.2. Arreglos de fórmulas ...... 193 6.10. Imágenes y figuras ...... 197 6.10.1. Tablas, figuras, etc...... 197 6.10.2. Cortando figuras ...... 204 6.10.3. Colores ...... 205 6.10.4. Dibujando objetos geométricos ...... 207 6.10.5. Líneas ...... 207 6.10.6. Acomodando objetos ...... 226 6.11. Referencias e índices ...... 231 v

6.11.1. Referencias bibliográficas ...... 231 6.11.2. Índices ...... 237 6.12. Emacs ...... 237 6.12.1. AUCTEX ...... 238 6.12.2. RefTEX ...... 241 6.12.3. Preview ...... 242

7. Lenguajes de marcado 245 7.1. XML ...... 246 7.2. HTML ...... 249 7.2.1. XHTML ...... 249 7.3. CSS ...... 250 7.3.1. Javascript ...... 253 7.4. Emacs ...... 255

8. Herramientas para desarrollo 256 8.1. Control de versiones ...... 256 8.1.1. subversion ...... 256 8.1.2. Introducción a subversion ...... 257 8.2. Emacs ...... 260 8.2.1. JDEE ...... 260 8.2.2. psvn ...... 268

9. Extendiendo tu ambiente 271 9.1. Programación en shell ...... 271 9.1.1. Variables ...... 272 9.1.2. Preparación ...... 272 9.1.3. Vigilando el espacio en disco ...... 273 9.1.4. Listado de directorios ...... 275 9.1.5. Recorridos recursivos ...... 278 9.1.6. Comparando archivos ...... 283 9.1.7. Otra vez el problema de borrar la basura ...... 285 9.1.8. Para saber más ...... 289 9.2. Emacs ...... 289 9.2.1. La madre de todos los lenguajes ...... 289 9.2.2. LISP en 15 minutos ...... 290 9.2.3. Resumen ...... 298 9.3. Evaluaciones ...... 299 9.3.1. Nombres de buffers ...... 299 9.4. Definiciones de funciones ...... 301 9.4.1. defun ...... 301 9.4.2. let ...... 305 vi

9.4.3. La forma especial if ...... 306 9.4.4. save-excursion ...... 307 9.4.5. Resumen ...... 308 9.5. Funciones relacionadas con buffers ...... 311 9.5.1. Definición (simplificada) de beginning-of-buffer ...... 311 9.5.2. Resumen ...... 314 9.6. Funciones fundamentales ...... 314 9.6.1. car y cdr ...... 315 9.6.2. Cortando y guardando texto ...... 318 9.6.3. Inicialización de variables: defvar ...... 321 9.6.4. copy-region-as-kill ...... 322 9.6.5. Resumen ...... 325 9.7. Lluvia de funciones ...... 326 9.7.1. ¿Quién o qué es ASCII? ...... 326 9.7.2. ¿Cómo numerar una región de líneas? ...... 327 9.7.3. Borrado efectivo de espacios ...... 328 9.7.4. Un ejercicio totalmente inútil, o eso parece ...... 330 9.7.5. Resumen ...... 332 9.8. Para saber más ...... 333

A. Distribuciones de Linux 337 A.1. Ubuntu ...... 337 A.1.1. Filosofía ...... 337 A.1.2. Manejo de software ...... 338 A.2. Debian ...... 340 A.2.1. Filosofía ...... 340 A.2.2. Manejo de software ...... 340 A.3. Fedora ...... 340 A.3.1. Filosofía ...... 340 A.3.2. Manejo de software ...... 341

B. Compilando e instalando a pie 343 B.1. Aplicaciones no disponibles ...... 343

C. Emacs: archivos de configuración 347 .1. ∼/.emacs ...... 347 C.2. ∼/.vm ...... 349 C.3. ∼/.emacs-w3m ...... 350 Índice de figuras

1.1. Acceso al sistema...... 5 1.2. Inicio de una sesión en un sistema UNIX...... 6 1.3. Equivocación al teclear la contraseña...... 6

2.1. KControl ...... 11 2.2. Administración de usuarios ...... 12 2.3. Administración de contraseñas ...... 12 2.4. Disposición del teclado ...... 14 2.5. KDE ...... 15 2.6. K3b ...... 16 2.7. Quemado de un disco de datos ...... 16 2.8. Quemado de un disco de audio ...... 18 2.9. Amarok ...... 19 2.10. Emacs en el menú de KDE ...... 20

3.1. Sistema de archivos en un sistema Unix ...... 25 3.2. Resultado de entubar -al con less ...... 29 3.3. Konqueror como un administrador de archivos ...... 47 3.4. Konqueror con un emulador de terminal ...... 48 3.5. Konqueror como un navegador de Internet ...... 49 3.6. Konqueror deplegando una imagen ...... 49 3.7. Konqueror deplegando un documento postscrip...... 50

4.1. Kate en el menú de KDE ...... 57 4.2. Ventana de inicio de Kate ...... 60

5.1. Ventana principal de KMail ...... 89 5.2. Vista principal de Akregator ...... 100 5.3. Kopete en el menú de KDE ...... 103 5.4. Vista principal de kopete ...... 104 5.5. Ventana inicial de Kontact ...... 107 5.6. KAddressBook ...... 109 viii

5.7. Creando una nueva agenda ...... 110 5.8. Creando una nuevo contacto ...... 110 5.9. Pestaña de detalles ...... 111 5.10. KAddressBook con algunos contactos ...... 111 5.11. KOrganizer ...... 112 5.12. Creando una nuevo evento ...... 113 5.13. Ajustando la repetición de un evento ...... 114 5.14. Agregando participantes en un evento ...... 115 5.15. Ajustando la hora de la reunión ...... 116 5.16. Vista ¿Qué es lo siguiente? ...... 116 5.17. Vista Lista ...... 117 5.18. Vista Día ...... 117 5.19. Vista Semana laboral ...... 118 5.20. Vista Semana ...... 118 5.21. Vista Tres días siguientes ...... 119 5.22. Vista Mes ...... 120 5.23. El diario dentro de Kontact ...... 120

6.1. Gráfico introducido con includegraphics ...... 201 6.2. Escalando objetos con graphics...... 202 6.3. Rotaciones y reflejos con graphics ...... 203 6.4. Tomando pedazos de figuras ...... 204 6.5. Ejemplo de opciones para dibujar ...... 213 6.6. Graficación de funciones arbitrarias ...... 221 6.7. Impresión de la retícula ...... 222 6.8. Colocación de los ejes ...... 222 6.9. Segunda forma de pintar la retícula ...... 223 6.10. Divertimento con sólo trazo de líneas ...... 224 6.11. Dibujo de una gráfica en LATEX ...... 229 6.12. Actividad 6.52 ...... 231 6.13. Ejemplo de LATEX usando BIBTEX ...... 233 6.14. Salida de LATEX al ejecutar BIBTEX...... 234 6.15. Ejemplo de una base de datos BIBTEX ...... 235 6.16. Ejemplo usando los estilos BIBTEX...... 236 6.17. Preview en acción ...... 243

7.1. Página sin hoja de estilo ...... 251 7.2. Página con hoja de estilo ...... 252