Migrando a GNU/Linux (…desde Windows)

De cualquier manera, antes de llegar e instalar una distro,
la mayor parte de la gente espera que su GNU/Linux funcione como un
“Windows, pero mejor”. Es por eso mismo, por lo que es tan importante
tener en cuenta que GNU/Linux, no funciona igual. En ningún
caso esto debiese desanimar al lector, tenerlo claro ayudará a que la
migración sea más fácil. Básicamente, hay que cambiarse el switch. Mi motto
era: “Todo lo que hacía en Windows, puedes hacerlo en GNU/Linux”.
Repito, no es una “versión mejorada” de Windows, ni pretende serlo.

El objetivo de esta serie de artículos será pues, intentar abarcar
los puntos que me parecen más importantes a tener en consideración al
ingresar a las tierras del pingüino.

Dependencias y librerías

Al contrario de las aplicaciones de Windows en que cada aplicación
viene con todas las distintas “partes” y funciones del programa para su
correcto funcionamiento. En los sistemas Unix-like (como
GNU/Linux) cada aplicación depende de la agrupación de muchos
“subprogramas” para que funcione. La idea detrás de este estilo (que
dicho sea de paso es lo que hizo Unix) es que en vez de un gran
programa que realice todo, existan varios programas en los que cada uno
sirviera para una cosa, pero que esa cosa la hiciera bien. Y para
realizar tareas más complejas, hicieron que estos programas pudieran
interactuar entre sí. Estas funciones (o subprogramas) se conocen como librerías o bibliotecas. La gracia de esto va en que si ya existe un programa para realizar algo, ¿para que hacerlo de nuevo?. Esto justamente no pasa en Windows, donde cada programa tiene que venir empacado por completo.

Puede sonar un poco enredado, pero verán que con un ejemplo se aclara todo ;). Vamos a tomar a Evince, un visor de documentos (el que viene por defecto en Gnome),
que entre muchas de sus funciones puede visualizar archivos JPEG, para
esto necesita entender como interpretar el archivo y graficarlo. Para
esto ya existe una librería que lo hace. Además es visor de PDF, por lo que también requiere una librería apropiada para ello. Ahora, supongamos que quiero instalar GIMP,
un programa para manipular imágenes, porque quiero retocar una foto que
tengo en formato JPEG. Para realizar esto, GIMP necesita la misma
librería que Evince, y como ya la tengo instalada, ambas aplicaciones
la comparten (¿mucho más sano, no?).

¿Ventajas?

Esto trae consigo varias ventajas, la que me parece más importante,
es el tamaño de las aplicaciones. Las aplicaciones de GNU/Linux son
notablemente más livianas, puesto que la mayoría de las aplicaciones
comparten librerías, se ahorra harto espacio en el disco. Rara vez
alguna aplicación supera los 100 MB. Por ejemplo, Brasero una aplicación para quemar discos, instalada no supera los 4 MB.

Es así, como veremos frecuentemente el término de dependencias
cuando queramos instalar las distinas aplicaciones. Para nuestra suerte
la mayoría de las distribuciones vienen con aplicaciones que pueden
manejar las dependencias, por lo que tampoco deberían causar muchos
problemas (llevo usando Ubuntu un buen tiempo y hasta ahora nunca he
tenido un problema de ese tipo).

GNU/Linux Atelier  


Ahora es el turno de hablar de la estructuración de los directorios.
La estructuración es bastante distinta entre cada distribución, pero en
general comparten características en común que son las que voy a
mencionar aquí.

Al contrario de lo que pasa en Windows en que lo más “alto” es el
disco duro (por ejemplo C:) y de ahí cuelgan las distintas carpetas,
en el caso de otras unidades, como lectores de CD o pendrives se
encuentran “en parelelo” con la unidad C: (como D:, E: y así). En
GNU/Linux, todo “cuelga” de lo que se conoce como “raíz”, que se
identifica con un slash o “barra” (es decir, “/”). Esto significa que
nuestro lector de CD o unidad Flash se encuentran dentro de este mismo
directorio raíz.

Una diferencia importante a tener en cuenta es que en
Windows, para separar directorios (carpetas) se utiliza el backslash
(””). Por ejemplo:

C:Windows

