Historial de revisiones | ||
---|---|---|
Revisión 2.4 | 30 de marzo del 2002 | Revisado por: docelic |
La versión inicial. | ||
Revisión 2.5 | 02 de mayo del 2002 | Revisado por: docelic |
Correcciones ortográficas y gramaticales, traducción al español (todo a cargo de Walter Echarri) | ||
Revisión 2.6 | 03 junio del 2002 | Revisado por: docelic |
Mejoras de contenido, correcciones gramaticales de Walter, introducción de un capítulo nuevo sobre el kernel (documento aparte). | ||
Revisión 2.7 | 24 de julio del 2002 | Revisado por: docelic |
Más mejoras. La variante lyx->sgml simplemente no funcionó, los documentos obtenidos eran inintelegibles. Reescribí en forma manual el sgml docbook con las hojas de estilo de newbiedoc ¡son sorprendentes! | ||
Revisión 2.8 | 12 de septiembre del 2002 | Revisado por: docelic |
Gran cantidad de mejoras y detalles nuevos. Gracias a Gürkan Sengün (tarzeau@linuks.mine.nu) por diversos trucos, sugerencias y enlaces. | ||
Revisión 2.9 | 15 septiembre del 2002 | Revisado por: docelic |
Mejoras; enlaces a recursos externos. | ||
Revisión 3.0 | 16 septiembre del 2002 | Revisado por: docelic |
Mejoras; ahora el aspecto del documento se ve mejor. |
Es conveniente que consulte esta guía luego de haber instalado con éxito el sistema Debian GNU en su máquina.
Se trata de un documento paso a paso destinado a responder la mayoría de sus preguntas y brindarle la posibilidad de adquirir los conocimientos necesarios para continuar por su cuenta; no me canso de repetir que lo que cuenta es la idea y la lógica, no la implementación exacta o los detalles de uso.
Observación: | |
---|---|
Este documento puede parecer un tanto extenso, en especial si está leyendo la versión que viene en una única hoja html. Por favor, sea decidido y paciente: será Ud. quien se beneficie de su lectura. He intentado evitar párrafos que no le aporten nada significativo. |
Esta guía constituye una suerte de combinación equilibrada entre una guía para administradores y una guía para usuarios; quizás resulte demasiada amplia para aquellos que pertenecen a algunas de estas dos categorías específicas. El enfoque que utilizé se ajusta mejor a usuarios domésticos, es decir, a aquellas personas que tienen una instalación Debian, una cuenta de superusuario a mano y tengan el deseo de aprender y experimentar.
Definiremos en forma adecuada los términos básicos, explicaremos los objetivos del diseño del sistema, abarcaremos lo temas más importantes para el usuario final y mostraremos varios ejemplos usando la línea de comandos. Puesto que se trata de una guía Debian, no vacilaré en usar comandos y caracteríticas específicas de Debian aunque la mayoría de lo explicado (al menos desde el punto de vista ideológico) también se aplica a otras distribuciones de Linux o sistemas UNIX. Por último, a pesar de decir que se trata de una guía para principiantes, no nos restringiremos a los fundamentos de UNIX. Considero que esta guía contiene una gran cantidad de detalles interesantes que incluso los usuarios experimentados pueden encontrar útiles (o divertidos :).
Cabe destacar que toda la información que se brinda aquí puede encontrarse en la documentación que acompaña a los respectivos paquetes en forma más detallada y comprensiva. Por lo tanto, se sugiere en forma implícita leer junto con esta guía, la documentación oficial del sistema y de los programas (las páginas del manual para dpkg y apt son perfectas para mostrar que hay muchas cosas más de las que se menciona aquí). www.debian.org y www.tldp.org (inicialmente linuxdoc), los directorios /usr/{doc, share/doc, local/share/doc} y las páginas info y del manual sistema son, en general, fuentes valiosas de consulta.
Luego de finalizar con esta guía (que debería ayudarlo a desenvolverse :), probablemente debería leer los interesantes manuales disponibles en el directorio de documentación de Debian.
http://www.linuks.mine.nu/~docelic/debguide/es/
De todas maneras, mi dirección electrónica actual es (docelic-AT-mail.inet.hr). No duden en preguntar por un sitio de descarga si la URL proporcionada no funciona :)
Walter Echarri <wecharri-AT-infovia.com.ar>: por la traducción al español, lectura minuciosa, numerosas correcciones gramaticales/de estilo y motivación. Gracias Wally ;)
Gürkan Sengün (tarzeau-AT-linuks.mine.nu) por varios trucos interesantes, sugerencias y enlaces.
Todos los comandos del sistema se destacarán (free, top, ps o se encerrarán entre comillas simples ('rm').
Todos los nombres de directorios o archivos se destacarán y se les precederá de una / (barra) o un ˜ (tilde): /etc/init.d, ˜/.bash_profile
Expresiones tales como [PID] indican que debe reemplazar el [PID] con el valor real del PID: kill -9 [PID]
En cada capítulo, el texto encerrado entre los corchetes [ y ] proporciona breves explicaciones: [Puede ver qué campos deben incrementarse]
En los ejemplos en que se incluya la línea de comandos o parte de un código, los datos ingresados por el usuario se precederán de un signo $ o de un signo # en el caso que se requiera ser superusuario. Por sencillez, se editará la salida de cualquier programa y no se la acompañará de ningún prefijo particular. Si bien esto puede impedir copiar y pegar directamente las instrucciones a su intérprete de comandos, resulta siempre una buena idea usar el cerebro y meditar lo que se escribe.
Las palabras UNIX, GNU, Debian y Linux pueden a veces, según el contexto, usarse en forma indistinta. Las he nombrado aquí en un orden específico, siendo UNIX el término más general. A través de toda la guía he intentado usar el término con más amplio alcance para el párrafo en cuestión [por ejemplo, hablaremos sobre la línea de comandos UNIX, las herramientas GNU, la manera de Debian de hacer las cosas y la administración de procesos en Linux].
Usaremos este capítulo para identificar algunas interpretaciones equivocadas y definir en forma correcta los términos que usaremos en todo el documento. Comenzaremos con términos generales, tales como UNIX, GNU o Free Software. A continuación hablaremos sobre el propio proyecto Debian para finalizar el capítulo con una explicación de algunos de los términos más frecuentes que encontrará en su vida futura Debian.
Así que comencemos ...
En las primeras versiones de este documento, solía mencionar que UNIX era el nombre genérico para un conjunto de sistemas operativos avanzados que compartían la mayoría de las ideas de diseño. Si bien no hay nada incorrecto en esta afirmación, recurrí a Internet para buscar una explicación más formal:
Breve introducción del sitio UGU:
UNIX - /'iuniks/ Plural "Unices". Un sistema operativo interactivo de tiempo compartido inventado en 1969 por Ken Thompson, luego que los laboratorios Bell abandonaran el proyecto Multics, inicialmente para poder ejecutar juegos en su vetusta PDP-7. Dennis Ritchie, el inventor del lenguaje C, se considera co-autor del sistema.
Una descripción similar y más detallada se encuentra en searchSolaris:
UNIX (a menudo escrito "Unix" en los medios de prensa) es un sistema operativo de tiempo compartido interactivo que tuvo origen en los laboratorios Bell en 1969. Ken Thompson y Dennis Ritchie se consideran los inventores de UNIX. El nombre (que se pronuncia 'iuniks) es un juego de palabras basado en un sistema anterior: Multics. En 1974, UNIX se convirtió en el primer sistema operativo escrito en lenguaje C. UNIX ha evolucionado como una suerte de gran producto freeware con diversas extensiones y nuevas ideas proporcionadas por una variedad de versiones UNIX de diferentes compañias, universidades e individuos.
Parte porque no era un sistema operativo propietario de alguna de las compañías líderes y parte porque estaba escrito en un lenguaje estándar y abrazaba diversas ideas populares, UNIX se convirtió en el primer sistema operativo abierto que podía ser ampliado o mejorado por cualquier persona. Una combinación del lenguaje C e intérpretes de comandos de diferentes versiones de UNIX fueron estandarizados con los auspicios de la IEEE como POSIX (Portable Operating System Interface). A su vez, las interfaces POSIX fueron especificadas en la Guía de Programación X/Open 4.2 (también conocida como "Especificación Única de UNIX" o "UNIX 95"). La Versión 2 de la Especificación Única de UNIX también se conoce como UNIX 98. La marca UNIX "oficial" pertenece actualmente al Open Group, una organización de estándares industriales que certifica implementaciones UNIX.
Considero que algo ocurre con la gente de UNIX. Lo que también confirmó mis sospechas fue el artículo There's something about UNIX people que encontré antes del año 2000. Las otras URLs que me sirvieron de inspiración están en el archivo Multics.
No obstante, suceden cosas extrañas cuando la gente de UNIX enloquece.
Encontré un artículo dudoso, insinuando que UNIX es en realidad una travesura del Día de los Inocentes que se mantuvo vigente durante 20 años.
Incluso encontré una página web denominada UNIX Haters.
Algunas personas han expresado sus frustaciones sobre sus usuarios y se han convertido en The Bastard Operators from Hell .
Algunos encontraron consuelo en nombres de dominio extraños (específicamente, http://www.0100101110101101.org/, y la página de la Tía Tillie junto con su subordinado Melvin).
Algunos se han unido a la campaña anti-Linux de Microsoft y han escrito graciosos informes sobre comparaciones competitivas.
Algunos se dieron cuenta que no podían continuar más y decidieron servir bebidas desde la barra de una VAX de Digital.
Algunos incluso pensaron que finalmente habían encontrado La Salida pero pronto fueron ridiculizados por aquellos que encontraron La Entrada.
Y cuando parecía que nada podía empeorar, encontramos al tío Booger y su "invento" patentado 'Bumper Dumper'.
No puede decir que no se lo hemos advertido ...
Richard Stallman, un mítico hacker del MIT, tomó la iniciativa de crear un sistema operativo totalmente libre. Entre otras cosas, su decisión se basó en la frustración y problemas que tuvo por un acuerdo de licencia. No permitieron que un colega suyo le proporcionara el código fuente del controlador de una impresora láser (Stallman deseaba incluir una notificación automática ante un atasco de papel).
Muy motivado por hacer lo correcto, posteriormente abandonó su trabajo en el MIT (de modo que no pudieran reclamarle derechos de autor por su trabajo) y en 1984 inició el proyecto GNU (Gnu's Not Unix), cuyo objetivo era proteger la libertad y proporcionar a los usuarios programas totalmente funcionales para sus computadoras. GNU es un esfuerzo admirable que afecta incluso a áreas no relacionadas con la informática.
Puede consultar el mensaje original de Stallman del 27 de Sep de 1983 / 10:35:59 PST en el excelente archivo de google: Grupos Google.
En 1994, Peter van der Linden escribió lo siguiente en su libro “Expert C Programming; Deep C Secrets” (ISBN 0-13-177429-8):
La Free Software Foundation es una organización extraordinaria fundada por el mítico hacker del MIT Richard Stallman. A propósito, usamos “hacker” en el sentido benévolo original de “programador talentoso”; el término ha sido degradado por los medios, por lo que el hombre común lo usa para designar a un “genio perverso”. Al igual que el adjetivo bad, “hacker” tiene dos significados opuestos y uno debe darse cuenta según el contexto.
La fundación de Software Libre de Stallman se basa en la filosofía que el software debe ser libre y estar disponible para todo el mundo. La premisa de la FSF es “eliminar las restricciones sobre la copia, redistribución, comprensión y modificación de los programas de computación” y su anhelo es crear una implementación de UNIX de dominio público denominada GNU (que significa “GNU's Not UNIX”. Sí, en serio).
Muchos estudiantes graduados en ciencias de la computación y otras personas están de acuerdo con la filosofía GNU y han trabajado en productos de software que la FSF empaqueta y distribuye libremente. Uno de los mejores productos de la FSF es el compilador C GNU. Gcc es un compilador robusto altamente optimizado, disponible para diversas plataformas y a menudo mejor que los compiladores propietarios.
Los desarrolladores GNU habían re-escrito todas las herramientas necesarias del sistema y utilidades (liberadas como software libre - bajo la licencia GNU GPL) y lo único que necesitaban era un kernel (el núcleo del sistema operativo) para alcanzar el objetivo inicial.
En 1991, y en forma independiente, Linus Torvalds de la universidad de Helsinki hizo pública su primer versión del kernel en el que estaba trabajando: Linux. Para entonces era un estudiante y deseaba crear una alternativa económica a los altamente costosos sistemas UNIX que se ejecutara en máquinas PC (i386 ). Uniendo el kernel de Linux con las herramientas GNU, el sueño de un sistema libre GNU/Linux se hizo realidad. Linux (el kernel) fue escrito desde la nada ('partiendo de cero') y fue una de las primeras variantes libres de UNIX que, apoyado por la inmensa comunidad GNU y su software, hizo que el movimiento del software libre realmente comenzara.
No obstante, han existido otros proyectos -como el del BSD- que han tenido problemas en cuanto a temas de licencia y derechos de autor, pero que han reescrito las partes en cuestión y han liberado las variantes libres del BSD: FreeBSD, NetBSD y OpenBSD (que surgió de NetBSD gracias a Theo de Raadt). NetBSD se conoce como el sistema operativo más portable del mundo mientras que OpenBSD es valorado por aquellos relacionados con la seguridad informática.
Observación: | |
---|---|
Linux (y otros sistemas operativos libres actuales) han tomado lo mejor del mundo UNIX además de ofrecer una gran cantidad de ventajas sobre el UNIX ortodoxo para el usuario final. Dado su diseño y filosofía, cabe señalar que nada es imposible en GNU/Linux - únicamente es cuestión de habilidades. |
El término Código Abierto es relativamente nuevo y, en general, fue aceptado para promover el Software Libre en entornos comerciales. Está relacionado con los beneficios prácticos del Software Libre: calidad, fiabilidad, costo y mantenimiento... No conlleva mayores implicaciones filosóficas.
¡Importante! | |
---|---|
Lea más sobre el Software Libre, Código Abierto y la interpretación correcta de la palabra 'libre' en la página de Debian "¿Qué significa Libre?". |
Resulta interesante mencionar que Linux es un kernel monolítico que comparte muchas ideas con su contraparte Unix. No obstante, las personas detrás del proyecto GNU tienen una visión diferente de lo que debería ser la próxima generación de núcleos y están trabajando en el microkernel el Hurd. Algunos están trabajando en una versión Debian GNU/Hurd. Se puede ver el estado actual del projecto o descargarlo desde la página Migración a Debian GNU/Hurd
Los núcleos monolíticos son fundamentalmente diferentes a los microkernels y ha habido acalorados debates sobre la utilidad de los microkernels en aplicaciones de la vida real. Linus Torvalds envió un mensaje que decía: “Dí NO a las drogas y quizás no termines como la gente del projecto el Hurd” pero esto son tonterías. Considere, a QNX como ejemplo de microkernel maduro y poderoso. Alan Cox, el encargado del árbol de producción del kernel de Linux (con más simpatía por el Hurd), señaló una vez que el diseño del Hurd estaba más relacionado con la idea de Richard Stallman de cómo debería funcionar un sistema para fomentar la comunidad que con el diseño de un sistema operativo de alto rendimiento. En mi opinión personal, el Hurd y -en general- los microkernels ofrecen muchísimas ventajas sobre los núcleos UNIX tradicionales y su momento esta por llegar. Si está interesado en obtener más información sobre el Hurd, no se pierda los famosos documentos hurd-paper y hurd-talk.
Citemos parte de la página oficial Sobre Debian:
Debian comenzó en agosto de 1993 gracias a Ian Murdock, como una nueva distribución que se realizaría en forma abierta, con el mismo espíritu que Linux y GNU. Debian fue ideada para ser creada con esmero y a conciencia; mantenida y dando apoyo con el mismo cuidado. Comenzó con un reducido grupo de hackers de Software Libre estrechamente vinculado y gradualmente creció hasta convertirse en una comunidad bien organizada de desarrolladores y usuarios.
Ya que mucha gente lo ha preguntado, Debian se pronuncia 'deb ii n'. Proviene de los nombres del creador de Debian, Ian Murdock, y de su esposa, Debra.
Debian es creada por cerca de un centenar de desarrolladores esparcidos por todo el mundo que ayudan voluntariamente en su tiempo libre. Son pocos los desarrolladores que realmente se han encontrado en persona. La comunicación se realiza principalmente a través de correo electrónico (listas de correo en lists.debian.org) y a través de IRC (canal #debian en irc.debian.org).
El Proyecto Debian es una asociación de individuos que han aunado sus esfuerzos para crear un sistema operativo libre. Este sistema operativo que hemos creado se llama Debian GNU/Linux o simplemente Debian por brevedad.
Un sistema operativo es un conjunto de programas y utilidades básicas que hacen que su computadora funcione. La parte principal de un sistema operativo es el núcleo o kernel. El núcleo es el programa más importante en una computadora que permite realizar las tareas básicas y ejecutar otros programas.
Actualmente, los sistemas Debian usan el kernel de Linux. Linux es un programa completamente libre creado inicialmente por Linus Torvalds y con contribuciones hechas por cientos de programadores de todo el mundo.
No obstante, se está trabajando para proporcionar Debian con otros núcleos en especial con el Hurd. El Hurd es un conjunto de servidores que se ejecutan sobre un microkernel -al igual que Mach- para implementar distintas funcionalidades. El Hurd es software libre creado por el proyecto GNU.
Una gran parte de las herramientas básicas que acompañan al sistema operativo provienen del proyecto GNU; de allí los nombres: GNU/Linux y GNU/Hurd. Estas herramientas también son libres.
Desde luego, lo que la gente quiere son aplicativos: programas que les ayuden a realizar lo que quieren hacer desde editar documentos a manejar sus negocios hasta jugar y crear más software. Debian viene con más de 8710 paquetes (software precompilado y empaquetado en un formato sencillo para una instalación sin problemas en su máquina) -- todos ellos totalmente gratis.
Es un poco como una torre. En la base se encuentra el kernel. Encima se encuentran todas las herramientas básicas. A continuación están todos los programas que se ejecutan en la computadora. En la cima de la torre está Debian -- organizando y haciendo encajar todo para que el conjunto funcione armónicamente.
Puede que se pregunte: ¿por qué gastará la gente horas de su propio tiempo escribiendo software, empaquetándolo cuidadosamente para luego regalarlo? Las respuestas son tan diversas como la gente que contribuye. A algunas personas les agrada ayudar a otras. Muchas escriben programas para aprender más sobre computadoras. Más y más personas están buscando la forma de evitar los precios sobrevaluados de algunos programas. Un grupo creciente contribuye en agradecimiento por todo el excelente software libre y gratuito que ha recibido de otros. En las instituciones académicas muchos crean software libre para ayudar a que los resultados de sus investigaciones tengan un uso más amplio. Las empresas ayudan a mantener el software libre de modo de poder ver cómo evoluciona -- ¡no existe manera más rápida de obtener una nueva característica que implementarla uno mismo!. Por supuesto, están aquellos que al igual que a muchos de nosotros simplemente nos resulta terriblemente divertido.
Puesto que Debian se encuentra muy comprometido con el software libre pensamos que iba ser útil que dicho compromiso quedara formalizado por escrito en un documento. De esta manera, nació nuestro Contrato Social.
dpkg es una herramienta de nivel medio para instalar, crear, eliminar y administrar los paquetes de Debian GNU/Linux. En sí dpkg se controla por completo a través de parámetros de la línea de comandos que consisten en un única acción y en cero o más opciones. El parámetro de acción le indica a dpkg qué hacer y las opciones controlan de cierta manera el comportamiento de la acción.
es un sistema de administración de paquetes e incluye las herramientas apt-get, apt-cache apt-cdrom. Sus puntos fuertes son las actualizaciones sin problemas de programas, el cálculo automático de dependencias y su uso sencillo.
es otra interfaz de dpkg basada en ncurses. Posee más características que apt pero requiere de mayor tiempo para acostumbrarse a su uso (no siempre es tan eficiente como apt).
nos permite seleccionar una categoría completa de programas de una sola vez (del tipo, “instalar todo de la sección 'juegos' ”).
(de 'manual') las páginas del manual ofrecen una interfaz común para la documentación bajo UNIX. Por ejemplo, si existe un programa llamado "mkdir" y lo escuchó nombrar en algún lado pero no sabe para qué sirve, escriba 'man mkdir' y lo averiguará.
el sistema info es la manera en que GNU documenta las cosas. Algunas herramientas importantes GNU tienen páginas del manual muy breves y la verdadera documentación se encuentra oculta en las páginas info.
Con estos términos nos referimos a la cuenta que tiene los privilegios para hacer absolutamente todo (sí, esto incluye borrar todos nuestros archivos, bloquear nuestro acceso al sistema y reportar nuestros verdaderos ingresos al fisco :). No hay que confudir este término con el 'directorio raíz' que se detalla más abajo.
Tras autenticarse, ingresará al directorio principal de su cuenta (directorio home). En él tiene control absoluto para leer, crear y borrar archivos (estos permisos no los tiene en el resto del sistema). Para ver cuál es el directorio, escriba 'pwd' (verá algo similar a /home/su_nombre). Esté donde esté escriba simplemente 'cd' para volver a su directorio home. El 'tilde' (~) es un carácter especial que se expande en su directorio principal (pruebe con 'echo ~' o 'vim ~/.bashrc').
En UNIX, las diferentes particiones se muestran como directorios (se dice que están "montadas"). El directorio base siempre es "/" y se denomina "directorio raíz". Así en Windows se habla de las unidades de disco C:, D: etc. en tanto que en UNIX (y Linux) de directorios. Su disco D:, por ejemplo, podría estar montado en el directorio /mnt/discowin-D bajo Linux (obviamente, la ubicación es arbitraria).
El directorio /etc contiene prácticamente la totalidad de los archivos de configuración. Por lo tanto, cuando alguien le pide que edite el archivo de configuración de syslog quiere decir que debe ir al directorio /etc/ y editar el archivo syslog.conf. Como regla general, la mayoría de los paquetes poseen un archivo de configuración denominado <paquete>.conf o almacenan sus archivos de configuración en el directorio /etc/<paquete>/.
Observación: | |
---|---|
Para una descripción completa de la estructura del sistema de archivos y directorios, consulte la subsección La estructura de archivos del Manual de Referencia del usuario Debian. |
Se trata de un directorio virtual semejante al resto de los directorios del sistema pero cuyo contenido dinámino proviene directamente del kernel y no de los archivos del disco. Lo utiliza el kernel para guardar temporalmente información sobre el sistema y los procesos que están ejecutándose. Algunos de los archivos incluso se pueden modificar y usarse para poner a punto el comportamiento del sistema.
La palabra binario es un término habitual con la que se designa cualquier archivo de datos en formato binario (de dos dígitos). Sin embargo, a menudo se usa como sinónimo de ejecutable. Así es habitual escuchar "¿dónde se encuentra el binario ttysnoop?" o "el binario se encuentra en el directorio /usr/sbin".
En general, este término no se refiere a una foto o dibujo , sino a datos raw (de bajo nivel). Por ejemplo, los datos de un cd contiene el sistema de archivos ISO9660 y otros archivos. Puede usar la utilidad típica de UNIX dd para crear una imagen de dicho cd en el disco duro (la salida sería -obviamente- un único archivo raw, es decir, una copia exacta de bits del medio original). Esto significa que se verá como un dispositivo válido e incluso podrá montarlo en forma local (usando la opción 'loop')
Un proceso del sistema que se ejecuta en segundo plano, generalmente durante largos períodos, y dedicado a satisfacer los pedidos de los usuarios. Ejemplos de demonios son httpd (Apache), telnetd, ftpd (ProFtpd) o sshd (Openssh).
Nombres para referirse al Sistema XWindow (nuevamente: "Sistema XWindow") que proporciona el entorno de ventanas (tanto en máquinas locales como remotas). XFree86 es una implementación open-source del protocolo X11 usado por la mayoría de los sistemas operativos libres actuales (véase el sitio web de XFree86).
X11R6 (el "Sistema XWindow") es un estándar industrial para aplicaciones informáticas basadas en ventanas.
Richard Matthew Stallman (ver foto), mítico hacker del MIT, fundador de la Free Software Foundation.
las bibliotecas curses (o las nuevas, ncurses), son un conjunto de rutinas que brindan al usuario un método independiente del terminal para actualizar pantallas de caracteres con una optimización razonable. La implementación Linux es ``new curses'' (ncurses) y constituye el reemplazo de las clásicas curses 4.4BSD, que han sido discontinuadas.
Por lo tanto, cuando decimos que apt-setup es una aplicación ncurses, queremos significar que tiene una agradable interfaz de usuario en modo texto con ventanas, menúes y botones. Las aplicaciones ncurses son, en general, muy convenientes y fáciles de usar. Encontré un enlace a un tutorial sobre programación con ncurses.
Hace referencia a la hora y fecha que el reloj del sistema toma como valor 0. En la mayoría de las versiones UNIX es 00:00:00 GMT, del 1 de enero de 1970; en VMS, es el 00:00:00 del 17 de noviembre de 1858 (fecha patrón de las efemérides del Observatorio Naval de los Estados Unidos) ; en una Macintosh, es el comienzo de la medianoche del primero de enero de 1904.
El tiempo del sistema se expresa en segundos o unidades de tiempo transcurridos a partir del tiempo patrón.
Este es el primer capítulo donde realmente hablaremos del sistema. Como es habitual, comenzaremos con los temas básicos, tales como la instalación de programas o el proceso de apagado del sistema. A continuación, diremos los pasos a seguir para la configuración del hardware (incluyendo el sistema gráfico X Window), haremos algunas sugerencias para tener en cuenta en instalaciones recientes de Debian y proporcionaremos ejemplos de uso de algunos paquetes de software opcionales.
Lo primero que haremos será observar con detenimiento al sistema de administración de paquetes de Debian. Haremos un paseo por dpkg, apt y otras herramientas relacionadas con la administración de paquetes.
Observación: | |
---|---|
Todos las interfaces o frontales (dpkg, apt-get, synaptic, aptitute, dselect, ...) utilizan la misma base de datos. Esto significa que los cambios hechos por uno de ellos son tenidos en cuenta por las otras herramientas y, por lo tanto, no es necesario limitarse a usar sólo una de ellas. |
instala el paquete 'vim', versión 6.0.093, revisión Debian 1. Vale hacer dos observaciones:
Es necesario saber dónde se localiza el archivo .deb y proporcionar su ruta completa.
Dpkg no verifica dependencias de modo que vim se desempaquetará pero su configuración se postergará hasta tanto se instalen todos los paquetes que necesita (una tarea aburrida si se hace en forma manual, véase apt-get a continuación).
elimina el paquete vim si no existen programas que dependan de él. Conserva en el sistema los archivos de configuración.
elimina el paquete vim y sus archivos de configuración.
configura el paquete vim.
configura todos los paquetes pendientes
devuelve un listado con el estado actual de los paquetes del sistema según la base de datos de dpkg.
Fija el estado de los paquetes. Acepta la salida generada por la opción anterior. Por supuesto, también se puede usar para un único paquete: echo “vim hold” | dpkg --set-selections pondrá el paquete vim en 'hold' (al estar en hold, dpkg no lo tocará incluso si existen versiones nuevas disponibles). Una vez modificada la lista, utilice apt-get dselect-upgrade para instalar/desinstalar los paquetes del sistema.
esta opción puede utilizarse con dpkg, pero casi siempre hace que su base de datos se corrompa (debido específicamente al conflicto de versiones) y crea un caos absoluto entre dependencias. Si se desea usar posteriormente apt-get nunca emplee esta opción ya que automáticamente corromperá a apt (no obstante, puede usar 'apt-get -f install' para solucionar el problema).
muestra el listado de paquetes instalados
muestra a qué paquete pertenece el 'archivo'
muestra todos los archivos instalados por el paquete vim
dpkg-reconfigure es una herramienta para volver a configurar los paquetes con debconf activado (aquellos paquetes que utilizan a debconf para formular preguntas y obtener respuestas sobre la configuración local).
vuelve a configurar el paquete gpm. Esto es posible sólo si el paquete (gpm en este caso) se basa en debconf.
vuelve a configurar al propio debconf. Puede optar por modelos de configuración de paquetes interactivos o no. El modo no interactivo resulta conveniente cuando se realiza una instalación masiva de paquetes.
Sugerencia | |
---|---|
A veces (debido a un fallo de la interfaz debconf de un paquete determinado), no podrá configurar con éxito el paquete. Esto es muy probable que ocurra de vez en cuando si usa la rama inestable de Debian. Ejemplos habituales son botones 'Aceptar' que en realidad no aceptan la entrada o campos de textos grisados. Una posible solución para este tipo de problema sería reconfigurar debconf en modo no interactivo para configurar el paquete problemático y volver luego al modo interactivo. |
El paquete apt proporciona algunas herramientas de la línea de comandos, necesarias para usar con éxito apt-get.
apt-setup (cuidado, pertenece al paquete base-config) abre una herramienta para configurar apt basada en ncurses. Básicamente, le permite editar el archivo /etc/apt/sources.list y luego actualizar los archivos de los paquetes (puede hacer lo mismo manualmente con apt-get update).
También vea el paquete netselect que selecciona en forma automática los servidores réplica más veloces.
Y todavía no hemos terminado: puede hacer telnet linuks.mine.nu para obtener fuentes apt interesantes.
Si tiene los paquetes en cds, use la utilidad apt-cdrom para indexarlos.
# apt-cdrom add |
apt-get es una utilidad de apt para el manejo de paquetes. Probablemente sea la manera más conveniente para instalar o eliminar paquetes, ya que calcula las dependencias y configura la lista de paquetes de forma automática.
Mientras dpkg le permite instalar cualquier paquete .deb (suponiendo que se satisfagan sus dependencias), no ocurre lo mismo con apt-get. Apt-get utiliza el archivo /etc/apt/sources.list como su lista de paquetes base; los analiza y crea una gran lista con todos los paquetes disponibles. Por lo tanto, haga lo que haga quedará restringido a los paquetes ya conocidos por apt. Esta forma es elegante y a la vez poderosa de encargarse de la administración de paquetes. Algunas tareas complicadas (como la actualización entera de toda la distribución a una nueva versión) resultan ser tan sencillas en Debian/GNU que ¡no lo podrá creer!
Obtiene y actualiza la lista de paquetes. Invóquelo cada vez que modifique el archivo /etc/apt/sources.list o diariamente si utiliza repositorios de apt remotos (aquellos que podrían modificar su contenido).
instala el paquete vim. Apt utiliza su base de datos interna para conocer la ubicación del paquete (que puede estar en algún cd, en Internet o en una réplica local de apt).
Lo mismo que antes pero instala en particular la versión 6.0.093-1 (utilice apt-cache para ver las versiones disponibles de un paquete determinado).
el nombre lo dice todo.
elimina el paquete vim (y posiblemente otros paquetes que dependen estrictamente de él).
Elimina completamente el paquete vim y otros paquetes que dependen estrictamente de él. Esto incluye los archivos de configuración que normalmente permanecen en el sistema.
actualiza los paquetes del sistema. Que exista o no candidatos para la actualización dependerá de la réplica de apt y de nuestra base de datos local (si un paquete está en Hold no se tendrá en cuenta). Puede utilizar el parámetro -s para controlar qué paquetes en realidad serán actualizados.
Hace algún tiempo leí sobre una herramienta de Red Hat que permitía realizar actualizaciones a través de Internet pero que exigía el envío previo del listado de todos los paquetes de nuestro sistema (de este modo el servidor de RedHat podía compararlo con su base de datos e informar los nuevos paquetes disponibles). Apt no funciona de esta manera: en forma anónima obtiene la totalidad de los listados y en forma local decide qué paquetes nos son necesarios. Uno pensaría que es la única manera razonable de realizar una actualización, pero luego uno ve a gente de Red Hat ...
repara una instalación Debian. Realiza los pasos necesarios para recuperar el orden en la base de datos interna. Resulta práctico cuando se hizo uso de dpkg --force-depends (pero a menudo implica obtener la versión anterior de paquetes o desinstalaciones masivas).
Se puede utilizar apt-cache para consultar la base de datos de dpkg.
muestra la información interna del paquete vim (versión, tamaño, dependencias, conflictos, sugerencias, descripciones ...)
busca en la base de datos los nombres de paquetes o descripciones que contienen la palabra 'vim'.
sólo busca en el campo que hace referencia al nombre del paquete (de otro modo busca en todos los campos).
apt-cache dotty toma un conjunto de nombres de paquetes desde la línea de comandos y genera una salida adecuada para ser usada por dotty que forma parte del paquete GraphViz. El resultado es un conjunto de nodos y ramas que representan la relación entre los paquetes. Por defecto, se muestran todas las dependencias de los paquetes dados como argumento lo que puede originar un gráfico extremadamente grande. Esto se puede deshabilitar fijando la opción APT::Cache::GivenOnly (man apt-preferences).
Los nodos resultantes tiene distintas formas. Los paquetes normales se representan mediante cajas, los 'provides' puros con triángulos, los 'provides' mixtos con diamantes y los paquetes faltantes con hexágonos. Las cajas naranjas significan que la recursión fue detenida, las líneas azules predependencias y las líneas verdes conflictos.
# apt-cache dotty vim | dot -Tps |
Atención | |
---|---|
dotty no puede graficar conjuntos de paquetes muy grandes. |
La utilidad grep-dctrl
El programa grep-dctrl (greps Debian control files) puede responder preguntas tales como
¿Para qué sirve el paquete Debian lo_que_sea?
¿Qué versión del paquete Debian lo_que_sea está vigente actualmente?
¿Qué paquetes están a cargo de Juan Pérez?
¿Qué paquetes Debian están de cierto modo relacionados con el lenguaje de programación Scheme?
y con un poco de ayuda: ¿Quiénes están a cargo de los paquetes esenciales del sistema Debian?
Es un programa grep adaptado para procesar cualquier archivo que tenga el formato genérico de un archivo de control de paquetes de Debian como se describe en el Manual de Empaquetamiento de Debian. Esto incluye el archivo 'available' y 'status' de dpkg y los archivos Packages (de un CD o de un sitio FTP Debian).
Vea los ejemplos de uso en la página del manual grep-dctrl(1).
Esta es otra herramienta que puede utilizar para ver los paquetes recomendados/sugeridos y que aún no forma parte de la distribución estándar de Debian.
El sitio de Erik Warendorf desde donde descargué el script parece que está fuera de servicio.
Herramienta para eliminar paquetes innecesarios de nuestro sistema. Su uso es trivial.
Por ejemplo, para eliminar todos los paquetes innecesarios haga:
# apt-get --purge remove `deborphan` |
El paquete dpkg-repack nos brinda una herramienta para volver a juntar los archivos de un .deb desempaquetado. Reconstruye un archivo .deb a partir de un paquete debian que ya se encuentra instalado en el sistema. Si al desempaquetarlo se ha hecho algún tipo de modificación (por ejemplo, los archivos en /etc fueron modificados), el nuevo paquete heredará los cambios.
Esta utilidad puede facilitar la copia de paquetes de una computadora a otra o reconstruir paquetes que están instalados en su sistema pero que ya no se encuentran disponibles en ningún lugar.
# dpkg-repack vim |
dpkg-divert fuerza dpkg a no instalar un archivo en su lugar habitual sino en otro diferente. Estos 'desvíos' se pueden usar en los scripts de los paquetes Debian para quitar un archivo cuando provoca un conflicto. Los administradores de sistema también pueden usarlo para no tener en cuenta algunos archivos de configuración o cuando algunos archivos (que no se encuentran marcados como 'conffiles') necesitan preservarse de dpkg al instalar una versión nueva de un paquete que los incluya.
Lo utilicé en la configuración de ttysnoop+ssh (ver más adelante):
# dpkg-divert --divert /bin/login.real --add /bin/login |
Es la manera de decirle a dpkg al instalar un paquete que use un propietario o modo distinto para un archivo. Esto puede utilizarse para forzar a programas que se instalen sin el setuid root activado o únicamente ser ejecutado por un determinado grupo.
Consulte la página dpkg-statoverride(8) del manual para más detalles.
Resulta muy importante aprender cómo se comunica el sistema con los usuarios (o administradores). Uno siempre puede encontrar el origen exacto del problema y tomar las acciones adecuadas (tareas sencillas cuya eficacia ha sido demostrada y que ayudan en casi cualquier situación). Por esto, este capítulo ha tenido relevancia en la estructura del documento final.
Durante el arranque del sistema, el kernel muestra una gran cantidad de información interesante (salvo que le haya pasado la opción 'quiet'). La copia de estos mensajes se almacena en el archivo /var/log/dmesg (que aumenta de tamaño con el correr del tiempo).
El comando 'dmesg', no obstante, le mostrará los últimos 4 KB de los mensajes recientes del núcleo.
En UNIX existe un mecanismo estándar para el envío de mensajes provenientes de programas, aplicaciones y demonios al sistema de registro global ('syslog'). Existen pocas implementaciones de syslog y en Debian puede elegir entre el sysklogd del BSD tradicional (la utilizada por defecto en Debian), syslog-ng y msyslog.
Cada mensaje tiene una facilidad (fuente que dió origen al mensaje) y una 'prioridad' (severidad o nivel de importancia del mensaje). La fecha, hora y otra información es generada automáticamente por syslog. El demonio syslog distribuye los mensajes a archivos, tuberías, destinos remotos o usuarios, usando el esquema especificado en el archivo /etc/syslog.conf (en el caso del sysklogd del BSD tradicional).
Todos los registros de un sistema Debian básico ("directo de fábrica") se almacenan en archivos situados en el directorio /var/log/.
Observación: | |
---|---|
Nada impide especificar múltiples destinos para un mismo mensaje. |
Para registrar todos los mensajes del sistema en un único archivo (para propósitos estrictamente educacionales :) añada una línea como la siguiente al /etc/syslog.conf:
*.* TAB /var/log/todos_los_mensajes |
[TAB sirve para advertirle que en realidad tiene que presionar la tecla TAB. La barra espaciadora no sirve]. Cree el archivo vacío /var/log/todos_los_mensajes (elija su preferida, ambas variantes hacen exactamente lo mismo):
# touch /var/log/todos_los_mensajes |
Y vuelva a cargar la configuración del demonio sysklogd:
# /etc/init.d/sysklogd reload |
Vaya a alguna consola virtual y escriba (consulte la página tail(1) del manual):
$ tail -f /var/log/todos_los_mensajes |
Haga algo en su sistema (salga/entre al sistema o use 'su' en otra consola, por ejemplo, y ¡vea cómo aparecen los mensajes!). Esta es una excelente manera de aprender más sobre nuestro sistema y ver cómo funciona. También, es posible detectar cualquier anomalía u error que de otra manera pasarían desapercibidos.
Si está escribiendo scripts de shell o modificando su ~/.bash_profile, puede usar el comando 'logger' para registrar los mensajes vía syslog.
Observación: | |
---|---|
Prefiero que aparezcan todos los mensajes en /dev/tty12, lo cual facilita su análisis simplemente cambiando a la consola virtual 12 (Alt+F12). Si la mayoría del tiempo usa la interfaz gráfica X, considere el paquete root-tail que supervisa los archivos de registro e imprime los mensajes en la ventana raíz. |
Resulta útil enviar todos los registros de ppp a /var/log/ppp.log; de esta manera el comando 'plog' funcionará como es de esperar. Lo siguiente añadirá una línea al /etc/syslog.conf y reiniciará el demonio sysklogd:
# echo "local2.* TAB /var/log/ppp.log" >> /etc/syslog.conf |
El TAB que se ve en realidad hace referencia a la tecla TAB y no a la palabra "TAB".
De www.XFree86.org:
El Proyecto XFree86, Inc es la organización creadora del XFree86, una implementación open-source libremente distribuible del Sistema X Window que se ejecuta en sistemas UNIX(R) y en sistemas operativos del tipo UNIX tales como Linux, todas las variantes del BSD, Sun Solaris x86, Mac OS X (vía Darwin), así como en otras plataformas tales como OS/2 y Cygwin.
XFree86, el programa, proporciona una interfaz cliente/servidor entre el hardware (el ratón, el teclado y la placa de video) y el entorno de escritorio. Además brinda una estructura de ventanas y una interfaz de programación de aplicaciones estandarizada (API). XFree86 es extensible, independiente de la plataforma y trabaja en red en forma totalmente transparente.
Con XFree86 un usuario puede no sólo elegir el entorno de escritorio de su preferencia, sino que -al ser un proyecto de código abierto- puede también modificar y actualizar su sistema para que se vea de la mejor manera posible. Puesto que XFree86 siempre ha sido un partidario incondicional de la libertad del usuario de escritorio, los instamos a personalizar el mismo con la aplicación que deseen, ya sea KDE, GNOME, Enlightenment, Blackbox, AfterStep, fvwm o twm.
El objetivo de XFree86 es lograr que X se ejecute en cada una de las plataformas disponibles (incluídas aquellas que carecen actualmente de soporte) y que sea el mejor sistema de ventanas disponible en dicha plataforma.
Visite la página principal de X Strike Force.
Debian potato (2.2) viene con la versión 3.6.6 de XFree86 mientras que Debian woody (3.0) viene con la versión 4. Vea el estado actual en la página principal de X Strike Force.
X4 trae una gran cantidad de mejoras y actualmente es estándar en Debian. Desde el punto de vista de la administración no existe gran diferencia entre ambas versiones de X pero se harán las observaciones pertinentes en caso de ser necesario.
Puede instalar el soporte básico para X, el administrador de ventanas icewm y el administrador de pantalla wdm haciendo:
# apt-get install xserver-xfree86 xbase-clients xfonts-base icewm icewm-themes wdm |
Observación: | |
---|---|
Si está usando X3, escriba 'apt-cache search xserver-' e instale el servidor apropiado en vez del xserver-xfree86. wdm es similar pero de mejor aspecto que el administrador de pantallas (abre una pantalla de acceso gráfico) xdm de X. Resulta útil tenerlo, en especial si se desea instalar diversos administradores de ventanas para luego seleccionarlos desde su menú. Si usa Gnome o KDE considere usar sus propios programas: gdm or kdm. |
Al instalar los paquetes el proceso de configuración se iniciará automáticamente. Si no logra hacerlo correctamente la primera vez, siempre es posible volver a configurarlos de la siguiente manera:
# dpkg-reconfigure xserver-common |
La interfaz es muy sencilla y debería permitirle crear un archivo de configuración funcional inmediatamente. En caso de problemas, inspeccione en forma manual el archivo de configuración (/etc/X11/XF86Config-4 o /etc/X11/XF86Config) para asegurarse que tiene la opción Driver correcta y que la opción UseFBDev está deshabilitada (estos son los errores más usuales).
Al arrancar X, el servidor elige la profundidad de color adecuada (generalmente 8, 16, 24 o 32 bits), carga la lista de resoluciones disponibles para dicha profundidad y muestra la elegida por defecto. Puede alternar entre las resoluciones definidas con Ctrl+Alt+'+'.
Todo esto se configura en el /etc/X11/XF86Config-4. Veamos un extracto de una configuración con una profundidad de color de 16 bits y con una resolución predeterminada de 1024x768:
... |
Para arrancar en forma explícita con una profundidad de color de 16 bits (si no existe la opción DefaultDepth o resulta ser diferente), haga:
startx -- -bpp 16 |
Si desea seguir experimentando con las velocidades de actualización y resoluciones, modifique manualmente las opciones VertRefresh, HorizSync y Modeline (únicamente X3) del archivo de configuración de X o consulte Directivas de OpenBSD para X.
Observación: | |
---|---|
Puede usar Ctrl+Alt+signo_más/signo_menos para alternar las resoluciones en tiempo de ejecución. |
Para tomar ventaja de cierto tipo de autodetección de dispositivos, vea los siguientes programas:
read-edid, herramienta para obtener información sobre el hardware de monitores PnP VESA
mdetect, herramienta para la autodetección del ratón
discover, identificación del hardware del sistema
Puesto que X está basado en un modelo cliente-servidor (como la mayoría de las cosas en UNIX), se tiene todo un abanico nuevo de características a nuestra disposición. Las discutiremos en lo que sigue.
Sesión típica usuario-local/máquina-local
Cuando inicia X (mediante startx, xinit o X), se abre la primera consola virtual libre (la consola 7 en la mayoría de las distribuciones Linux) y arranca el servidor X (el servidor X usa la variable de entorno DISPLAY para detectar la pantalla objetivo que en este caso es “localhost:0”; “:0” o la variable DISPLAY sin definir tienen el mismo efecto). Éste entonces ejecuta el administrador de ventanas de su preferencia y aparece la pantalla de su escritorio. Puede volver a sus consolas en modo texto mediante Ctrl+Alt+F1, F2 etc... Para volver a su pantalla X use Alt+F7. Para cerrar una sesión X puede buscar algún botón para salir de su administrador de ventanas o usar Ctrl+Alt+Backspace. Así como es posible tener distintas consolas de texto virtuales es posible tener distintas pantallas X en un mismo dispositivo de video (incluso, obviamente, bajo diferentes nombres de usuario): Inicie X (mediante el comando startx& command)), luego vuelva a la consola de texto con Ctrl+Alt+F1, y ejecute 'startx -- :1&'. ¡Felicitaciones! Ahora cuenta con dos sesiones X ejecutándose. Alterne entre una y otra con Ctrl+Alt+F7 y Ctrl+Alt+F8.
Ver un programa remoto en nuestra máquina
Suponga que tiene dos máquinas: Monarch y Denali. Está sentado frente a Denali y le gustaría iniciar algún programa X en Monarch pero que se muestre localmente en el monitor de Denali (OBSERVACIÓN: no se trata de un simple intercambio de archivos. En este caso, el programa realmente se ejecuta en Monarch y sólo su visualización se envía a Denali). Utilizaremos un enfoque muy conveniente (existen otras maneras, por supuesto) - utilizaremos el programa slogin (forma parte del paquete ssh) para ingresar a Monarch. slogin configurará el archivo .Xauthority y la variable DISPLAY en forma automática y todo lo que necesitaremos hacer será lanzar nuestra aplicación. Pruebe con xeyes. Veamos el ejemplo:
denali:~$ slogin monarch |
Observación: | |
---|---|
Debe tener las siguientes opciones activadas para que el ejemplo anterior funcione: X11Forwarding en /etc/ssh/sshd_config y ForwardX11 en /etc/ssh/ssh_config. Para reiniciar el demonio ssh haga /etc/init.d/ssh restart |
Veamos una breve introducción del archivo Documentation/Configure.help (paquetes kernel-doc-*):
AGP (Puerto Acelerador Gráfico) es un bus del sistema que se utiliza principalmente para conectar tarjetas gráficas. Si tiene un sistema AGP, será posible aprovechar las características AGP del renderizado 3D de su tarjeta de video. Obsérvese que ésta es la única manera de poder usar XFree4/GLX junto con el soporte MTRR del bus AGP. Sin él, el renderizado directo OpenGL será un poco más lento pero aún así más rápido que PIO.
El soporte de la Infraestructura de Renderizado Directo (DRI) a nivel del kernel fue introducido en XFree86 4.0 (que lo tendrá si usa Debian Woody (3.0) o versiones posteriores).
X3 posee menos controladores y debe instalar alguno de ellos para un determinado grupo de tarjetas gráficas (por ejemplo, xserver-rage128, mach32, mach64, i128, 3dlabs, agx, 8514, s3v etc...). En X4, lo solucionamos instalando únicamente el servidor xserver-xfree86 que es modular y que carga el módulo adecuado en tiempo de ejecución. El archivo de configuración para X4 es /etc/X11/XF86Config-4 y /etc/X11/XF86Config el del antiguo X3.
Analice los archivos /var/log/XFree86.log y ~/.xsession-errors en busca de pistas.
edite el /etc/X11/XF86Config-4, busque la línea Option "UseFBDev" "true y reemplace 'true' por 'false'
Si sigue sin funcionar, edite el parámetro de configuración Driver=.
Si aún no funciona y suponiendo que la elección del controlador es la correcta trate de modificar los valores HorizSync y VertRefresh. Pruebe con: HorizSync 30-80 VertRefresh 40-90
Asegúrese tener instalado algún administrador de ventanas, haga apt-get install icewm.
Ya tiene el sistema X Window. Dejémoslo en claro: se necesita un servidor X porque es el que sabe cómo comunicarse con nuestro hardware para mostrar gráficos. Pero eso es todo lo que hace. El aspecto de su interfaz en realidad depende exclusivamente del 'administrador de ventanas' que utilice. Si siguió mi explicación, probablemente esté usando icewm pero existen muchos otros (al instalarlos, arrancan por defecto o se muestran en el menú de wdm). Pruebe wmaker, blackbox, afterstep, xfce o enlightenment. También twm al menos por razones históricas y para entender el folklore de Unix ;)
No se sienta decepcionado por el aspecto de wdm o icewm (cada cual tiene su gusto), existe una inmensa variedad para elegir; visite el sitio web Gestores de ventanas para X.
Para conseguir un programa que muestre una pantalla de acceso gráfico (de modo de no tener que entrar en la consola y escribir cada vez 'startx'), instale el paquete wdm (o cualquiera de sus equivalentes; xdm, kdm o gdm). A partir de ahora, podrá seleccionar desde el menú el administrador de ventanas que desea utilizar.
También es posible ejecutar X sin el administrador de ventanas (generalmente para efectuar pruebas). Pruebe arrancar 'xinit'.
Las fuentes disponibles se encuentran en los paquetes xfonts-*. Escriba el siguiente comando para buscarlas:
# apt-cache search xfonts- |
Si está interesado en usar las fuentes ttf de Microsoft, hay servidores de fuentes que pueden manipularlas y les recomendaría probar xfstt. No viene acompañado de fuentes debido a las licencias propietarias. Esto significa que tendrá que conseguir las fuentes ttf por su cuenta, copiarlas en /usr/share/fonts/truetype/, añadir FontPath “unix/:7101” en el /etc/X11/XF86Config, exec '/etc/init.d/xfstt restart' y reiniciar X.
Para visualizar las fuentes instaladas, recurra a los programas xfontsel o gfontview.
Tambiém, consulte el archivo http://www.linuks.mine.nu/fonts/readme.
Es muy probable que tenga problemas con gpm (el controlador para consola del ratón) y XFree86 ejecutándose simultáneamente. La solución consistiría en asignar 'raw' al tipo de repetición en el archivo de configuración de gpm y /dev/gpmdata al 'mouse device' en el archivo de configuración de X, pero no siempre se obtienen buenos resultados. Prefiero tener gpm deshabilitado.
Prácticamente todas las distribuciones GNU/Linux vienen acompañadas de 'consolas virtuales' predefinidas - es decir consolas emuladas a las que es posible acceder mediante la combinación de teclas Alt izq. + F1-F6 (por defecto, sólo se encuentran habilitadas 6 consolas). También, resulta posible usar la línea de comandos para alternar entre ellas - véase el comando chvt.
Para agregar más consolas virtuales, edite (siendo superusuario, por supuesto) el archivo /etc/inittab y añada más líneas similares a éstas:
5:23:respawn:/sbin/getty 38400 tty5 |
[Se puede ver qué campos deben modificarse]. Para que los cambios en el archivo surtan efecto, hay que salir del editor de texto y escribir init q.
Si se crean más de 12 consolas no se podrá acceder a ellas mediante la tecla ALT (pues se cuenta con sólo 12 teclas F). En este caso use la tecla AltGr para abrir las consolas 13 - 24. También es posible alternar en forma cíclica entre las consolas activas mediante Alt + flecha_izquierda o flecha_derecha. La combinación de teclas Alt+Impr_pant permite volver a la última consola virtual donde estuvimos.
Si desea ir de X a una consola, necesita usar Ctrl+Alt en vez de Alt.
El comando deallocvt libera la memoria asociada a las terminales virtuales que ya no se usan [por las aplicaciones, no por Ud. obviamente]. Ya no resulta tan importante, pues posiblemente disponga de gran cantidad de ram y unos pocos bytes no significarán absolutamente nada.
Si no le agradan esas letras grandes de la consola, ejecute lo siguiente:
# lilo -R 'linux vga=ask' ; reboot |
Esto configurará los parámetros de LILO en el siguiente arranque (linux vga=ask) y reiniciará (reboot) nuestra máquina (la elección del modo vga sólo puede hacerse durante el arranque a menos que haya usado el paquete 'svgatextmode' lo cual no es recomendable). Cuando encuentre un modo vga a su gusto, edite el archivo /etc/lilo.conf para hacer el cambio permanente:
image=/vmlinuz |
[debe reemplazar X por el valor elegido, pruebe con '6' por ejemplo]. Ejecute a continuación 'lilo' para que tenga lugar los cambios.
Si ve un pingüino en la esquina superior izquierda de su pantalla, está usando un framebuffer (modo VESA). En este caso, existen más modos disponibles, consulte la tabla de la página del Framebuffer HOWTO.
Instale el paquete fonter para crear/editar sus propias fuentes o usar las fuentes estándar que pueda conseguir:
$ consolechars -f /usr/share/fonter/crakrjak.fnt |
Para ver la distribución de teclado actual, escriba simplemente:
$ dumpkeys > keymap |
Tras configurar el archivo 'keymap' de acuerdo con sus necesidades, vuelva a cargarlo con el comando loadkeys.
Sólo para ver cuan avanzada es la consola Linux, ejecute el programa loadkeys y escriba lo siguiente:
string F1 = "¡Hola, Mundo!" |
Luego presione simplemente la tecla F1 para ver el resultado.
Hacer que funcione una pieza de hardware es una tarea bastante sencilla (auque en el pasado no fue así por lo que la comunidad de desarrolladores la trataron siempre con el debido respeto). Básicamente, debe ser capaz de categorizar su hardware y saber cómo se configuran determinados dispositivos bajo Debian GNU o Linux.
Los discos duros y las lectoras de CD están soportadas por el kernel.
Las tarjetas de sonido y de red están soportadas por el kernel. Las preferencias de audio se guardan en el archivo de configuración de un programa mezclador (aumix, por ejemplo) y la información referente a la configuración de la red se encuentra en el archivo /etc/network/interfaces; consulte la página del manual interfaces(5).
Los adaptadores gráficos pueden usar el soporte del kernel (principalpente para la utilización de AGP y la aceleración por hardware) pero los controladores son generalmente módulos del servidor XFree. Los puede configurar haciendo dpkg-reconfigure xserver-xfree86.
Los ratones son soportados por la consola mediante el paquete gpm o por el servidor gráfico X. No obstante, el kernel necesita soporte del puerto en donde se encuentra conectado el ratón (serie, PS/2, USB ...). Utilice gpmconfig o dpkg-reconfigure xserver-xfree86.
Los módems (los verdaderos, no los winmódems) no requieren de algún controlador en especial. Son soportados por el controlador del puerto en serie del kernel que casi con certeza ya esta habilitado en su máquina. Si posee un winmódem, simplemente olvídelo (dar soporte a dispositivos que son de pésimo diseño no tiene mucho sentido en el mundo Debian). Configure su conexión a Internet a través de la red telefónica con la utilidad pppconfig.
Escáneres, cámaras digitales y dispositivos USB utilizan los "controladores" del kernel o los proporcionados por el usuario (dependiendo del modelo y diseño del controlador). No obstante el kernel necesita tener incluído un soporte básico para ellos.
Debian GNU posee una excelente herramienta para la configuración de los módulos del kernel: la utilidad modconf. No obstante, todo lo referente a los módulos del kernel es trivial. Existen tres comandos básicos (modprobe, rmmod, lsmod) y un conjunto de módulos situados en el directorio /lib/modules/`uname -r` para elegir. Por ejemplo, para cargar el controlador de una placa de red 3Com y un chip de audio integrado VIA de AMD tendría que hacer (sin recurrir a modconf):
# modprobe 3c59x |
Y para que se realice la carga de los módulos en cada arranque, debe añadirlos al archivo /etc/modules.
Si desea proceder de esta manera, deberá conocer los nombres de los módulos. Hasta que que adquiera cierta experiencia use modconf.
Observación: | |
---|---|
Si planea compilar su propio kernel use sin dudarlo el paquete auxiliar kernel-package (específicamente, el comando make-kpkg) que le evitará un montón de problemas. Lea el otro documento que escribí que trata la compilación en Debian GNU. |
Resulta muy útil poder utilizar el ratón en consolas de texto. Es posible copiar una porción de texto seleccionándolo y pegándolo con el segundo o tercer botón.
Instale el paquete 'gpm' y automáticamente le pedirá su configuración. Si desea postergarla o si lo hace en forma incorrecta siempre resulta posible volver a ejecutar la herramienta de configuración (llamada gpmconfig) con posterioridad.
Veamos un ejemplo para mi ratón con rueda. Respondí lo siguiente a las preguntas formuladas por gpmconfig:
¿Dónde se encuentra su ratón? /dev/psaux (éste es el puerto PS2, use /dev/ttyS0 o /dev/ttyS1 para los puertos serie 1 y 2).
¿Qué tipo de ratón es? imps2 (la mayoría de los ratones funcionan con imps2 o ps2. Pruebe con 'ms' o 'bare' para ratones seriales)
¿sensibilidad? *dejar en blanco*
¿protocolo de repetición? use 'none'
¿otros argumentos? *dejar en blanco*
Pruebe la configuración y disfrútela.
Para ver cuán bueno resulta ser, use la utilidad hdparm, cambie al modo 'single' y pruébelo:
# apt-get install hdparm |
En máquinas PC de ~1 Ghz PC, verá lecturas de caché de alrededor de 180 MB/sec y discos sin búfer de alrededor de 35MB/sec. No obstante, los resultados pueden variar. Si comprueba un rendimiento pobre (pueden obtenerse valores tan bajos como 2MB/sec), recompile el kernel y haga nuevamente la prueba; es muy probable que compruebe mejoras notables. Si es aventurero, use hdparm e intente poner a punto los parámetros del disco duro; vea si mejora las cosas.
Esta pregunta tenía poco sentido hace pocos años (año <1997) pero actualmente parece ser una necesidad cuando casi todo se esconde detrás de interfaces gráficas y hay chicos que pasan su tiempo aprendiendo destrezas que casi nunca tienen aplicación en la vida real (como saltar de máquina en máquina al igual que en el Quake).
De todas formas, vayamos al tema. Ejecutar una máquina UNIX implica una gran cuota de responsabilidad, en especial hoy donde la mayoría de las personas tienen en sus hogares conexiones a Internet de alta velocidad. Los sistemas UNIX no hacen una diferencia fundamental entre los usuarios locales y los remotos. Cualquiera que consiga acceso a su máquina (especialmente a cuentas privilegiadas) puede comprometer a su sistema y a otras máquinas de su red o atacar a otros sitios de Internet y borrar sus pistas. Dependiendo del éxito del ataque, le queda como consuelo el acceso físico a la máquina y la habilidad de reinstalar todo (dejando de lado las copias de respaldo que no hizo).
Por lo tanto, introduciremos el tema de los firewalls:
Un firewall es un conjunto de programas relacionados, situados en la puerta de enlace (gateway) de una red o en la máquina del usuario, que protege los recursos privados del [ab]uso de usuarios no autorizados. En pocas palabras, un firewall examina cada paquete de la red para determinar si debe enviarlo a su destino. Un firewall a menudo está en una computadora especialmente destinada para este fin y separada del resto de la red de modo que ninguna solicitud entrante pueda acceder directamente a los recursos de la red.
Esto significa que usaremos un firewall para controlar el acceso a nuestra máquina teniendo presente de distinguir entre las conexiones iniciadas por nosotros y aquellas iniciadas por usuarios remotos.
Atención | |
---|---|
Instalar y configurar un firewall de ninguna manera es suficiente para hacer cumplir la política de uso de un sitio o proporcionar un nivel de seguridad satisfactorio pero constituye una gran diferencia en comparación con un sistema básico ('salido de fábrica'). [Tener un auto no lo hace conductor, pero satisface un requisito previo fundamental]. |
En Linux, los firewalls han evolucionado. Las antiguas versiones 2.0 del kernel usaban ipfwadm, 2.2 tenían las ipchains y la rama actual estable 2.4 ostenta el flamante netfilter, visto con buenos ojos incluso por aquellos que siempre han preferido los sistemas BSD para esta tarea.
En el caso de netfilter la parte del usuario viene dada por el paquete iptables que es una interfaz de bajo nivel vinculada con las funciones de un firewall con lo cual algunas personas (sí, incluído yo) acostumbran usar frontales; me he dado cuenta que ferm es el frontal. ferm es un 'analizador sintáctico de reglas de firewalls para linux diseñado para configurar y encargarse de reglas de firewall complicadas'. Más que suficiente.
# apt-get install ferm |
Ahora veremos cúal es el aspecto de la configuración genérica de un firewall sencillo. Seguiremos la siguiente política: inhabilitar todo, permitir únicamente el puerto 113, especificar en forma manual las IP y el tráfico iniciado de nuestro lado. Debería leer la página del manual de ferm y los ejemplos de /usr/share/doc/ferm/examples/, pero veamos mis sugerencias para poder proseguir:
Sugerencia | |
---|---|
Si en las reglas utiliza las opciones dport o sport, también debe incluir la especificación proto tcp o la udp. |
Para activar las reglas:
# ferm /etc/security/ferm.rules |
También puede añadir este comando al script /etc/ppp/ip-up para que arranque automáticamente cada vez que realiza la conexión.
Múltiples computadoras pueden compartir una única conexión (generalmente a Internet) instalada en la puerta de enlace. El procedimiento para configurarla es trivial:
En la máquina 'servidor'
# apt-get install ipmasq |
En las máquinas clientes
# route add default gw [server.ip] |
Para que los cambios en el lado del cliente sean permanentes, añada la opción 'gateway' al archivo /etc/network/interfaces. También, asegúrese que los archivos /etc/resolv.conf de las máquinas clientes sean válidos (sirve copiarlos desde la máquina principal si sustituye las referencias a 127.0.0.1 por la IP real del servidor).
Observación: | |
---|---|
Si esto no le funciona (si obtiene errores del tipo 'Operation not permitted' incluso en la máquina 'servidor'), pruebe hacer '/etc/init.d/iptables stop'). Para portátiles o computadoras que a menudo cambian su entorno de red consulte el paquete divine. |
Ya antes hemos mencionado al archivo /etc/inittab. Durante el arranque del sistema, el proceso init (que es el primer proceso que ejecuta el núcleo y siempre tiene el PID igual a 1) lee este archivo y, entre otras cosas, inicializa las consolas virtuales generalmente iniciando el comando getty en ellas. El sistema getty habilita el indicador de acceso en las consolas especificadas y queda a la espera de usuarios.
Cuando ingresa su nombre de usuario y contraseña, su pedido de autenticación alcanza la capa PAM (Pluggable Authentication Modules), donde se comprueba su validez (usando las reglas /etc/pam.d/login); generalmente la verificación incluye la lectura de los archivos /etc/passwd, /etc/group y /etc/shadow para confirmar la contraseña del usuario y la fecha de caducidad. Nótese que estamos hablando aquí sobre la configuración predeterminada. El sistema PAM tiene una infinidad de opciones de configuración y no debería ser muy difícil poder usar analizadores de retina en vez de contraseñas para autenticar usuarios.
En un principio, PAM fue desarrollado por Sun Microsystems pero la gente de Linux mantiene un árbol de desarrollo de Linux-PAM bastante compatible. Para obtener los manuales para el desarrollador, administrador y usuario de Linux-PAM busque en el sitio FTP de kernel.org (la documentación de PAM no se encuentra www.tldp.org).
Observación: | |
---|---|
Getty espera a que acceda al sistema, pero si la primera vez no logra autenticarse con éxito el siguiente indicador de acceso que verá no será servido por getty sino por el propio programa /bin/login. Tiene casi el mismo aspecto, pero espero que sepan apreciar la diferencia. Verán nuevamente el verdadero getty cuando finalicen de hacer su trabajo y salgan del sistema, o bien cuando alcancen el límite máximo de intentos de acceso. En estos casos el /bin/login finalizará y el proceso init iniciará otro getty en la consola. |
Si PAM le da luz verde, el programa login inicia un intérprete de comandos o shell (cúal de ellos dependerá del último campo de su registro situado en /etc/passwd). A continuación, el intérprete:
Ejecuta el /etc/profile
Ejecuta el archivo punto ~/.bash_profile o el ~/.profile si el primero no existe
Por último, proporciona el indicador del intérprete de comandos (shell).
Observación: | |
---|---|
El usuario root NO lee el /etc/profile y su archivo punto se encuentra en /root/.profile. Sólo se trata de una convención. El archivo punto del superusuario no es usado necesariamente por el sistema ya que ~/.bash_profile tiene prioridad si se encuentra presente. Asimismo, el ~/.bash_profile es leído sólo si utiliza el shell bash (consulte el último campo de 'getent passwd $USER'). Si su intérprete de comando es /bin/sh o algún otro, sólo se leerá el archivo ~/.profile (si es que existe). |
Si ingresó al sistema como superusuario cree una nueva cuenta de usuario con el comando 'adduser' y reabra la presente guía. La cuenta de superusuario (root) debe utilizarse únicamente para tareas administrativas y con el debido cuidado. Para ilustrar por qué se desalienta el uso de la cuenta de superusuario para tareas cotidianas, citaré un buen resumen de los dichos de usuarios Debian en el canal IRC #debian@OPN:
Se ha dicho que la cuenta de superusuario es una cuenta administrativa: úsela sólo cuando necesite el poder del usuario root. Por lo tanto, no lea el correo, compile programas o ejecute aplicaciones como superusuario. Ni siquiera piense usar irc siendo superusuario pues aumenta el peligro de vulnerabilidades y troyanos (tales como bliss).
Si visita #debian on irc.openprojects.net, y sus miembros comprueban que se ha conectado como superusuario es altamente probable que lo pongan en evidencia.
Siempre debe entrar al sistema como usuario normal y cambiar el ID del usuario actual al del root sólo cuando sea necesario usando el comando 'su' (o instalando mecanismos de control avanzados como, por ejemplo, 'sudo').
El problema radica en que cada vez que se desea cambiar a root es necesario ingresar siempre la contraseña. Para evitarlo (es decir para adquirir privilegios de superusuario sin la contraseña), edite el archivo /etc/group y agregue la siguiente línea (en cualquier lugar)
wheel:x:28:usuario1,usuario2 |
en /etc/pam.d/su descomente la línea (quite el signo # del comienzo o copie la línea si no está)
auth sufficient pam_wheel.so trust |
Esto permitirá a los usuarios 'usuario1' y 'usuario2' escribir 'su' y adquirir privilegios de root sin tener que ingresar la contraseña. Asimismo, les permitirá iniciar procesos como superusuario mediante comandos: su -c '/comando/a/ejecutar con argumentos'.
Sugerencia | |
---|---|
Para comprobarlo por primera vez, salga por completo del sistema e ingrese nuevamente para actualizar la información referente a los grupos. |
Atención | |
---|---|
Obsérvese que una vez hecho esto, la seguridad del sistema dependerá de las contraseñas de las cuentas de los usuarios usuario1 y usuario2. |
Puesto que la mayoría de las cuentas en nuestra máquina se usarán en forma local no querrá que otras personas accedan al sistema en forma remota ¿no es cierto? (se necesita la contraseña de una cuenta para ello pero es posible obtenerla más fácilmente de lo uno se imagina). Edite el archivo /etc/security/access.conf, lea la breve información que se acompaña y añada lo siguiente:
-:usuario1 usuario2:ALL EXCEPT LOCAL |
Esto deniega a las cuentas usuario1 y usuario2 el acceso al sistema desde cualquier ubicación salvo desde nuestra propia máquina.
Sugerencia | |
---|---|
Para que sshd reconozca las restricciones, necesita escribir la directiva 'UseLogin Yes' en el archivo /etc/ssh/sshd_config y reiniciar sshd (/etc/init.d/ssh restart). |
Actualmente, los limitadores de TCP (Tcp wrappers) son parte estándar de Debian y permiten controlar de forma sencilla el acceso a los servicios del sistema (la mayoría de ellos lanzados por el meta-demonio inetd). Si desea deshabilitar todo los servicios a direcciones remotas, debe comprobar que el archivo /etc/hosts.allow esté vacío y añadir la siguiente línea al archivo /etc/hosts.deny:
ALL: ALL EXCEPT LOCAL 127.0.0.1: DENY |
Para más información (incluyendo cómo activar los comandos del sistemas ante peticiones entrantes) lea las páginas del manual hosts_access(5) y hosts_options(5).
Observación: | |
---|---|
Un limitador de tcp y un firewall tienen muy poco en común; el nivel en el que tiene lugar la decisión de permitir/denegar el paquete es radicalmente diferente. En un firewall, ocurre en el nivel más bajo, a nivel paquete: el paquete en cuestión, un puerto ftp por ejemplo, puede ser descartado por el firewall tan pronto sea recibido por el hardware de la red y procesado por la capa de red del sistema operativo (no alcanzará ni siquiera al demonio ftp). Con el limitador de tcp, el paquete alcanza su destino (o, por lo menos, a inetd). La comprobación de la validez del pedido generalmente se realiza antes que el servidor genere un nuevo proceso hijo para servir al pedido entrante. |
De vez en cuando deseará desempaquetar un archivo .deb para ver su contenido (o para recuperar algunos archivos del sistema). Afortunadamente, los archivos .deb de Debian no necesitan de herramientas especiales para ser desenpaquetados. Se trata de simples archivos 'ar' que contienen dos archivos: data.tar.gz y control.tar.gz. Veamos algunos ejemplos:
Usando dpkg para desempaquetar el contenido de un archivo .deb a un directorio arbitrario:
$ dpkg -x paquete.deb /tmp/paquete |
Usando 'ar' para desempaquetar el archivo empaquetado y comprimido data:
$ ar x paquete.deb data.tar.gz |
Usando 'ar' para desempaquetar el archivo empaquetado y comprimido control:
$ ar x paquete.deb control.tar.gz |
Observación: | ||
---|---|---|
Si no es cuidadoso al actualizar/instalar una versión anterior del paquete libc gnu de su sistema es muy probable que pierda el comando /sbin/ldconfig y la mayoría de las cosas que haga fallará por este motivo. Si es por eso que está leyendo esta sección, una solución consiste en desempaquetar manualmente el paquete libc6 y copiar el comando ldconfig nuevamente en su lugar; otra cosa que puede hacer es crear un ldconfig vacío lo que solucionará el problema:
|
A menudo, resulta útil verificar los archivos de su sistema, para detectar modificaciones no autorizadas o sólo para recordar qué archivos modificó alguna vez haga
# apt-get install debsums |
Las sesiones en terminales compartidas por diversos usuarios pueden ser muy útiles. En algunas ocasiones, me pidieron que configurara máquinas en forma remota (tales como controladores para tarjetas de audio o soporte para XFree86) y permitiera un seguimiento completo de mis acciones (para fines educacionales y de control).
Es posible lograr este seguimiento usando screen o ttysnoop.
Usar screen para establecer sesiones compartidas resulta muy sencillo pero requiere la cooperación de ambas partes (debe confiar en el otro extremo) e implica compartir contraseñas (lo que no es bueno si se convierte en hábito). Todo lo que debe hacer es entrar como, por ejemplo, 'usuario1' (ssh -l usuario1 localhost) y ejecutar 'screen', luego esperar que la otra parte entre al sistema (con el mismo nombre de usuario obviamente) y ejecutar 'screen -x'.
(Este truco fue proporcionado por electr0n@OPN).
ttysnoop es una herramiente trivial pero muy conveniente que puede se usar para compartir, monitorear o controlar las terminales de usuario. Si ambas partes cooperan, ttysnoop en sí no necesita ninguna configuración especial (con exepción, quizás, del archivo /etc/snooptab): una inicia el servidor ttysnoops y el otro el cliente ttysnoop. No obstante, lograr que al instalarlo ttysnoops se inicie durante el acceso al sistema requiere de algunos cambios en los archivos de configuración del mismo.
Veremos ahora cómo reemplazar el programa login del sistema con ttysnoops y cómo habilitarlo para conexiones ssh. Como ya hemos dicho, el procedimiento es delicado por lo tanto comentaremos cada línea que deberá ejecutar en su intérprete de comandos.
Atención | |
---|---|
Se modificará el archivo /bin/login que es una parte importante de todo sistema UNIX. Esto significa que se verán afectadas todas las aplicaciones que usan /bin/login; en otras palabras, para aquellos usuarios que posean la contraseña de superusuario les resultaría posible monitorear y controlar el flujo de datos establecido (sin contraseña de superusuario, lo podrían hacer de todas maneras pero NO *tan* fácilmente). No notará ningún cambio visual pero recuerde que el servidor ttysnoop se interpondrá entre el programa login y el usuario remoto (/dev/ttyp*). Si desea que determinados servicios no utilicen el pseudo /bin/login, configúrelos para que utilicen el /bin/login.real como programa de acceso (esto es exactamente lo que hicimos con el sistema getty). |
Advertencia | |
---|---|
Habilitar ttysnoop en su máquina resulta peligroso ya que puede violar su política de seguridad o dejar al sistema inutilizado si no se hace correctamente. Por ejemplo, si pierde la capacidad de arrancar X como usuario común, es muy probable que no haya indicado a getty que use el programa login original. En este caso hágalo o ejecute dpkg-reconfigure xserver-common y permita que cualquiera pueda ejecutar el servidor X (algo que no es aconsejable). |
Puede probar la configuración en forma local aunque, por supuesto, la misma idea se aplica a accesos remotos:
haga ssh a su localhost (ejecute: ssh 127.0.0.1 o ssh 0, este último funciona únicamente en Linux)
acceda como superusuario en otra consola virtual (o a otra terminal X) y averigue el dispositivo tty correcto (ttyp*) de nuestro objetivo a espiar:
# w | grep ttyp |
invoque ttysnoop para conectarse con /dev/ttyp0:
$ /usr/sbin/ttysnoop ttyp0 |
escriba su contraseña de root (para autenticarse con ttysnoops) y disfrute su visualización compartida ;p
Cuando se permite la conexión en forma remota a nuestra máquina la forma preferida de hacerlo es a través de ssh. Ni siquiera se moleste con telnet (que es un servicio inseguro y sin cifrado). Si lo necesita para algo especial o sólo quiere tener telnet en el archivo /etc/snooptab hay algunos ejemplos.
Esta es una parte muy interesante e importante en todo sistema UNIX.
En la mayoría de los casos, se tiene al cargador LILO para arrancar nuestro sistema Debian. LILO (LInux LOader) acepta parámetros desde la línea de comandos, pero Debian ha sido configurado para no mostrar el indicador de arranque de LILO. Para que aparezca, mantenga presionada la tecla Alt cuando vea el mensaje 'LILO' (durante el arranque, justo antes que aparezca 'Loading linux ... ') y será capaz de ingresar parámetros arbitrarios al kernel. Cualquier cosa que escriba lo podrá ver posteriormente en /proc/cmdline.
Una vez cargado el kernel, éste lanza a 'init' como primer proceso del sistema. De manera predeterminada, init entra al nivel de ejecución 2 (la mayoría de las distribuciones Linux usan el nivel de ejecución 3) y ejecuta las tareas definidas en el directorio /etc/rc2.d. Los directorios 'init' (es decir, los niveles de ejecución) consisten en un conjunto de enlaces simbólicos a los archivos situados en /etc/init.d/; veamos un ejemplo:
$ ls -la /etc/rc2.d/ | cut -b 57- |
Para un nivel de ejecución determinado, los enlaces que comienzan con una 'S' (started) indican servicios activos mientra que los que comienzan con 'K' representan servicios inactivos (killed). Los números indican el orden en que se ejecutan los guiones (siendo 0 el primero).
A continuación, init ejecuta los scripts locales situados en /etc/rc.boot/ y realiza las tareas especificadas en el archivo /etc/inittab.
Debian proporciona una herramienta útil para agregar o quitar enlaces de un script init del tipo System V (para controlar el arranque/parada de servicios) denominada update-rc.d . Existen por lo menos dos maneras de invocarla:
# update-rc.d -f xdm remove |
La primera línea muestra cómo eliminar el servicio xdm del inicio, en tanto que la segunda cómo recuperarlo. Xdm es la implementación básica de la pantalla de acceso gráfico. Se la puede deshabilitar si se prefiere entrar al sistema en modo consola (aunque nada impide usar ambas en forma simultánea) o si se desea algunas de las alternativas a xdm, tales como kdm, gdm o wdm.
Todos los archivos situados en /etc/init.d/ se invocan de la misma forma definida por la Política de Debian. Cada uno de los servicios del sistema tienen aquí su script (generalmente denominado igual que el propio servicio) que aceptan argumentos genéricos. Veamos un ejemplo:
# ls -al /etc/init.d/a* | cut -b 55- |
Observación: | |
---|---|
|
La distribución Debian viene con una gran cantidad de paquetes de software y existe la posibilidad que pueda elegir entre diferentes aplicaciones que básicamente realizan la misma tarea. Incluso puede tenerlas todas instaladas en el sistema coexistiendo en paz. Puesto que hablamos de Debian, intuimos que debe haber una manera elegante de configurar el sistema predeterminado; y, en efecto, existe una: el sistema de 'alternativos'. Veamos una introducción similar y un ejemplo en la página update-alternatives(8) del manual:
Es posible instalar en un único sistema y al mismo tiempo distintos programas que cumplen las mismas o similares funciones. Por ejemplo, muchos sistemas tienen instalados diversos editores a la vez. Esto brinda la posibilidad a los usuarios del sistema elegir, si lo desea, un editor diferente. Sin embargo, esto dificulta a un programa hacer una buena elección de un editor cuando necesita uno si el usuario no especificó una preferencia en particular. El propósito del sistema de alternativos de Debian es resolver este problema. Un nombre genérico en el sistema de archivos es compartido por todos los archivos que brindan una funcionalidad intercambiable. El sistema de alternativos junto con el administrador del sistema determinan qué archivo es referenciado con este nombre genérico. Por ejemplo, si se encuentran instalados en el sistema los editores de texto ed(1) y nvi(1), el sistema de alternativos hará que el nombre genérico /usr/bin/editor haga referencia por defecto al /usr/bin/nvi. El administrador del sistema puede evitarlo y hacer que haga, en cambio, referencia a /usr/bin/ed y el sistema de alternativos no alterará esta configuración hasta que explicítamente se le pida que lo haga.
Para configurar el mencionado 'editor' alternativo, escriba simplemente:
# update-alternatives --config editor |
Para una lista de los posibles alternativos, consulte el directorio /etc/alternatives/. Es muy probable que desee ajustar las elecciones 'x-window-manager' y 'x-session-manager'.
Resulta muy importante controlar el espacio en disco. Si el disco se llena (en particular su partición /home) es muy probable que se dañen sus archivos de configuración o incluso pierda datos. XFree ni siquiera arrancará si no hay espacio libre suficiente en disco. Un sencillo script para crontab que nos envíe diariamente información sobre el espacio en disco puede crearse de la siguiente manera:
# echo '#!/bin/sh' > /etc/cron.daily/disk-usage |
Asegúrese editar el archivo /etc/crontab para ajustar la hora a la que se ejecutan las partes de cron.daily/ (por defecto a las 06:25 AM).
En UNIX, es costumbre agrupar diversos archivos en un único archivo y luego comprimirlo usando un algoritmo de compresión (gzip, por ejemplo). Veremos aquí, cómo crear y extraer archivos tar, tar.gz y tar.bz2.
# apt-get install bzip2 |
Para descomprimir archivos zip, rar, arj o cab use el comando apt-cache search para buscar los paquetes que necesita instalar.
Si desea hacer réplicas, copias de seguridad o grabar un conjunto de CDs que cumplan con las dependencias, puede recurrir al siguiente truco:
# COLUMNS=200 dpkg -l | grep '^ii' | awk '{ print $2 }' > /tmp/pkglist |
Cuando finalice la descarga, verá todos los archivos .deb en /var/cache/apt/archives/. También, vea el método apt-move sync que se detalla a continuación. Quizás sea lo que realmente necesita.
Esta subsección puede ser de su interés si desea copiar los CDs Debian a su disco (de modo que no tenga que cambiar todo el tiempo los cds de su lectora) o exportar una réplica Debian a las máquinas de su LAN local.
La manera más sencilla de copiar los CDs de Debian al disco duro consiste en usar la herramienta dd y crear directamente las imágenes de los CDs:
# dd if=/dev/cdrom of=/mnt/deb-cd1.img bs=512k |
Luego debe montar la imagen de la siguiente manera (por supuesto, debe añadirla al /etc/fstab si desea que el cambio sea permanente):
# mkdir /mnt/deb-cd1 |
Una entrada de ejemplo en el sources.list tendría siguiente aspecto:
deb file://mnt/deb-cd1 woody main contrib non-free non-US/main non-US/contrib non-US/non-free |
Observación: | |
---|---|
Si bien este procedimiento funciona y es perfectamente válido, si en realidad desea las imágenes de los CDs (para grabar los CDs de Debian, por ejemplo) quizás lo encuentre un tanto inconveniente para otros propósitos (ya que el número máximo predeterminado de dispositivos loop del kernel es 7 y se tienen necesariamente múltiples fuentes en vez de una única que contenga todo). |
Si tiene suficiente espacio en disco encontrará el uso de apt-move muy conveniente. Puede usarlo para copiar los cds al disco, ordenar los arhivos descargados desde /var/cache/apt/archives o permanecer en sincronización con su réplica Debian local.
Primero, instale apt-move:
apt-get install apt-move |
Edite /etc/apt-move.conf, escriba 'localhost' (o el nombre de la réplica en Internet) debajo del campo APTSITES y cambie la opción DIST (a 'woody', si tiene Debian 3.0). También puede cambiar PKGTYPE a 'both' si también desea los paquetes fuente.
Edite /etc/apt/sources.list y deshabilite todas las líneas que hacen referencia a los cds.
Exporte /cdrom con Apache (si usa http://localhost en vez de la réplica en Internet como fuente de paquetes):
# apt-get install apache |
Inicialize apt-move:
# apt-move get |
Ahora por cada CD que desea copiar al disco duro, escriba:
# mount /cdrom |
Si no utiliza CDs sino directamente la réplica en Internet:
# Para mover únicamente los paquetes desde /var/cache/apt/archives/ |
Cuando haya terminado todo, cree los Packages.gz y Sources.gz nuevos:
# apt-move packages |
Observe que la línea gunzip ... es importante, ya que crea los archivos Packages; debe tenerlos si desea usar luego herramientas como debootstrap. Asimismo, necesitará copiar algún archivo Release en el directorio dists/woody/.
Reemplace el repositorio http://localhost/cdrom/ (ya no lo necesitamos más) con la réplica nueva creada e instale xplanet para probarlo:
# perl -n -i -e 'print unless m#/cdrom/#' /etc/apt/sources.list |
Antes de mover, no se olvide de eliminar la entrada /cdrom/ del /etc/apache/httpd.conf.
Los paquetes de software de Debian vienen precompilados para diversas arquitecturas. En el caso de los compatibles con Intel, los paquetes están optimizados para funcionar con todas las variantes i386 en adelante. No obstante, esto significa que todos los binarios del sistema no utilizan absolutamente ninguna de las características avanzadas que se encuentran en los procesadores modernos (Pentiums, por ejemplo).
Ha habido mucho debate si la recompilación local de paquetes brinda alguna ventaja, pero la conclusión general parece ser la siguiente:
La recompilación local tiene sentido en el caso del kernel, la biblioteca C GNU (glibc), las herramientas de compresión (tales como gzip o bzip2) y algunos juegos open-source.
Por ejemplo, para recompilar e instalar el paquete vim haga:
# apt-get -b source vim
TODO: source_builder.pl, apt-get --build, cast
fakeroot dpkg-buildpackage -uc -us
Instalando software a partir de paquetes .tar.gz - el proyecto checkinstall (apt-get install checkinstall)
Dpsyco es un acrónimo de Paquetes Debian de Configuraciones del Sistema (con sus siglas en inglés) y con él puede crear y mantener "paquetes de configuración". Un paquete de configuración es un paquete que reside "encima" de los paquetes Debian normales. Puede sobreescribir archivos normales, parchear el sistema, añadir usuarios y grupos y mucho más.
# apt-get install dpsyco dpsyco-{skel,patch} |
Este es un paquete que crea paquetes Debian que pueden usarse para informar a dpkg sobre los paquetes instalados localmente y sus dependencias. Asimismo, con equivs se pueden crear paquetes vacíos requeridos por otros paquetes.
Nótese que se trata de algo experimental y que si no se utiliza concientemente es posible que dañe su sistema de paquetes. Además no se recomienda su uso para tratar con dependencias rotas. En estos casos resulta conveniente un informe de fallos.
No necesita cargar ningún controlador para reconocer su módem. El reconocimiento tiene lugar en forma automática. El controlador genérico 'serial.o' se encarga de las comunicaciones a través del puerto serie y todos los módems normales entienden el conjunto de comandos AT. Si tiene un winmódem (módems que carecen de algunos chips que son emulados por software y que utilizan recursos del CPU), entonces olvídelo (aunque, existe el sitio web LinModems si no desea escuchar la voz de la cordura).
Escriba pppconfig (siendo superusuario) para crear una nueva conexión y definir los parámetros de configuración. Probablemente lo haga correctamente con sólo seguir los menús, pero permítame darle algunos consejos:
Deje a la palabra "provider" como el nombre de la primer conexión que realiza (de modo que quede como conexión predeterminada)
Elija DNS dinámico.
Método de autenticación: averigue el método utilizado por su ISP. Actualmente, PAP es casi siempre una suposición correcta.
Velocidad del puerto del módem: déjela en 115200 si utiliza un módem externo o defina otro valor si es interno (como, por ejemplo, 57600).
Elija 'Yes' para detectar automáticamente el puerto del módem (vea más abajo qué hacer si no encuentra ninguno).
Ya se encuentra en la pantalla principal y puede modificar las opciones seleccionadas antes de guardarlas al disco. Elija 'Advanced options'. En Europa, es probable que tenga que modificar el campo Modeminit de 'ATZ' a 'ATx3l1m1' (use l0m0 si no desea escuchar el parlante del módem); el 'x3' aquí es importante: si no se pone se obtendrá el error 'NO DIALTONE'.
Observación: | |
---|---|
pppconfig no es más que una interfaz conveniente para crear los archivos /etc/chatscripts/<provider> y /etc/ppp/peers/<provider>. También los puede crear a mano si lo desea. A diferencia de otros sistemas "marcadores", el método pon/poff utiliza la capacidad del pppd para comunicarse con el extremo remoto. /usr/bin/pon constaba de una única línea hasta hace muy poco, cuando se añadió manejo y descripción de errores. |
Para conectarse a su proveedor predeterminado escriba pon.
Para finalizar la conexión, use poff.
Están plog y pppstats del paquete ppp. También puede instalar el paquete 'pppstatus' para un monitor de tiempo real realmente interesante.
Observación: | |
---|---|
Antes de probar plog, asegúrese de añadir "local2.* TAB /var/log/ppp.log" a la configuración de su syslogd; las instrucciones exactas fueron dadas anteriormente en este documento. |
pppconfig no detecta su módem
asegúrese que realmente se trata de un módem compatible Hayes/Rockwell -los winmódems no lo son- que comprenda el conjunto de comandos AT .
asegúrese que el módem esté correctamente conectado a la máquina e intente apagarlo/prenderlo para reiniciarlo
intente especificar manualmente los puertos /dev/ttyS0 a /dev/ttyS3 (puertos com 1 a 4) varias veces (puede que tenga suerte).
ping 161.53.2.66 funciona, pero ping www.google.com no
si la conexión parece funcionar (las luces del módem están encendidas, etc.) pero no puede hacer ping usando un FQDN (¿por qué nunca me gustó este nombre?) - significa que falló la configuración automática del DNS. En este caso, averigue el IP del DNS (Domain Name Service) de su ISP y edite el archivo /etc/resolv.conf. Escriba una línea del tipo:
nameserver ip.dns.servidor |
pppconfig, pon y poff son herramientas excelentes. No obstante, podría probar con otro programa: wvdial. La ventaja de wvdial radica en que detecta automáticamente el tipo de autenticación utilizada por su ISP (si no tiene éxito, intente definir "Stupid Mode = 1" en el /etc/wvdial.conf).
Sorprendentemente, la configuración adsl+pppoe es trivial en Debian. Instale el paquete pppoe, averigue el nombre exacto de su proveedor (enviando el paquete PADI) y lea los últimos párrafos del README.Debian:
# apt-get install pppoe |
Observación: | |
---|---|
También está el programa pppoeconfig. |
Asegúrese tener instalado el paquete ircii (o alguna otra variante del cliente irc, en modo consola irssi o gráfico xchat o kvirc). Luego conéctese al servidor IRC (irc.debian.org, que forma parte de la red FreeNode [antes "OpenProjects"]) y únase al canal #debian:
# su -c 'apt-get install xchat' |
Allí puede pedir ayuda, consejos o simplemente haraganear y conseguir trucos útiles.
Atención | |
---|---|
Espero que hayan notado el su -c ' ... ' de arriba; les permitirá ejecutar apt-get install xchat como superusuario. El mensaje implícito es que no debería usar la cuenta de superusuario para tareas habituales. |
Observación: | |
---|---|
Piense la posibilidad de visitar The serious bit, The Parody Site, y la Petition page para comprender los mensajes que solicitan dinero que seguramente recibirá si pasa algún tiempo en la red OPN. |
Citemos la página del manual popularity-contest que lo dice todo:
El comando popularity-contest obtiene infomación de los paquetes instalados en el sistema e imprime el nombre de los ejecutables más utilizados del paquete asi como el último tiempo de acceso (atime).
Al unificar la salida del programa proveniente de muchos sistemas diferentes, la información obtenida es importante ya que se puede usar para determinar qué paquetes Debian generalmente son instalados, usados o instalados y nunca usados. Esto ayuda a los encargados de Debian a tomar decisiones tales como qué paquetes deberían ser instalados en sistemas nuevos por defecto.
Normalmente popularity-contest se ejecuta como tarea del cron (8), /etc/cron.weekly/popularity-contest, que automáticamente envía por correo los resultados a los encargados de paquetes Debian según la configuración del archivo /etc/popularity-contest.conf.
# apt-get install popularity-contest |
Si escribe 'fdisk -l' podrá ver el listado de particiones de todos los discos de su máquina. Ignore todo (incluso los errores) salvo las referencias a las particiones del tipo FAT16 (para versiones antiguas de Windows) o NTFS (win2k y toda esa Tecnología de Neandertal(tm)). Veamos una salida de ejemplo:
# fdisk -l |
Se tienen dos discos duros llamados /dev/hda y /dev/hdc. Las particiones Windows que estamos buscando se denominan /dev/hda2 y /dev/hda5 (¿se da cuenta? dice FAT16 y NTFS respectivamente). Ahora cree los directorios /mnt/hda2 y /mnt/hda5 (use 'mkdir' ¿lo recuerda?), edite el /etc/fstab y, siendo superusuario, haga:
# mkdir /mnt/hda2 /mnt/hda5 |
Como superusuario escriba 'mount /mnt/hda2' y todos los datos de Windows estarán allí, en el directorio /mnt/hda2/. El mismo procedimiento se aplica a la partición hda5.
Añadiendo lo anterior al /etc/fstab nos hemos asegurado que las particiones Windows se monten automáticamente al iniciar el sistema. Si no es de su agrado, agregue la opción 'noauto' en el campo Opciones ('defaults,ro'). Reemplace 'ro' por 'rw' si desea un acceso completo de escritura-lectura.
Cabe destacar que para montar particiones Windows de MS necesita del módulo del kernel aunque Linux lo carga automáticamente. Vea la salida 'lsmod' después de montar alguna partición Windows (debería ve las palabras 'vfat' o 'nfts').
En este capítulo explicaremos los procesos y la forma en que se ejecutan bajo el kernel de Linux. Además, aprenderemos métodos sencillos para iniciarlos, detenerlos y controlarlos.
Para tener un claro entendimiento del verdadero significado de la palabra "proceso", busqué una explicación formal y clara de la base de datos WhatIs:
Un proceso es una instancia de un programa que se ejecuta en una computadora. Su significado es similar al de 'tarea', un término usado en algunos sistemas operativos. En UNIX, un proceso arranca cuando se inicia un programa (ya sea por un comando de shell escrito por un usuario o por otro programa). Al igual que una tarea, un proceso es un programa en ejecución al que se le asocia un conjunto determinado de datos de manera de poder seguirle el rastro. Una aplicación que está siendo compartida por varios usuario generalmente tiene un proceso en alguna etapa de ejecución para cada usuario.
Un proceso puede iniciar un subproceso que se denomina proceso hijo (y el proceso que lo inició a veces es referido como su padre ). Un proceso hijo es una réplica del proceso padre y comparte algunos de sus recursos pero no puede existir si se termina el proceso padre.
Los procesos pueden intercambiar información o sincronizar sus acciones a través de diversos métodos de comunicacion entre procesos (IPC).
En Linux, los procesos funcionan en áreas de memoria aisladas (denominadas 'segmentos') y si un proceso comienza a comportase en forma incorrecta, seguramente no afectará al resto del sistema.
Para ver el listado de procesos actuales, escriba:
$ ps aux |
Un ejemplo de salida sería:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND |
Los nombres de cada columna se encuentran en la primer fila. Algunas observaciones:
USER: propietario del proceso (esto indica también los privilegios que tiene un proceso).
PID: Número de ID del proceso (es un valor único). Los IDs se usan para distinguir los procesos y generalmente se asignan en forma incremental. Los números no se vuelven a utilizar hasta que el PID alcance su máximo valor (32768 en general).
CPU, MEM: nos informa el tiempo total que la CPU utiliza al ejecutar la tarea (observación: tiempo de CPU no el tiempo real), y la cantidad de memoria actual ocupada por el proceso.
TTY: la terminal de control de un proceso (generalmente el lugar desde donde se inició el proceso). Si el campo está vacío (si contiene el carácter ?), significa que el proceso se independizó del terminal o no fue iniciado en modo interactivo.
STAT: estado actual del proceso - SW = swapped (en swap), S = sleeping (durmiendo), R = running (ejecutándose).
Observación: | |
---|---|
|
El comando uptime informa la hora actual, el tiempo que lleva encendida la máquina, el número de shells de acceso y la carga del sistema:
$ uptime |
Observación: | |
---|---|
Los tres números muestran la carga promedio de los últimos 1, 5 y 15 minutos. |
free muestra la cantidad de memoria del sistema libre y en uso:
$ free |
Mem: la cantidad total de memoria disponible, en uso y libre del sistema. El campo 'shared' indica la cantidad de memoria compartida entre los procesos pero es muy probable que vea el valor cero (0) ya que los núcleos de la serie 2.4 cambiaron su interfaz y este campo se conserva por cuestiones de compatibilidad.
Swap: muestra la misma información pero acerca del espacio de intercambio (swap). El espacio de intercambio generalmente está ubicado en su disco duro y se usa como una extensión virtual de memoria de la verdadera memoria de la máquina (random access memory - memoria de acceso aleatorio). Tener un espacio de intercambio permite al kernel simular que tiene más RAM de la que realmente hay.
El comando top es un monitor de procesos interactivo que muestra el estado de la memoria y del procesador del sistema y que periódicamente actualiza la lista de los procesos que consumen más recursos.
Otros comandos interesantes incluyen sar, iostat y mpstat (del paquete sysstat), vmstat (del paquete procps), las interfaces gráficas lavaps y las pertenecientes a Gnome o KDE.
Hay tres comandos que definitivamente no podemos dejar de tener strace, lsof y fuser. Es probable que no los utilice en seguida, pero considérelos como una inversión a futuro.
La herramienta strace rastrea las señales y llamadas del sistema; su salida puede ser abrumadora pero es aquí dónde entran en juego la práctica y las páginas del manual.
# strace ls |
lsof es una herramienta extremadamente útil que le proporcionará un listado de todos los archivos abiertos.
# lsof -p 1 |
Por último, el comando fuser identifica los procesos que están usando archivos o sockets.
# fuser -v /dev/tty1 |
Un proceso es, como ya hemos dicho, una instancia de un programa. Un programa puede ser un archivo compilado (binario) o un script que necesita de un intérprete para ejecutarse. Instale el paquete file de modo de poder usar el comando file en nuestra demostración. El programa /bin/ls es un ejemplo de archivo binario:
$ file /bin/ls |
Veamos lo que nos dice file con otros ejecutables del sistema:
$ file `which dpkg` |
Ahora sabemos que dpkg y apt-cache son binarios compilados ejecutables. También que el comando pon es en realidad un script de shell y que 822-date un script en Perl. Pruebe de verlos con un editor de texto.
Desde la perspectiva de un sistema UNIX, no existe una alguna diferencia entre los ejecutables compilados y los scripts. Todos los archivos necesitan tener el bit de ejecución para ser considerados ejecutables. Los permisos y modos de los archivos no se explicarán aquí, consulte el Manual de Referencia del Usuario Debian, sección 4.4 para ello.
Además del bit de ejecución, los scripts necesitan de una directiva especial (una línea con un signo de admiración) que indica el intérprete que hay que invocar si no se especifica ninguno desde la línea de comandos (si escribe sólo /usr/bin/822-date en vez de perl /usr/bin/822-date o /usr/bin/pon en vez de sh /usr/bin/pon). Analizemos las primeras líneas del script 822-date y corroboremos nuestra afirmación (no se confundan, únicamente estamos interesados en la primer línea):
#! /usr/bin/perl -- |
Muy bien. Esta sección en realidad tuvo el propósito de enseñarles las siguientes tres cosas:
Los archivos ejecutables no son necesariamente binarios compilados; también pueden ser scripts y, si se encuentra presente la línea con el signo de admiración, se pueden iniciar de la misma manera que los binarios verdaderos (es decir, escribiendo sólo su nombre).
Los scripts siempre están asociados con un intérprete específico. Puede escribir "/usr/bin/pon", o bien "sh /usr/bin/pon" ( [nombre intérprete] [script] [argumentos] ).
Los archivos binarios (compilados) tiene también una suerte de intérprete aunque la mayoría de las personas no son concientes de ello. Por ejemplo, para ejecutar el comando ls usando un "intérprete" (en realidad se trata del programa auxiliar para las bibliotecas compartidas), escriba:
$ /lib/ld-linux.so.2 /bin/ls |
Esto puede resultar muy práctico; no obstante, lo dejo como un ejercicio para el lector averiguar exactamente cuándo y cómo se puede usar [¿No les agrada cuando en la documentación dice "ejercicio para el lector" justo cuando las cosas se ponen más interesantes?]
Escriba el nombre de un programa. Esto funcionará bien si el programa realiza su tarea rápidamente o si se trata de un demonio (el cual se pone a sí mismo en segundo plano). De otra manera, no recuperará la línea de comandos pues el programa la considera como si fuese su STDIN (Entrada Estándar).
$ ls |
Escriba el nombre de un programa seguido por un '&'. Esto se denomina 'un proceso en segundo plano'. El proceso devuelve la línea de comandos y continúa ejecutándose en segundo plano (o si no puede funcionar en segundo plano - como ocurre con el comando tee - espera hasta volver al primer plano).
$ tee& |
Use nohup para ejecutar un comando que sea inmune a los cuelgues Útil si desea dejar una tarea ejecutándose en el sistema cuando sale del sistema.
$ nohup ls |
Utilice nice para ejecutar un comando con una determinada prioridad.
$ nice -n 5 top |
Observación: | ||
---|---|---|
Si intenta ejecutar alguno de sus programas desde el directorio actual escribiendo simplemente su nombre, es muy probable que obtenga el mensaje de error "Command not found" [siga entonces mi lección sobre la variable PATH :) ]. PATH es una variable que contiene los nombres de los directorios en donde buscar los ejecutables. Cuando uno escribe el comando ls, el sistema lo localiza (usando el contenido de la variable PATH) en el directorio /bin/ y lo ejecuta. Sólo unos pocos directorios estándar están incluidos en la variable PATH, de modo que tendrá que preceder con un "./" para ejecutar comandos no estándar en un directorio determinado:
|
Espere a que el proceso finalice normalmente (cuando termine su tarea).
$ who |
Observación: | |
---|---|
El comando who tiene un origen famoso, ¡apareció por primera vez en 1967! |
Entre a otra consola virtual, use el comando ps para averiguar el ID del proceso y mátelo (con kill).
# Esto funcionará a menos que el proceso funcione incorrectamente o ignore |
Observación: | |
---|---|
El comando kill en realidad se utiliza para mandar cualquier señal a un proceso no sólo para matarlo; consulte la página del manual kill(1). |
Si el proceso es interactivo (es decir, si no devuelve la línea de comandos), utilice Ctrl+C o Ctrl+D para finalizarlo. La diferencia radica en que Ctrl+C se usa para detener el proceso mientras que Ctrl+D indica 'fin de la entrada' por lo que Ctrl+D a menudo se utiliza para decirle a un programa que deje de leer la entrada y continue procesándola.
$ tee |
Si inicia un proceso con un '&' al final (y permanece en la misma terminal), al escribir 'jobs' lo verá en la lista de procesos en segundo plano. Escriba simplemente kill %[JOB].
$ tee& |
Utilice el comando killall para matar los procesos por su nombre.
# killall ssh |
Utilice pkill cuando necesite matar en forma simultánea una gran cantidad de procesos.
Observación: | |
---|---|
Cuando finaliza un proceso puede ver el estado de su salida es decir, el estado de la salida del último comando ejecutado) escribiendo: 'echo $?'. Un cero (0) indica que el proceso terminó exitosamente; para otros valores (error) consulte la documentación del programa. |
Observación: | |
---|---|
Tenga cuidado con killall. Su comportamiento no es el mismo en todos los sistemas UNIX. |
Enviándole una señal:
kill -STOP [PID] |
Cuando se inicia un proceso en segundo plano y desaparece la línea de comandos, se puede presionar 'Ctrl+z' para traerlo al primer plano y detenerlo. Luego puede recurrir a bg o fg para renaudarlo en segundo o primer plano respectivamente. Incluso puede ponerlo en segundo plano y en un tiempo posterior usar fg para traerlo al primer plano (pero no después de cerrar el terminal de control debido a su disociación con el proceso en cuestión)
También puede pulsar ctrl+s y ctrl+q en el canal STDIN (generalmente su terminal) para pausarlo/renaudarlo.
Los sistemas Linux (y otros sistemas UNIX) tienen una forma de especificar la prioridad de un proceso mediante un número comprendido entre -20 (prioridad absoluta) y 19 (mínima prioridad). El planificador de procesos del kernel de Linux es una importante pieza de software y funciona como es de esperar (a diferencia de algunos planificadores de otros sistemas que no son UNIX).
Los usuarios comunes únicamente pueden usar los valores comprendidos entre 0 y 19 (0 es el valor predeterminado). Para ejecutar un programa (por ejemplo, 'top') con su nivel de prioridad modificada escriba:
$ nice -n 10 top |
En general, cada proceso abre 3 canales de comunicación:
STDIN (la Entrada Estándar, 0) para obtener los datos de entrada
STDOUT (la Salida Estándar, 1) para la salida de datos
STDERR (el Error Estándar, 2) para imprimir los mensajes de error
En una sesión de usuario típica (por ejemplo, al escribir 'ls') las tres están asociadas al terminal donde uno ingresa información y la aplicación muestra su salida e información (incluyendo los errores). No obstante, estos descriptores pueden asociarse a un socket, tubería o a cualquier cosa imaginable (incluso como entrada a otro programa o computadora remota).
Veamos un ejemplo: (grep buscará todos los archivos y mostrará las líneas de los archivo que contienen la cadena '/var/log/messages'):
$ cd /etc |
Claramente, una parte de la salida son datos válidos (provenientes de syslog.conf y syslog.conf,old) en tanto que la otra son mensajes de error (los mensajes 'Is a directory' y 'Permission denied'). A continuación veamos el comando ligeramente modificado con su correspondiente descripción:
# redirigir la salida del error estándar al archivo al archivo |
Puede que desee ejecutar sus procesos mientras está ausente.
El primer truco consiste en usar nohup o '&' al inicio del programa (como hemos mencionado antes).
Si ya está ejecutándose, puede protegerlo con 'disown -h' (pero no encontrará la página del manual de disown ya que es un comando incorporado del intérprete de comandos bash y es comentado en la página del manual bash(1)).
$ ./mi_comando & |
Observación: | |
---|---|
Nótese, no obstante, que no podrá recuperar el control de las funciones de entrada/salida de los procesos una vez que acceda nuevamente al sistema, únicamente se asegurará que no se cierren junto al intérprete de comandos al salir del mismo. |
La mejor forma consiste en usar la utilidad screen que permite renaudar sesiones completas. Haga Ctrl+a,d para disociar y screen -r [ID] para renaudar una sesión. Familiarizarse con screen resulta práctico en shells UNIX remotas o sistemas que aún no poseen consolas virtuales (como ocurre con el Hurd).
Utilice las teclas Mayús + RePág/AvPág para desplazarse por el texto que queda fuera del área visible de la pantalla.
Ctrl+l para despejar la pantalla (o escriba clear)
Ctrl+s detiene la salida del terminal (en realidad, detiene la aplicación que la originó) y Ctrl+q la renauda.
También puede usar la utilidad splitvt para dividir una consola virtual en dos terminales separadas. Una vez hecho (escribiendo simplemente splitvt) puede alternar entre ellas mediante Ctrl+W. Otras combinaciones de teclas son:
Ctrl+o,q : abandonar splitvt
Ctrl+o,4- : disminuir en 4 líneas el terminal actual
Ctrl+o,2+ : aumentar en 2 líneas el terminal actual
Para volcar el contenido de una pantalla a un archivo utilice el comando screendump.
Para mayor información sobre la configuración del terminal, véase las páginas del manual de setterm(1), reset(1), tput(1), tset(1), stty(1), termcap(3) y terminfo(3X). Aquí sólo haremos un breve análisis:
desactivar el oscurecimiento de la pantalla (antiguamente se usaba como un protector de pantallas primitivo)
setterm -blank 0 |
desactivar las señales audibles
setterm -blength 0 |
Observación: | |
---|---|
En X, utilice xset b off. |
fijar los colores del primer/segundo plano
setterm -foreground black; setterm -background white |
ocultar/mostrar cursor
setterm -cursor off; setterm -cursor on |
También, consulte la página del manual console_codes(4).
El núcleo de UNIX está basado en texto y su dispositivo de entrada primario debería ser su teclado. Es muy probable y comprensible que no se sienta atraído hacia un sistema operativo open source hasta que vea los entornos gráficos de escritorio Gnome o KDE, pero si decide profundizar sobre el sistema, valorará su teclado.
Tener un editor de texto preferido (no un procesador de texto, ¡note la diferencia!) es fundamental en UNIX; casi todo lo que haga estará de cierto modo relacionado con texto plano.
La mayoría de las personas le aconsejará empezar con joe, nano, pico o algún editor gráfico ("sólo hasta adquirir cierta experiencia"), pero considero que este enfoque es equivocado. La edición de textos es una tarea demasiado importante como para aprenderla incorrectamente desde el principio. Después de todo, no hay nada que aprender de todos estos editores: son sencillos, con funcionalidades limitadas y su combinaciones de teclas están listadas en la parte inferior de la pantalla de modo que pueda comprender absolutamente todo desde el comienzo.
La categoría de los editores de texto profesionales está reservada para dos viejos rivales: GNU Emacs de Richard Stallman y el Visual IMproved de Bram Moolenaar (o el tradicional vi). Como habrá inferido del título, prefiero vim pero no existe duda que ambos editores son de uso profesional y cualquier preferencia personal merece ser respetada.
No deseo hostigar a los usuarios devotos de Emacs. Tienen mi permiso para omitir el resto de esta subsección.
VIM es el editor de texto para los programadores profesionales. Además de poseer combinaciones de teclas ultra rápidas, macros, abreviaturas, modos de edición, resaltado de sintáxis y autocompletado, puede literalmente encontrar la salida de un laberinto (véase /usr/share/doc/vim/macros/maze/).
Para instalar vim y sus herramientas relacionadas generalmente tendrá que hacer:
# apt-get install vim vim-gtk vim-scripts exuberant-ctags |
Quizás la ventaja más grande de vim (o el antiguo vi) es que muy probablemente se encuentre instalado en cualquier UNIX que pueda imaginar. Si alguna vez tiene que usar alguno de los sistemas operativos UNIX tradicionales me lo agradecerá :)
Además, puede usar a vim como editor de texto predeterminado en sus aplicaciones Gnome, usando el sistema Bonobo (y existe una interfaz gráfica independiente: gvim). Los usuario de KDE pueden recurrir a kvim.
Algo muy importante de destacar es que vim admite diferentes modos de edición. Al ejecutarlo, automáticamente entra al modo comando lo cual significa que no podrá empezar simplemente a escribir ya que lo que escriba será interpretado como comandos y no como caracteres que quiere que aparezca en el documento.
Lo más obvio que puede hacer es pulsar "a" o "i" (Append o Insert) cuando desee entrar al modo edición (de modo de poder escribir algo en su documento). Para grabar y salir, presione ESC (para volver al modo comando) y escriba ":wq" (Write y Quit).
Por supuesto, el tema es demasiado complejo para tratarlo aquí; los remitiré al tutor de vim y a algunos recursos externos:
Escriba vimtutor en la línea de comandos
Observación: | |
---|---|
En definitiva, no pierda la oportunidad de aprender vim o Emacs GNU antes de seguir. Es un esfuerzo que dará sus frutos incluso antes de comenzar ;-) |
Abra la página del manual bash(1), escriba /^SHELL BUILTIN COMMANDS (para buscar dicha frase al comienzo de una oración) y busque 'bind' (escriba /bind).
Puede encontrar más información en el directorio /usr/share/doc/bash/.
Como probablemente sepa en este momento, los usuarios de los sistemas UNIX estándar no poseen permiso de escritura para todo, la lista a menudo se encuentra limitada a diversas ubicaciones temporales y a su directorio personal.
Mientras que la mayoría de los servicios del sistema poseen su archivos de configuración en el directorio /etc/, resulta obvio que los usuarios normales no pueden hacer lo mismo por no poseer los permisos adecuados. En consecuencia, sus archivos de configuración se almacenan en archivos punto situados en su directorio personal. Un archivo punto es simplemente un archivo cuyo nombre comienza con un punto (por ejemplo, ".vimrc"); estos archivos se encuentran ocultos y no se muestran en la salida del comando ls salvo que utilice la opción -a (--all).
En general, las aplicaciones usan fallbacks para cargar la información de configuración. Esto significa que primero verifican las opciones de la línea de comandos que tienen la prioridad más alta, a continuación tienen en cuenta las variables de entorno, luego los archivos punto y por último los archivos de configuración genéricos (que pueden estan en el directorio /etc/).
En general, una aplicación crea sus archivos puntos cuando se la ejecuta por primera vez.
Supongamos que prefiere la salida estructurada de 'ls -al' pero escribiendo tan sólo 'll' en vez de 'ls -al'. La solución a este problema se llama 'alias' y se implementa a nivel del shell. Edite su ~/.bash_profile y añada algo así:
alias ll='ls -al' |
Vuelva a cargar el archivo de configuración:
# Escriba |
Escriba ll y disfrútelo :)
Observación: | |
---|---|
Como habrá comprobado el formato de los archivos .bash_profile y .bashrc es muy sencillo: se ponen los mismos comandos que se hubieran puesto en la línea de comandos. Hemos guardado la información del alias en ~/.bash_profile ya que queremos disponer de ella cuando accedamos al sistema la próxima vez (de otra forma, deberíamos escribir el comando del alias en la línea de comandos) |
Casi con seguridad, está usando el intérprete de comandos bash (echo $SHELL) con soporte 'readline' incluido. Readline es la "biblioteca que lee la entrada cuando se usan shells interactivos". A pesar que los usuarios UNIX tradicionales aborrecen a bash (una pérdida de memoria según dicen) junto con readline forman un entorno de usuario tremendamente eficiente.
Veamos algunas de sus características:
Escriba 'history' para ver un listado de los comandos ejecutados con anterioridad. El histórico se guarda en el archivo ~/.bash_history. Los nuevos comandos se van agregando al archivo cuando se cierra una sesión en el terminal. Si desea salir sin guardar el histórico, se puede cerrar el shell con kill -9 $$ o kill -9 0. No obstante, ésta no es la forma habitual de hacerlo. Lea sobre el comando history en la página del manual de 'bash' para deshabilitarlo correctamente (la página del manual de bash es muy extensa, al abrirla escriba '/hist' para buscar las secciones que hablan sobre este comando).
Utilice las teclas Flecha Arriba y Flecha Abajo para desplazarse por el búfer del histórico (que se guarda entre sesión y sesión). Utilice las teclas Inicio y Fin para mover el cursor al principio o al final de la línea actual. Si estas últimas teclas no funcionan, se puede lograr idéntico resultado con Ctrl+a, Ctrl+e (y el retroceso con Ctrl+h).
Utilice la tecla TAB para completar el nombre de un archivo o comando. Escriba 'cat /etc/syslog.' y presione TAB para ver qué sucede.
Utilice Alt+. (punto) o Esc, Mayús+_ para repetir el último argumento del comando anterior. Para elegir el argumento que desea repetir, use: Esc, número_arg, Ctrl+Alt+y. Pruebe hacer:
mkdir x |
Eventos
!! : repite el último comando
!-1 : repite el último comando
!co : repite el último comando que empieza con 'co'
!n : ejecuta el n-ésimo comando del histórico
Presione Ctrl+R y empiece a escribir un comando hasta encontrar la línea que buscaba (esta "búsqueda recursiva" busca en el búfer del histórico el comando más parecido al fragmento de texto ingresado).
Hay algunos consejos cuando se desea cambiar de directorio: se puede volver al directorio anterior donde estábamos escribiendo 'cd -'. Se logra el mismo resultado (aunque es posible agregar más nombres de directorios en la lista) con pushd y popd (ejemplo, 'cd /bin; pushd /etc/; popd')
Probablemente desee saber los nombres de los programas que puede lanzar desde la línea de comandos. Veamos un pequeño truco: escriba 'a' y presione la tecla TAB dos veces. Verá todos los comandos que comienzan con la letra 'a' (pero esto no es nada del otro mundo: idéntica información se puede obtener ejecutando simplemente 'ls' en los directorios /bin, /usr/bin y /usr/local/bin).
Como el nombre lo sugiere, el archivo a buscar es ~/.xsession. Puede encontrar un ejemplo adecuado en /usr/share/doc/xfree86-common/examples/.
El archivo ~/.Xdefaults es el lugar para poner a punto los recursos de X (invoque el comando xrdb -load ~/.Xdefaults desde el archivo ~/.xsession para cargarlo).
Los gustos varían; algunos prefieren fondos de un único color, otros prefieren gradientes y algunos eligen imágenes.
Encontré que es posible crear fondos con un aspecto muy agradable usando el paquete xplanet (instale xplanet y xplanet-images):
$ xplanet -blend -grid -label -projection mercator -quality 100 -rotate 45 -cloud_image clouds_2000.jpg& |
Observación: | |
---|---|
La imagen clouds_2000.jpg se la puede localizar en la página del proyecto xplanet y es un mapa real de las nubes que circundan la tierra (actualizada cada 3 horas y de un tamaño de 500kb). Es posible hacer que xplanet genere una nueva imagen cada 5 minutos; consulte la página del manual de xplanetbg(1) y modifique el archivo ~/.xsession si le agrada la idea. |
El paquete debian-propaganda se pueden encontrar buenas imágenes para utilizar como fondo.
Se pueden configurar los fondos en forma manual con los comandos xsetbg, xsetroot o Esetroot (del paquete eterm).
# Utilice el tradicional xwd |
Asegúrese que el fallo se puede reproducir y que está usando la versión más actual.
Inicialice las variables de entorno DEBMAIL y DEBFULLNAME:
# export DEBMAIL="alguien@algo.org" |
# reportbug -bx [paquete] |
Atención | |
---|---|
NO se involucre informando un fallo a menos que esté 100% seguro que ha encontrado un verdadero problema. Antes de pensar "es un fallo", pregúntese si en realidad tiene la suficiente experiencia (sobre un tema determinado) para decir si es un fallo o si no lo es. A continuación verifique si el problema ya fue dado a conocer. Los encargados de los paquetes tienen bastante cosas que hacer como para encargarse de informes de "fallos" falsos y/o ridículos. Sin embargo, a pesar que le pueda parecer maravilloso informar sobre fallos (y se sienta que está "contribuyendo" con el proyecto), debería tratar no apasionarse demasiado. Existen mejores maneras de contribuir con Debian (escribiendo documentación y páginas del manual, por ejemplo). |
Estamos muy cerca del final de esta guía. Como dije al comienzo:
lo que cuenta es la idea y la lógica, no la implementación exacta o los detalles de uso.
Para finalizar resumiremos los puntos claves que he intentado fomentar en todo el documento:
Debian no sobreestima la inteligencia de un usuario de sistemas promedio.
Es normal no saber absolutamente todos los detalles de uso directamente de memoria (en especial si aún no los ha aprendido :). No obstante, proceder con la lógica correcta es fundamental para desenvolvese en UNIX.
A continuación veamos una lista hipotética de los pasos a seguir cada vez que tropiece con un problema:
Defina correctamente el problema:
¿Qué desea hacer?
Divida su problema en etapas lógicas. Si no puede precisar exactamente lo que necesita hacer, madúrelo durante la noche. Enfóquelo desde la perspectiva más amplia posible.
¿Tiene sentido su idea?
Si funciona "la mayor parte del tiempo" significa que tiene algún tipo de problema y requiere de un esfuerzo adicional para abarcar los "casos particulares" y existe la posibilidad que todo salga mal. Esta usando un entorno pensado para estar exento de soluciones a medias ¿lo recuerda?. Vuelva a plantear su problema y empiece de nuevo.
¿Su problema es similar a los resueltos en UNIX/GNU/Debian/Linux?
Tener poca experiencia e intentar a toda costa reinventar la rueda es una pérdida de tiempo y dinero. Intente buscar un problema similar al suyo y re-utilice el mecanismo general usado para su resolución.
Pruebe buscar en las páginas man e info de su sistema. Asegúrese tener instalado man-db con el setuid root activado (dpkg-reconfigure man-db), luego ejecute mandb recrear los índices del caché. Esto le permitirá usar los comandos apropos y whatis que le ayudarán a encontrar la(s) página(s) que contengan una respuesta.
Para convertir las páginas man o info en archivos de texto, aproveche las tuberías de UNIX:
$ man dpkg | col -b > /tmp/dpkg.man.txt |
Consulte los directorios apropiados de /usr/share/doc/. Puede usar las utilidades find y grep para filtrar el material útil.
Consulte los sitios web más relevantes; debian.org, El proyecto de Documentación de Linux u otros más relacionados con su problema (vea la sección Enlaces de esta guía).
Utilice Google, google.com/{linux, bsd} o el servicio de de grupos de Google y busque palabras claves.
El IRC (Internet Relay Chat service) es una manera muy conveniente de obtener ayuda directamente de la comunidad, es decir, de las personas que usan o desarrollan los mismos programas que uno usa.
irc.oftc.net : #kernelnewbies, #lartc, #holarse
irc.openprojects.net : #debian, #debian.de, #debian-bugs, #debian-kde, #debian-oo, #c, #offtopic, #perl, #security, #crystalspace, #blenderchat, #vim, #devtools
Puede escribir /msg chanserv info #[channel] para obtener más información sobre un canal específico.
En sí el IRC es sólo un protocolo. Sobre él se han establecido convenciones (especialmente desde que empezaron a aparecer las redes de Sofware Libre).
Las reglas son muy 'sencillas' y no impone restricciones, sólo sugieren determinadas cosas que no debería hacer para no molestar a las personas del canal y aumentar las probabilidades de obtener una respuesta a su pregunta.
Muchos recién llegados, comienzan a discutir sobre temas completamente intrascendentes (incluyendo, pero no limitado, a temas personales) en canales como #debian (que es un lugar -¿quién lo diría?- muy relacionado con Debian). Cuando alguien les llama la atención, se sienten atacados y no muy bienvenidos. Por favor, tenga en cuenta que #debian es un canal grande (500+ personas) y todos tenemos que cumplir con ciertas reglas si deseamos que la totalidad funcione.
He intentado hacer un resumen (la mayoría tomado de la base de datos de apt [apt es un robot del IRC en #debian]) de cosas que debería / no debería hacer:
Si tiene una pregunta, por favor, *hágala*. No la dirija a una determinada persona - pregunte al canal. Si alguien la sabe, la responderá :) Si quiere obtener ayuda más rápido, no pregunte "¿puedo hacer una pregunta?, "¿alguien me puede ayudar? o ¿alguien usa/sabe sobre loquesea?. Sea tan específico como pueda. Específico, informativo, completo, conciso y sobre el tema en cuestión. No exija ni insulte; por favor no haga /msg a las personas sin permiso.
No empiece diciendo que su programa no funciona. No funciona es una afirmación ambigua. ¿Está todo el día sentado en el sofá? ¿Quiere más dinero? ¿Pasa todo el tienpo en el IRC? Por favor, ¡sea específico! Explique qué hace y qué no hace.
No formule preguntas del tipo ¿Alguien puede orientarme sobre xyz?" o "¿Puede alguien decirme sobre xyz?". Si es una persona absolutamente normal llegará a la conclusión que no estamos dispuesto a escribir un libro para Ud. (¡en tiempo real!) o convertirnos en su salvador. La mayoría de los temas de los que se habla son muy amplios, por lo tanto en ausencia de una descripción adecuada no sabríamos ni siquiera por dónde empezar.
Toda la documentación que necesita está disponible y no existe ninguna excusa para no leerla. Preguntar en el canal en vez de analizarla primero es un atajo peligroso que no debería tomar.
No se repita a sí mismo, ni use excesiva puntuación, ni pegue inmensos bloques de textos, ni moleste en forma insistente a la gente en privado. "Jugar" con gráficos ascii es otras de las cosas antipáticas que debe evitar.
Si es un novato Debian (un principiante), no intente responder las preguntas de otras personas, salvo que esté 100% seguro que está en lo correcto. La razón por la que ingresó al canal fue para aprender, no para desinformar a otra gente; no haga más difícil la vida del canal.
Cuando está hablando en el canal con una determinada persona, por favor, preceda los mensajes con su apodo. Actualmente, la mayoría de los clientes IRC permiten completar el apodo con la tecla TAB.
El espectro de los posibles problemas es muy amplio y el esfuerzo necesario para describirlos varía. En general:
No pulse ENTER en vez de la barra espaciadora: no desperdicie renglones. Idealmente, todo debería ocupar un único renglón (y si no es así, es muy probable que su cliente automáticamente lo separe. Por lo tanto: no se preocupe por la longitud del renglón).
Suponemos que intentó resolver el problema por su cuenta antes de preguntar en el IRC, por lo tanto incluya lo siguiente:
¿Cómo obtuvo el programa? (por ejemplo, "apt-get install xxx")
¿Cuál era su objetivo inicial?
¿Cómo procedió?
¿Cuándo específicamente comenzó a tener problemas?
Al formular su pregunta en forma correcta y precisa, le permitirá identificar su problema sin tener que formular otras preguntas.
Además, algunas personas proceden de forma equivocada. Empiezan preguntando sobre un tema y, después de 30 minutos de discusión, mencionan finalmente que es parte de "algo más" y llegan a la conclusión que tomaron el camino completamente equivocado. Describiendo el problema adecuadamente, permitirá a las otras personas evaluar la idea general y no sólo el problema específico.
Relacionados con Debian GNU
GNU
Linux
Índice de programas y proyectos
Gráficos, logos y pancartas
Varios
Documentación
Juegos