En mi artículo anterior, les hablé sobre las dependencias en sistemas Unix-like como GNU/Linux. 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
/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 Settings\Pablo\
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:\Windows\Temp
.
/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…
Puedes ver la tercera parte aquí.
uffff!
yo todavia no me aprendo bien la «razón de ser» de todas las carpetas, pero es cosa de tiempo….
y claro, cada vez se va haciendo mucho más lógico!
Saludos!!:D
JCM
Me gustaMe gusta
[…] 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 […]
Me gustaMe gusta
Bueno, a veces meterse en afirmaciones demasiado contundentes del tipo «no tendría sentido que cada aplicación tuviese su propio directorio» puede ser contraproducente. Hay gente que critica el sistema clásico (conocido con el nombre de LHS) de ordenar las cosas en un GNU/Linux, e incluso hay una distribución de GNU/Linux que sigue una organización completamente distinta: GoboLinux (http://en.wikipedia.org/wiki/GoboLinux y http://gobolinux.org/)
Saludos.
Me gustaMe gusta
Si, sabía de esa distro, pero no la he usado.
La afirmación de «no tendría sentido que cada aplicación tuviese su propio directorio». Lo digo en el caso de cuando uno comparte las librerías y demás aplicaciones, sería poco práctico que al instalar una aplicación, cada «dependecia» quedara en cada directorio. ¿Cómo sabría GNU/Linux que la dependencia está instalada? Bueno, quizá el gestor de paquetes podría ir regitrándolo, pero ¿qué pasa si no tienes usas una?. Pero si esto se hiciera el sistema quedaría muy desordenado.
Por otra parte, una organización «tipo Windows» no sería lógica, si para ejecutar una aplicación no basta más que escribir un comando. ¿Para que quieres navegar hasta el directorio?.
Me gustaMe gusta
[…] Migrando a GNU/Linux (…desde Windows) – Parte II Diferencias con Windows […]
Me gustaMe gusta
Muy interesante.
He publicado una entrada en mi blog ( http://www.blogubuntu.com/174/migrar-a-linux-desde-windows/ ) haciendo referencia a este artículo, y enlazándolo en cada una de sus partes.
Felicidades.
DAVID.
Me gustaMe gusta
[…] Migrando a GNU/Linux (…desde Windows) – Parte II […]
Me gustaMe gusta
Library =Biblioteca
Las «librerias» te venden los libros, las «bibliotecas» no
Saludos.
Me gustaMe gusta
David: ¡Muchas gracias! =). Mantente sintonizado que ya haré una cuarta parte…
Alex: Si lo sé, en el primer artículo hice una aclaración respecto a eso. De todas formas, en Wikipedia dice que se acepta usar cualquiera de las dos palabras.
Me gustaMe gusta
[…] al otro no andemos tan perdidos y sepamos que es cada cosa y su distribucion. Son tres articulos: 1, 2, […]
Me gustaMe gusta
[…] Visto en GNU/Linux Atelier […]
Me gustaMe gusta
[…] Migrando a GNU/Linux (…desde Windows) – Parte II […]
Me gustaMe gusta
[…] Parte II Parte III […]
Me gustaMe gusta
llevo desde que tenia 4 años con DOS y luego con windows, ahora tengo 23, desarrollo programas en windows, y siempre tuve un sistema «Estable»,
En pocas palabras, Linux es un milagro, no puedo creer mi ignorancia durante todo este tiempo. :(
Muy buen articulo! Muy buen SO!
Me gustaMe gusta
Excelente, ahora me quedan claras varias cosas más.
Me gustaMe gusta