Mientras que en GNU/Linux se utiliza el slash:

/home/pablo

Como pueden ver, en el primer caso, La carpeta Windows está dentro de “C:”, mientras que en el segundo, la carpeta home, sólo hace referencia al directorio raíz (/).

Otra cosa a tomar en cuenta que es el “primer nivel”. Es cualquier
directorio que se encuentre a un nivel bajo la raíz, por ejemplo /home. Si digo /home/pablo,
estoy hablando de “segundo nivel”. En un sistema de archivos de
GNU/Linux recién instalado, podemos encontrarnos con una gran cantidad
de directorios en la raíz (es decir, de primer nivel). A continuación les indicaré para que sirven, pero antes hay que hacer un pequeño recordatorio.

¿Recuerdan
que en GNU/Linux las funciones se comparten?. Para que pueda funcionar
de esta manera, no tendría sentido que cada aplicación tuviera su
propio directorio (como ocurre en Windows). Traería demasiados
problemas. Para evitar esto, las distintas partes de las aplicaciones
de GNU/Linux se encuentran en distintos directorios, es decir, todos
los ejecutables en un directorio ¿cómo es eso?. Bueno, ahora para
entender un poco mejor este concepto les menciono los directorios más
comunes.

Los protagonistas

estructura1.png

/bin: En esta carpeta se guardan los archivos ejecutables del sistema que pueden ser ejecutados por cualquier usuario, por ejemplo ls, cd.

/boot: Esta es la primera carpeta que se lee cuando
inicia el sistema (en algunas ocasiones el kernel también se ubica
aquí), y además se encuentra la configuración de los gestores de
arranque, que son los que permiten escoger que Sistema Operativo se
inicia cuando se enciende el equipo.

/cdrom: Como se pueden dar cuenta /cdrom es un enlace simbólico a /media/cdrom

/dev: Aquí se almacenan los controladores de
dispositivos o periféricos (para los que vienen de Windows, drivers).
Esto puede resultar raro, pero en los Unix-like todo lo que no es un directorio es un archivo. Esto significa que el teclado, el monitor y hasta el disco duro, es un archivo.

/etc: Principalmente se guardan los archivos de configuración del sistema.

/home: Directorio de los usuarios, en el SS pueden ver que yo poseo 2, casa y pablo. Esto vendría siendo la carpeta C:Documents and SettingsPablo en su equivalente en Windows.

/lib: ¿Se acuerdan de las librerías?, bueno, pues aquí se almacenan para que las distintas aplicaciones puedan acceder. Eso sí, tal como ocurre con /bin en esta carpeta sólo se encuentran las librerías del sistema.

/media: Aquí es donde se montan los dispositivos, como el lector de DVD cuando se coloca un disco, (/media/cdrom), dispositivos USB (/media/pablox, en mi caso).

/mnt: Realizar montajes.

/opt: Generalmente instalaciones grandes pueden usar este directorio, o un directorio optional para realizar instalaciones de otros programas.

/proc: Así como /dev es la interfaz entre el hardware y el sistema de archivos, /proc
es la interfaz entre los procesos, la CPU y la memoria con el sistema
de archivos. Los archivos que están aquí se generan dinámicamente en la
medidad que los consultamos.

/root: Esta carpeta es como el directorio /home, pero para el usuario root (el administrador del sistema).

/sbin: Al igual que /bin se almacenan los ejecutables del sistema, con la particularidad que necesitan ser ejecutados con permiso de root, aquí por ejemplo encontramos comandos como modprobe, fsck.

/sys: Archivos que tienen que ver con la configuración del sistema.

/tmp: Archivos temporales, la misma idea de C:WindowsTemp.

/usr: Este directorio merece una explicación aparte, ya que sus subdirectorios son importantes.

/usr/bin: Al igual que /bin contiene los ejecutables, pero los almacenados aquí son de las aplicaciones que hemos instalado (quizá lo más cercano a C:Archivos de Programa) o que no son del sistema. Acá encontraríamos los ejecutables mplayer y evince, por ejemplo. (Siempre que los tuviéramos instalados claro está).

/usr/lib: Igual que /lib, pero indica que no son librerías del sistema. Ahí podemos encontrar librerías de Firefox (/usr/lib/firefox).

