Breve Introduccion al software bajo Linux
Mas de uno dira: y esto ¿para que?, bueno pues sencillo, me toco dar unas clases de instalacion de linux a un equipo de informaticos,, imaginaros el equipo en cuestion ,,, y como me salio una cosa bastante bonita y creo que bien redactada, lo suficiente para que lo entienda todo el mundo, hasta tu abuela, en fin aqui esta una minuscula introduccion al software en linux.
Instalacion de software.
En los sistemas linux, el software es basicamente un binario ejecutable, existen varias formas de instalar estos binarios:
-Paquetes con binarios:
-RPM: Para redhat, mandrake, suse, yellowdog, conectiva...
-DEB: Distribuciones basadas en debian (linex, esware.lesbian...)
-Binarios :
-Esto son binarios que se ejecutan directamente en la maquina, pueden estar comprimidos
-Codigo fuente:
-Aqui tenemos una serie de archivos y/o scripts, que contienen el codigo fuente y una vez compilados en el sistema crean un binario, generalmente van comprimidos (extensiones .tar .tar.gz...)
-Por otro lado tenemos los paquetes que incluyen solo el codigo fuente, sin archivos previos para el compilado (.bz .bz2 .tar.bz .tar.bz2...).
En una estructura raiz "normal", hay varios directorios donde estan los ejecutables "del sistema"
esto es; una serie de comandos del sistema que independientemente de donde nos encontremos (directorios) podremos ejecutarlos, estos archivos generalemnte se encuentran en /bin /usr/bin ,/usr/local/bin, aparte podemos encontrar ejecutables en otros directorios.(/usr/sbin /usr/X11/bin y donde nos plazca en una palabra)
El modo de distribucion de binarios, obedece a un prinicipio de los sitemas multiusuario, con los permisos podemos hacer extensibles cualidades de un ejecutable, por eso de ultilizar /bin como directorio inicial del sistema, a este directorio podran acceder todos los usuarios (generalmente)y a /usr/sbin solo podra acceder root.
Otro directorio donde se encuentran muchas de las aplicaciones es /usr/share /usr/share/X11 en estos directorios se encuentran a su vez directorios con archivos necesarios para el uso del binario, o el propio codigo fuente, scripts de instalacion, manuales, avisos, readme, etc...
En linux, nos encontramos con muchos tipos de ejecutables (tantos como lenguajes y compiladores tengamos disponibles, ejecutables basados en codigo fuentes distintos, pero que dan un binario como tal) pero basicamente podemos diferenciar en 2 tipos:
-Ejecutable en modo consola.
-Ejecutable en modo grafico (x-window).
El ejecutable en modo consola, es basicamente un programa que solo se puede ejecutar o bien sin el sistema X-window corriendo en la maquina, o bien en un emulador de terminal, se caracterizan por que su funcionamiento se realiza por comandos y no en modo grafico.
Pejm:
[root@xento /]# nombre del comando
En este ejemplo usamos un comando cualquiera.
[root@xento SVgatextmode]#./grabmode
Observese que en este caso, al no ser un "comando" como tal (esto se define en las variables de entorno, :/usr/bin /usr/local/bin o loq ue tengamos definido) se debe introducir ./ delante del ejecutable, esto hace que el sistema reconozca el binario como tal y ejecute la sentencia(el archivo debria poder tener permisos de ejecuccion).
En este caso se debe destacar, que si bien los ejecutables que necesiten de modo grafico para funcionar, no es necesario ejecutarlos desde este necesariamente, se pueden ejecutar desde un emulador de terminal, pero necesariamente debe estar corriendo el sistema x-window.
Esta apreciacion, que en un principio puede parecer confusa, es necesaria para poder entender la manera de funcionar el software en maquinas con linux, a diferencia con otros s.o, linux ejecuta todo en modo "no grafico" puesto que este es una aplicacion mas del sistema nativo (xfree servidor de ventanas graficas o modo X).
En un entrono grafico cualquiera (kde, gnome, fluxbox, ion, waimea, wm, etc,,,) los ejecutables que se "lanzan" y que funcionan en exclusivo modo grafico, realmente lo que se hace es; mandar una "señal" al sistema para que ejecute un archivo en una ruta (paht) predeterminada.
El ejecutable en modo grafico, puede ser, basicamente de dos maneras:
-Un binario que contiene unas sentencias y ordenes para trabajar con librerias y componentes de sistemas graficos (gtk,qt,tk,,,)
-Un front-end, esto es un programa que usa un entorno grafico para hacer lo mismo que un software que solo actue en modo consola, pero en modo grafico.
Pejem: -nmap trabaja en modo consola, debemos introducir una serie de argumentos a la linea de comandos: nmap -v -sS -O www.google.com 292.18.10.3/16 \'292.88-90.*.*\'
-nmapfe es un front-end que nos permite mediante un menu grafico, con botones casillas y dialogos, realizar las mismas funciones que en modo consola, las opciones -v -sS -O se substituyen por botones, etc,,.
Bien, hasta aqui espero que este mas o menos claro como funciona muy por encima el software en sistemas linux.
Otro tema espinoso para la gente que acude de nueva/o a linux, es la instalacion propiamente dicha del software, en los paquetes (RPM, DEB) existen front-ends para realizar la instalacion en un modo grafico, generalmente cuando instalamos un paquete de este tipo, no hace falta compilar ningun archivo, tan solo ejecutar el binario y a funcionar, de todas maneras yo siempre recomiendo instalar estos paquetes en modo consola
Pejm:
[root@xento rpms]#rpm -ivU nombrepaquete
Por supuesto existen muchas opciones para el comando rpm (ver man del comando).
Con realizar esta sencilla operacion tendremos un binario ejecutable, es recomendable usar la opcion V (verbose) que nos mostrara las operaciones ( creacion de directorios, archivos, librerias necesarias, etc,,,) que se desarrollan al instalar el paquete.
El principal problema que encuentra la gente no es en la instalacion de paquetes, si no en la instalacion de software que debemos compilar, esto que al principio puede parecer coto exclusivo de programadores y/o profesionales de informatica, no lo es con gnu/linux, en este s.o disponemos de compiladores y herramientas muy potentes para compilar codigo fuente, dependiendo de que lenguaje este escrito el codigo fuente dispondremos de una herramienta u otra, en principio el desarrollo de aplicaciones lo dejaremos para otro capitulo, esto es por que no es el motivo de estas paginas explicar el uso de compiladores y el desarrollo de aplicaciones informaticas.
Generalmente los archivos fuente de un programa se encuentran en un archivo comprimido (ver unas lineas al principio del documento) en estos archivos se suele encontrar un script de instalacion,la manera mas logica de instalacion es leer el archivo install o readme, en el se encuentra la informacion necesaria para compilar el software, pero basicamente encontraremos, o bien un archivo llamado "configure" al cual debemos llamar desde la consola:
[root@xento ]#./configure este empezara un proceso por el cual se llamara a herramientas del sistema (librerias, compiladores, y comandos para realizar acciones, crear directorios, copiar enlaces, etc,,,) con el resultado de un archivo make para conocer mas sobre los archivos make rogamos buscar informacion sobre esto, puesto que la explicacion se podria extender todo el hosting de este sitio...
Una vez tengamos el make solo hay que ejecutar: [root@xento ]#./make este proceso creara los archivos necesarios para ejecutar el software (binario y/o binarios) despues si no estamos como root [root@xento ]#./make install para hacerlo extensible al resto del sistema y/o usuarios.
Un ejemplo concreto de la instalacion de un software:
-Descomprimos el archivo donde se encuentra el codigo fuente:
[root@xento ]#tar -xvzf nombrearchivo.tar.gz
-Entramos en el directorio que se ha creado:
[root@xento ]# cd directorio (creado durante ladecompresion del archivo)
-Ejecutamos el archivo configure:
[root@xento /ejecutable]#./configure
-Ejecutamos el archivo make:
[root@xento /ejecutable]#./make
-Ejecutamos la orden install:
(puede ser referente a un archivo independiente o a el propio make)
[root@xento ]#./make install
-Y por ultimo ejecutamos el binario para hacer funcionar el software:
[root@xento /ejecutable]#./nombre del binario
Con esto ya tenemos compilada y funcionando la aplicacion concreta.Por supuesto algunos programas pueden incluir un enlace a /usr/bin de manera que tendriamos el ejecutable como un comando mas.
Apuntes:
Existen una serie de herramientas para convertir paquetes de una distribucion a otra, el mas comuny de extendido uso es: ALIEN esto es una aplicacion que convierte paquetes RPM en DEB o viceversa.
Para ver las funciones del compilador seleccionado deberemos usar el comando man, y generalmente unos conocimientos basicos de programacion, con esto podremos crear binarios a partir de codigo fuente, aunque en la mayoria de aplicaciones (incluso beta o inestables) se dispone de un archivo readme ,install,,, para dar las instrucciones que se deben hacer para usar el compilador (incluir sentencias, flags, etc,,,) esto, recalco, no es lo habitual, lo habitual es que el software para compilar incluya un archivo configure y no tener que ir con automake autoconf y demas "sutilezas".
Actualmente disponemos de una maravillosa herramienta para descargar e instalar software de internet, el apt, en principio esta herramienta esta muy difundida en los sitemas basados en Debian, pero poco a poco se fue introduciendo en las demas distribuciones, tambien existe yum o urpmi esta ultima para mandrake.
Estas herramientas lo que hacen es obtener un archivo de algun servidor de internet donde se encuentra informacion sobre paquetes de software, la bajan al ordenador local, y crean listas de software con sus dependencias, de manera que con solo indicarle que paquete queremos instalar, el programa hara el resto del trabajo.
P.ejem: [root@xento]# apt-get install nombre_del_paquete
En este caso instalariamos nombre_del_paquete.
La mayoria de estas herramientas trabajan de manera similar, pero la sintaxis es distinta segun la herramienta, ver man del comando.
Con esto se consigue olvidarse de buscar software en internet, comprobar firmas, dependencias y demas "problemas" que puedan surgir, ademas nos permite tener actualizado nuestro sistema.
Xento Figal 2003-04-10