viernes, 14 de noviembre de 2008

Aprende Linux

Linux es otro conocimiento importante para agregar a tu Currículum Vitae, en el ámbito laboral te servirá para poder manejarte en un servidor, pero si en realidad te gusta sistemas, encontraras en el un juguete con el cual hacer lo que te plazca.


¿Que es Linux?

Linux es un sistema operativo (OS) creado por Linus Torvalds cerca del año 1991, que junto con los programas del proyecto GNU, nos permiten disfrutar de un UNIX totalmente gratuito y de código abierto.

Comenzó como un juguete para aficionados a la informática, y aun lo es, aunque de a poco fue desplazando a los demás UNIX comerciales de la época, las empresas lo utilizaban y utilizan como sistema operativo de sus servidores, los aficionados como su OS personal, algunas empresas incluso lo utilizan como OS de escritorio.

En un pasado la compatibilidad de las aplicaciones era lo importante, es decir que era importante que sistema operativo utilizaras, ya que la mayoría de los programas estaban escritos para Microsoft Windows y si usabas Linux, un UNIX o un OS de Apple, quedabas afuera.

Hoy en día ha cambiado, ya que todo es el mundo web, lo importante es el navegador (podemos usar el Firefox en Linux) y en cierta medida las aplicaciones de oficina (también podemos usar el Open Office en Linux, que permite leer y guardar archivos en el formato de Microsoft Office). Y los drivers del hardware que compremos, como así muchos otros programas ya soportan Linux.


¿Como Empiezo?

Lo principal es instalarlo, lo primero es elegir que distribución utilizar, una distribución (o distro) es simplemente un individuo o una empresa que tomo el Kernel de Linux (es decir la base del sistema operativo), aplicaciones GNU, otras aplicaciones open source, librerías y el sistema de ventanas X (la aplicación que se utiliza en UNIX para mostrar una interfaz gráfica de escritorio) y los grabo en un CD.

La ventaja de una distro es que alguien se ha tomado el trabajo de hacer eso por vos, trabajo que no es simple ya que juntar y compilar las diferentes versiones de cada aplicación es todo un desafío, la otra ventaja es que al ser la base de usuarios grande, cualquier problemas que tengas es seguro que alguien lo ha tenido y ya este solucionado.

Por eso, si sale una nueva versión de alguna aplicación GNU y quieres usarla en tu Linux, la mejor opción es bajarte una actualización de la distro que uses, ya que esa aplicación ya estará probada por mas gente y los problemas de compatibilidad (que siempre ocurren al cambiar una versión) ya resueltos.

En cuanto a cual elegir, hay muchas, cuando seas experto elegirás la mas conveniente a tus gustos, para un principiante conviene utilizar las mas usadas (a mayor base de usuarios, menos problemas, en teoría), entre ellas:

  • Debian: Distribución muy popular, aunque tal vez no la mejor para un principiante.
  • Red Hat: Otra también muy popular, pero es paga (Linux y GNU son gratis, pero también es valido, es decir legal según la licencia, empaquetarlos en una distribución y cobrar por ello, y eso es lo que hiso esta gente).
  • Fedora/CentOS: Estas dos distros (gratuitas) están basadas en Red Hat (que es comercial), la diferencia esta en que el soporte en estas lo da una comunidad de usuarios. CentOS es estable y 100% compatible (hablando de los binarios) con la versión comercial de Red Hat. El objetivo de Fedora es tener lo ultimo, por lo que puede no ser tan estable, lo que es ideal para aficionados, pero un problema para una empresa.
  • Ubuntu: Distro basada en Debian, relativamente nueva (el primer release fue en el 2004), y también popular. Esta distro de focaliza en la usabilidad y es muy usado para maquinas de escritorio, además de servidores.
  • Slackware: Una gran distro, de las viejas, simple y muy buena para aficionados, aunque creo que dificil para un novato.
Entonces para aprender pueden conseguirse un CD de CentOS (para evitar problemas con Fedora) o uno de Ubuntu.


¿Como lo instalo?