/usr/sbin: Más comandos administrativos.

/usr/share: Como su nombre lo indica, archivos compartidos, como imágenes e iconos (de hecho, al menos en Ubuntu los temas de iconos están en /usr/share/icons).

/var: Como /usr, sus distintos subdirectorios son importantes y sirven para distintas cosas, en general, son archivos de registro.

/var/cache: Se usa de almacén temporal.

/var/cache/apt/archives: Nombro este directorio porque varias veces me han preguntado: “¿Dónde se guardan los “debs” que descarga Synaptic?” (o apt-get en su defecto). Bueno, adivinaste, es en este directorio.

/var/lock: Se guardan archivos que impiden que exista más de una instancia de la aplicación en cuestión (¿les suena un error con /var/lock al tratar de tener abiertas 2 instancias de Synaptic?)

/var/log: Esta es importantísima, en esta carpeta se guardan los distintos registros del sistema, del kernel y de los demonios por ejemplo.

Palabras finales

Esos son los directorios que me parecen importantes, sin duda lo que me parece más importante de esto es cambiar el switch de Windows esperando que los programas estén en “una” carpeta. Recordemos, estamos usando GNU/Linux.

Quizá lo más confuso sea el tema de los ejecutables, no dudo que en
una primera ocasión nos puede parecer incómodo. Pero tiene una gran
ventaja, independiente del lugar que me encuentre si en una terminal
ejecuto un comando, por ejemplo, firefox lo buscará en las carpetas de ejecutables (en este caso estaría en /usr/bin) y se lanzaría Firefox.

Es probable que en este momento estés pensando que es desordenado.
Pero no es así, cuando en la próxima entrega conversemos sobre los
sistemas de paquetes y repositorios te darás cuenta que ni siquiera era
necesario preocuparse del “lugar” donde se instalan las cosas…

GNU/Linux Atelier


Luego de mucho tiempo de tener esto en borrador, ahora sí continúo con la serie de artículos,
en esta ocasión me toca contarles acerca de cómo se lleva a cabo la
instalación de aplicaciones en GNU/Linux, para ello necesitamos
comentar algunos conceptos: paquetes de software, repositorios y
gestores de paquetes.

Introducción

La instalación de aplicaciones debe de ser una de las tareas más
comunes de los usuarios, ya sean avanzados o principiantes. Y por mucho
que queramos evitarlo en más de alguna ocasión (por muy preparado que
venga nuestra distro) nos veremos enfrentados a este problema.

Migrando a GNU/Linux (...desde Windows) - Parte III

En los comienzos de GNU/Linux la única alternativa para instalar programas era la compilación de los programas
a partir de su código fuente. Cosa que puede convertirse en algo
bastante tedioso y en muchas ocasiones demasiado largo incluso para
alguien entendido en la materia. La gran ventaja de esto es la
configuración al máximo de las aplicaciones a instalar y por ende,
mejoras en el rendimiento. Sin embargo, estas diferencias en el último
tiempo con las mejoras del hardware han hecho que estas diferencias
sean pequeñas en comparación con el tiempo que toma. Es a raíz de este
problema que nace el concepto de paquete que simplifica esta tarea.

 

¿Qué es un paquete?

Un paquete no es más que un conjunto de uno o más archivos que van a
servir para la ejecución de una determinada aplicación (o expandir
funcionalidades ya existentes). Este concepto puede ser un poco extraño
para los usuarios de Windows, pero podríamos compararlo con un
instalador (los .exe o .msi que descargamos para instalar un programa).

En GNU/Linux los más populares son los llamados .deb y .rpm
(por supuesto existen algunos más, pero no es el objetivo del artículo,
y para alguien que esté recién migrando no le interesarán). El primero
deriva de Debian que fue la distribución que lo creó y el otro por Red Hat (Originalmente acrónimo de Red Hat Package Manager, actualmente, acrónimo recursivo de RPM Package Manager).

¿Y esto en términos prácticos que significa?

Dependiendo de la distribución que elijamos vamos a optar por un
sistema de paquetes, si escogemos Ubuntu, utilizaremos paquetes con
extensión .deb y si escogemos OpenSuSE utilizaremos .rpm. Es así que si utilizo Ubuntu no puedo utilizar un paquete con extensión .rpm. En realidad, existe una herramienta (alien) que permite transformar entre los paquetes anteriormente mencionados, pero no es 100% seguro.

Repositorio

Un repositorio, abreviado coloquialmente como repo, es un depósito de paquetes de software,
desde donde pueden ser obtenidos (descargados) y luego instalados en tu
equipo. La gracia de esto es que tienes prácticamente todas las
aplicaciones que podrías necesitar sin tener que recorrer toda la Web
para encontrarla. Además, esta misma situación entrega más seguridad al usuario
ya que sólo necesita acceder al repositorio que es de una fuente
confiable (ej. Repos oficiales de Ubuntu) para instalar las
aplicaciones. El proceso se realiza a través de un gestor de paquetes.

Gestor de Paquetes

El gestor de paquetes es una aplicación (o un conjunto de ellas) que
realizan todas las tareas anteriormente mencionadas, descargar,
instalación, configuración, actualización y desinstalación de paquetes.

Para las distribuciones basadas en Debian tenemos apt-get y las basadas en los paquetes RPM, tenemos YUM. Estas aplicaciones funcionan en la terminal, sin embargo, existen distintas aplicaciones como Synaptic (en GNOME) y Adept (en KDE), que son las mismas aplicaciones, pero que funcionan de manera gráfica.

Ejemplo práctico

Cuando recién comencé a utilizar Ubuntu, eché de menos a Winamp
(que lo usaba hace varios años). Así que resignado al ver que no estaba
disponible para GNU/Linux, me dispuse a buscar una alternativa. Luego
de googlear “winamp linux”, di con una alternativa XMSS.

Ejemplo práctico

Cuando recién comencé a utilizar Ubuntu, eché de menos a Winamp
(que lo usaba hace varios años). Así que resignado al ver que no estaba
disponible para GNU/Linux, me dispuse a buscar una alternativa. Luego
de googlear “winamp linux”, di con una alternativa XMSS.

El
paso siguiente sería encontrarlo, descargarlo e instalarlo. Así pues me
fui a Synaptic (Sistema > Administración > Gestor de Paquetes
Synpatic) y con el botón de buscar, encontré xmms y leyendo en la descripción descubrí que era lo que estaba buscando, habían otras cosas más, xmms-plugins, xmms-dev… etc, pero no sabía que eran así que sólo me limite a checkear el checkbox a la izquierda del nombre. Se abrió un dialogo donde me indicó que para instalarlo era necesario instalar algunos paquetes más.

Sin pensarlo mucho puse aceptar y en un par de minutos (si no es que
menos de 1) descargo y configuró XMMS obteniendo un mensaje del tipo:
“Su operación se ha efectuado con éxito”. Siendo un programa para
reproducir música fui a buscarlo a Aplicaciones > Sonido y Video,
donde lógicamente debiera encontrarse y ahí estaba.

Listo, ya tenía mi reproductor de música instalado y ni siquiera
tuviera que preocuparme de buscarlo por la web, ni preocuparme del
lugar donde lo instalaba. Tiempo después me apareció que había una
versión más reciente y la actualicé. Si en un futuro me hubiese
aburrido de la aplicación, podría haber ingresado a Synaptic y
desinstalarlo.

En este caso (y probablemente en la mayoría) la aplicación se
encontraba en los repositorios oficiales, por lo que no fue necesario
recurrir a otros repositorios, pero por supuesto que podemos ¡agregar
nuevos repositorios si queremos! (por ejemplo para instalar emesene).

Palabras finales

La idea del gestor de paquetes es que desde un único lugar puedas
tener acceso a tus aplicaciones instaladas y no tengas que andar
recorriendo una carpeta de “Archivos de Programas” o similar para
arrancar tu aplicación.

Si por alguna razón no es posible instalar algo de los repositorios,
ya sea porque es una versión demasiado vieja, o por cualquier otra
razón. Siempre podemos buscar la web oficial y descargarnos el código
fuente para compilar el programa o idealmente, ver si la sección de
descargas en cuestión posee archivos .deb o .rpm. La instalación es aún más sencilla que en Windows, doble-clic e instalamos el paquete.

GNU/Linux Atelier  

Publicado en General

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*