Ya saben que distro usar, el problema ahora es, ¿Como los instalo?, hay varias opciones:

  • En una maquina nueva: Esta puede no ser buena opción, no todo el mundo tiene dinero y espacio para una nueva maquina donde probar este sistema operativo. Si no tienes problema con esto, la instalación es simple, pones el CD en la lectora y sigues los pasos.
  • En una partición: Para alguien nuevo en esto, especialmente si también es nuevo en sistemas, esto puede ser traumático, ya que a veces ni se sabe que es una partición. Una partición es una división lógica de tu disco rígido, probablemente tengas solo una, y esta contiene tu Windows. Es la manera que yo instale el Linux por primera vez, fue divertido, el método consistía en utilizar un programa llamado FIPS.EXE con el cual achicaba una partición de MS-DOS y así podía crear una o mas particiones nuevas para mi Linux. Luego, al igual que con una maquina nueva, podía bootear (arrancar) con el CD y seguir los pasos de instalación, o creabas (lo mas común) dos diskettes de booteo para poder comenzar.
  • Usar VMWare: Esto es lo mas fácil para un principiante, y también muy útil no solo para aprender. El método consiste en instalar el VMWare Player, que es un programa que corre una imagen de disco como si fuera una nueva PC, es decir una PC virtual dentro de tu PC real. Con las computadoras actuales esta emulación casi no se nota (es decir no se ve una perdida de performance), y en cuanto a la estabilidad hoy en día también es casi un 100% estable., además el VMWare Player es gratuito. De la misma pagina de VMWare puedes bajarte imagenes de disco hechas por otras personas, allí tienes cientos de distros de las versiones que quieras. ¡Utilizar Linux con esta opción es tan simple como instalar el player, la imagen y ejecutarla!

Si eliges una de las opciones que requiere instalación (algo que también recomiendo ya que ayuda a que aprendas), hoy en día no tendrás mayores problemas ya que Linux se instala fácilmente, en el pasado, cada paso requería haber leído documentación y entender mucho mas.



X Windows

Al finalizar la instalación estarás en un entorno gráfico parecido al Windows, como ya dijimos es el X Windows System, un programa de ventanas que es estándar en los UNIX, para interfaces gráficas.

Sobre X existen innumerables sistemas de manejo de ventanas (o Gestor de Ventanas). En Windows por lo general minimizamos o maximizamos las ventanas, las movemos, tenemos una barra de tareas, etc, en UNIX solo tenemos el protocolo para comunicarnos con el servidor X, todo el trabajos de maximizar, mover, etc es hecho por otro programa, el gestor de ventanas.

En Linux tenemos varios gestores, como GNOME o KDE entre los mas usados y conocidos, sobre cual usar, eso si lo dejo a su elección.


El Shell

Si utilizaran el Linux solo como un sistema de escritorio, como Windows, entonces, tal vez no es necesario continuar aprendiendo. Pero el verdadero corazón esta en utilizar el shell (en Linux el mas usado es el Bash) y escribir comandos, ya que esto es lo que vale, nadie te contratara por saber GNOME, pero si por saberte manejar en un shell.

Los servidores se acceden generalmente por SSH y todo se maneja con un shell, hay programas en varios UNIX y Linux (como en GNOME y KDE) para la administración de servidores a través de herramientas gráficas en X, actualmente la tendencia sigue siendo o usar el shell o una interfaz web, sea lo que fuere, el shell se seguirá utilizando.


Documentación

El siguiente paso es leer la documentación para aprender. En Linux existen tres fuentes de información tradicionalmente usadas (todo aficionado que aprendió sobre Linux las han utilizado):

  • Linux Guides: Son libros o guias sobre diferentes programas o temas relacionados a Linux.
  • HOWTOs: Los famosos HOWTOs (del ingles "how to"= "como"), también son guias para aprender.
  • Man pages: En Linux (como en cualquier UNIX), en el shell pueden escribir "man" (por "manual") seguido por el nombre del comando del cual quieren saber, y tendrán allí la pagina de ayuda o "manual". No es una pagina amigable (para los acostumbrados a los entornos gráficos y web), pero es lo tradicional en UNIX.

Comandos

A continuación una breve reseña de comandos de Linux (también de UNIX) para que un principiante pueda aprender y manejarse rápidamente en este sistema operativo:

(muchos de los comandos son de dos o tres letras, esto es así ya que en la época del primer UNIX, en vez de pantallas, se utilizaban teletipos, que eran rollos de papel, por lo que escribir muchos caracteres significaba mas gasto de tiempo, papel, tinta, etc).

  • ls: Tal vez el comando mas utilizado, lo que hace es listar el contenido de una carpeta (como cuando en Windows haces clic en una carpeta y vez que archivos contiene).
  • cp: Copia archivos.
  • mv: Mueve archivos (entre carpetas) o los renombra.
  • rm: Elimina un archivo.
  • cat: Muestra el contenido de un archivo
  • man: Muestra el manual o página de ayuda de un comando, por ejemplo: man ls
  • chmod: Cambia los permisos de acceso a un archivo.
  • chown: Cambia el "owner" (dueño) de un archivo.
  • more: Muestra un archivo por paginas, también en Linux se utiliza el comando less (obvia referencia al more) que hace lo mismo, pero permite volver a una pagina anterior.
  • mkdir: Crea un nuevo directorio (carpeta).
  • cd: Cambia de directorio.
  • pwd: Muestra el directorio actual.
  • vi: El vi es uno de los editores de texto de UNIX mas utilizados (también lo es el emacs).
  • grep: Busca un patrón de texto en el o los archivos especificados.
  • bash: Ejecuta un nuevo shell, el bash (Bourne Again Shell).
  • gcc: El compilador de lenguaje C (originalmente cc es el compilador C de un UNIX, gcc es por GNU C Compiler).
  • clear: Limpia la pantalla.
  • ps: Muestra la lista de procesos.
  • date: Muestra la fecha.
  • time: Muestra la hora.

Recuerda también que Linux (y UNIX) es case sensitive, es decir tanto en los comandos como en los nombres de archivos hay distinción entre mayúsculas y minúsculas, escribir "LS" no es lo mismo que "ls".

La lista de comandos, obviamente es mucho mas amplia, y depende de que paquetes de software estén instalados, algunos comandos son del shell (como el echo, set, history, exit, cd, etc), es decir no son binarios ejecutables sino que forman parte del interprete del shell que utilicemos. Y los comandos básicos están en los paquetes Fileutils, Shellutils, Textutils (ahora unidos en un paquete llamado Coreutils).


Jerarquía de directorios


También es útil conocer la estructura de directorios de un Linux (para saber donde esta cada cosa). En Linux hay un estándar que se respeta entre las diferentes distros. A continuación, una breve reseña:

/: El directorio raíz.
/bin: Binarios ejecutables esenciales, como ls, cp, cat, etc.
/boot: Archivos de arranque.
/dev: Dispositivos (en Linux puedes acceder por ejemplo a la memoria o a un disco rígido, como si fuera un archivo).
/etc: Archivos de configuración.
/home: Directorio home de cada usuario del sistema.
/lib: Librerías.
/mnt: Directorio donde montar sistemas de archivos.
/opt: Aquí se instalan paquetes opcionales.
/proc: Es un directorio virtual, provisto por el kernel de Linux, que provee como archivos de texto datos internos sobre el estado de procesos, sobre la red, u otro tipo de información del sistema.
/root: Archivo home del usuario root (root es el usuario con privilegios de administrador en un Linux o UNIX).
/sbin: Binarios esenciales, generalemente utilizados por un administrador.
/tmp: Archivos temporales.
/usr: Este directorio provee una segunda jerarquía de directorios.
/usr/bin: Binarios ejecutables para todos los usuarios (como el compilador de C).
/usr/include: Archivos "headers" del lenguaje C.
/usr/lib: Librerías.
/usr/sbin: Mas binarios ejecutables, generalmente servicios, como el servidor de FTP.
/usr/src: Código fuente.
/usr/X11R6: Todos los archivos del sistema de ventanas X (aquí se repite también una jerarquía /usr/X11R6/bin, /lib, etc).
/usr/local: Una tercera jerarquía, contiene datos y programas específicos a la maquina donde uno se encuentre.
/var: Archivos variables, como archivos de log, email, y demás archivos temporales.




Otra opción interesante y útil

Instalar Linux en una nueva partición puede no ser sencillo para un novato, y utilizar el VMWare puede no ser tan práctico para el uso diario. Pero no aun hay otra opción, utilizar Cygwin.

Cygwin es, en simples palabras, una serie de DLLs (unas librerías de Windows) que emulan los llamados a sistema de Linux, esto significa que provee para cada función de Linux su equivalente en Windows. Además de estas librerías, contiene casi todos los programas que existen en Linux, pero compilados de nuevo en Windows (es decir, son los mismos fuentes que Linux, con algunas modificaciones).

Lo bueno de usar Cygwin es que contiene casi exactamente lo mismo que utilizas en Linux, pero en Windows, hasta tiene un ¡Servidor X! Puedes abrir un shell en Windows, y ejecutar cualquier comando que ejecutas en Linux! Además es gratuito.

Obviamente al estar corriendo bajo Windows, lo que no tienes es acceso a un kernel de Linux (por ejemplo no puedes programar módulos de kernel o LKMs), además de otras diferencias mínimas.


Conclusión

En conclusión Linux es un gran sistema operativo, gratis e ideal para aficionados, ya que lo que provee a un Nerd es:


¡Diversión!


Tienen feedback? Escribanlos en los comentarios.

No hay comentarios.: