logo sinuh
 

Inicio arrow Conocimiento arrow Curso GNU/Linux desde cero arrow ENTREGA 18. Instalando programas (I).
ENTREGA 18. Instalando programas (I). Imprimir
Por Luis García Galván   
martes, 07 sep 2004 17:00

CURSO DESDE 0 DE GNU/LINUX. Versión 2.


Entrega 18. Instalando programas (I).


                                % alias alias alias

				alias: Too dangerous to alias that.

Cómo va eso de instalar.


En Linux, como en otros Unix, los programas no se suelen instalar con siguiente, siguiente, siguiente, OK... como pasa en Windows, aunque sí existen programas que se instalan de esta forma, como nuestro querido amsn (programa para conectarte a la red Microsoft Messenguer, con una interfaz muy parecida al msn de siempre), con su instalador y muchos de los programas comerciales (incluido juegos). Pero por desgracia son minoría.


Básicamente, descartando lo primero, hay dos formas de instalar los programas bajo Linux, con los fuentes y los binarios. Una de las grandezas del software libre es la posibilidad de disponer del código fuente, el cual siempre podrás modificar según tus necesidades o hacer que terceros lo hagan por ti. Aun siendo la forma más difícil de instalar un programa, y seguramente la que más veces huiréis de ella, es sin duda la que puede traernos mayores beneficios.


¿Pero qué beneficios tiene instalar a partir del código fuente? Uno de los beneficios más inmediatos es la posibilidad de compilarlo en otras arquitecturas, sí señores, hay vida más allá de la arquitectura del pc, y lo que más te puede interesar es que puedes optimizar el programa para tu máquina (hay distribuciones que se basan en esto como Gentoo, por si eres un fan de la optimización). Como en Windows, los programas vienen generalmente compilados para funcionar en la mayoría de ordenadores posibles (generalmente, compiladas desde 386 a Pentium II), lo que hace que no aprovechemos muchas de las capacidades y/o ventajas de nuestros procesadores modernos, aunque también es cierto que muchas veces ni se nota mejoría cuando está un programa compilado específicamente para nuestro procesador. Es como todo, depende, ¿de que depende?, pues de muchas cosas ...


Y la otra forma básica son los binarios, que son el resultado de la compilación anterior y su ventaja es que nos facilita la vida ahorrándonos el paso anterior y hacérnoslo todo un poco más cómodo. Los binarios generalmente vienen empaquetados (es difícil no encontrarlos así), y estos paquetes tienen a día de hoy dos formatos, los paquetes rpm y los paquetes deb. Los primeros son originales de Red Hat y han sido adoptados por multitud de distribuciones, como pueden ser Suse o Mandrake/Mandriva, y el LSB (Linux Standard Base) los define como el estándar de paquetes. Y luego están los paquetes deb, que son igual de buenos o mejores que los rpm y son originales de la distribución de Debian, y la suelen utilizar aparte de ésta todas las distribuciones basadas o descendientes de Debian que, todo hay que decirlo, no son pocas.


Pero no todo queda aquí, dadas las diferencias entre distribuciones muchas veces los paquetes compilados para una distribución no sirven para otra, o hay que hacer chapucillas de por medio y esto es lo que suele pasar con los rpm, por lo que es recomendable instalar solamente paquetes compilados específicamente para tu distribución, si bien es verdad que se pueden instalar de unas a otras sin problemas muchísimas veces. Otros paquetes simplemente no van marcados para ninguna distribución en concreto y funcionan en todas. Al final todo se reduce a prueba y error, si no encuentras un paquete compilado para tu distribución, prueba con la del vecino, que alguna funcionará. Este problema no los suelen tener las distribuciones basadas en Debian, que son más parecidas internamente entre ellas.


Pero ahora vamos a rizar el rizo, porque también hay distribuciones que funcionan con ambos sistemas de paquetes como Yoper, y si tu distribución no es de éstas (que es lo más normal) siempre puedes alienar los paquetes del otro formato, esto es, convertir un rpm en un deb y viceversa, esto se hace con un programa que veremos en otra entrega, llamado alien.


¡Oh, no! Dependencias.


Pero por desgracia aquí no queda todo, y esto es lo que menos os va a gustar. En linux se lleva al máximo la reutilización del código (Si algo funciona y funciona bien ¿para qué volver a reinventar la rueda?), lo que hace que unos programas se apoyen en otros o en librerías, con lo cual se nos devuelve un error de dependencia si intentamos instalar/compilar un programa que dependa de otro u otra librería y no tenemos el susodicho en nuestro sistema.


La solución es bien sencilla, ¿no? ¡Instalemos lo que nos falta! Pero si lo que nos falta depende a la vez de otros, y esos otros de otros, pues acabarán con nuestra paciencia y, por desgracia, esto es más común de lo que parece, así que cuanto más grande es un programa su tendencia a tener dependencias aumenta.


Y lo peor aún y que puede ocurrir es, por ejemplo, que actualizamos a una versión más moderna de un programa que utilicemos y resulta que las dependencias que cumplían antes bien ya no valen, porque como todo, todo evoluciona y van saliendo nuevas versiones, y claro... toca volver a instalar dependencias, con lo cual nuestra tendencia a buscar un martillo aún más gordo para pagar nuestra desesperación con el ordenador aumenta progresivamente.


Al fin, un poco de luz al final del túnel.


Pero tranquilo, vuelve a por los CD's de las distribuciones que acabas de tirar por el balcón y ¡tú! Manolito (los Manolitos que se sientan ofendidos por usar su nombre, pueden cambiarlo por otro XD ), deja ese tenedor donde estaba, no hace falta que crees un nuevo CD de música alternativa.


Todo puede hacerse mucho más fácil con los gestores de paquetes (y no me refiero a rpm para rpm y dkpg para deb), que resuelven las dependencias por nosotros y se descargan (o buscan en los CD's, según el caso) lo necesario para que todo funcione (y de esto saben mucho los de Debian), así sin más, sin trucos, aunque aun así, como bien Murphy sabe, todo puede fallar, porque ya lo puse en una entrega: “cuando ves la luz al final del túnel, va y se te cae el techo encima”, pero esto sólo suele pasar cuando instalamos de donde no debemos, como por ejemplo de repositorios de ramas inestables.


¿Y qué son los repositorios? Pues son “sitios” en Internet donde nuestro maravilloso gestor buscará y descargará los paquetes necesarios o simplemente los CD's de nuestra distribución favorita, ya sea bien para instalar software como para actualizarlo, ¡incluso la distribución entera! Y es que esto de que sea software libre aunque cueste adaptarse tiene sus ventajas, vamos a hacer lo mismo con software propietario a ver qué nos dicen }:D .


Y en este arte de los repositorios los que se llevan la palma son los de Debian, que prácticamente todo lo pueden encontrar en sus repositorios, porque está claro que no siempre vamos a encontrar lo que queríamos de esta forma tan cómoda, y tendremos que buscar e instalar a mano, e incluso a veces sólo tendremos los fuentes y tocará compilar.


¿Por dónde empezamos?


Y con esto anterior ya leído, y como deduciréis, lo veremos todo en el orden que lo he ido comentando, así que empezaremos por tener que compilar, después por la gestión de paquetes rpm, luego la de paquetes deb y terminaremos explicando el uso de un gestor de paquetes y ese es apt-get, sí, el original de Debian, por la sencilla razón de que puede usarse independientemente del tipo de paquetes y porque existen ports (vamos, que se han “portado”) para multitud de distribuciones. Hay más dependiendo de la distribución que uséis, como yum para Red hat , yast (de hecho yast es mucho más que eso) para Suse o urpmi para Mandriva, pero no los veremos porque como siempre intentaremos que esto sirva para el mayor número posible de gente.


Y ya puestos... ¿qué necesito para compilar?


Pues fácil, el compilador. ¿Qué compilador? Pues depende de los fuentes, pero podéis estar seguros de que el 90% de los casos será C o C++, y para eso y mucho más tenemos a los maravillosos compiladores de la GNU que cumplen las 3 b's: bueno, bonito y barato. Para C y C++ será el gcc, y viene en absolutamente todas las distribuciones, así que si no lo tenéis ya podéis meter el CD y me juego la cabeza que está en el CD nº1, e instaladlo con la ayuda del instalador de paquetes propio de vuestra distribución (o tendréis que esperaros a que llegue la entrega del apt-get), y aquí no puedo ayudaros porque cada una tiene el suyo (en una Fedora estará en Menú inicio -> sistema -> Añadir/quitar aplicaciones, en una Mandriva dentro de la herramienta de configuración de Mandriva, y así con cada una).


Si no sabéis si lo tenéis o no, teclead en consola lo siguiente:


[matados2k@fortaleza matados2k]$ cc

cc: no hay ficheros de entrada

[matados2k@fortaleza matados2k]$ gcc

gcc: no hay ficheros de entrada

[matados2k@fortaleza matados2k]$


Si sale algo parecido a esto lo tenéis, con que ejecutéis uno de los dos vale. Si en cambio pasa esto:


[matados2k@fortaleza matados2k]$ cc

bash: cc: command not found

[matados2k@fortaleza matados2k]$ gcc

bash: gcc: command not found

[matados2k@fortaleza matados2k]$


Ya sabéis lo que toca :( .


Aunque no programéis o no tengáis ni idea de C/C++ conviene que lo instaléis, porque C está tan ligado a Linux como una madre a su hijo, de hecho C se hizo para reescribir Unix y Linux no deja de ser una implementación libre de Unix, y ya veréis como tarde o temprano tendréis que usarlo, aunque sea indirectamente.


Otros compiladores que recomendaría que tuvierais son los de perl, python y java que son también muy usados. Y no os olvidéis del intérprete de tcl, que seguro que también tarde o temprano lo necesitaréis (aunque seguro que muchos por defecto lo tenéis). Y tampoco tenéis que preocuparos por no saber lo que son, simplemente quedaos con sus nombres. Solo un apunte más, en el caso de Java usad mejor el de Sun que el de GNU, ya que evitaréis muchos problemas.


Manos a la obra.


Generalmente, los fuentes vienen empaquetados con extensiones .tar, .tar.gz, gz, bz2, tar.bz2 así que pondré una tabla de cómo descomprimir cada uno de ellos, porque aún no toca entrega de compresores/descompresores (aunque ya creo que va a ser lo próximo después de lo de instalar) .


tar (.tar) tar -xvf archivo.tar

gzip (.gz) gzip -d archivo.gz

bzip2 (.bz2) bzip2 -d archivo.bz2

(tar.gz) tar -xvzf archivo.tar.gz

(tar.bz2) bzip2 -dc archivo.tar.bz2 | tar -xv


Y para practicar vamos a compilar un juego muy entretenido llamado supertux, lo podéis encontrar en http://super-tux.sourceforge.net/ , en el momento de escribir esta entrega nos bajamos la versión 0.1.2 en su formato de fuentes supertux-0.1.2.tar.bz2 y descomprimimos:


[matados2k@fortaleza curso]$ bzip2 -dc supertux-0.1.2.tar.bz2 | tar -xv

supertux-0.1.2/

supertux-0.1.2/contrib/

.....

supertux-0.1.2/data/Makefile.in

supertux-0.1.2/data/Makefile.am

[matados2k@fortaleza curso]$ supertux-0.1.2

[matados2k@fortaleza supertux-0.1.2]$


No hay un método fijo por el cual hacerlo, ya que eso depende del programador de la aplicación en cuestión, pero sí que hay una forma muy implantada de hacerlo y suele ser la siguiente:


  • 1º Si no existe un archivo llamado 'configure' lo creamos con el script 'autogen.sh', si es que éste existe. Y aunque exista 'configure' conviene generarlo de nuevo (a mi se me ha dado el caso de que hasta que no he usado el 'autogen.sh' no era capaz de compilarlo).

  • 2ª Ejecutar 'configure', y es en este punto donde nos dirá si nos falta algo parándose con un error, hasta que no se satisfaga 'configure' no se tendrá una compilación fructífera.

  • 3ª Ejecutamos 'make' (comando que es necesario instalar y que suele venir ya instalado, usa el fichero 'makefile' que se genera despues del 'configure').

  • 4º Ya como root instalamos la aplicación con 'make install'.

  • 5ª La desinstalación generalmente se suele hacer, dentro del mismo directorio donde se compiló y siendo root con 'make uninstall' o 'make clean' (siendo este último casi siempre para limpiar los rastros de una antigua compilación).


Pero como no hay regla fija para esto, siempre hay que leerse los ficheros tipo LEEME o INSTALL, o la documentación de la página web donde se encontraba el programa, donde nos indicarán todos los pasos exactos y que necesitamos.


En nuestro ejemplo necesitaremos tener instaladas las librerías SDL, SDL_mixer y SDL_image (Opcionalmente OpenGL) que encontraréis seguramente en los CD's de vuestra distribución. Yo como las tengo voy manos a la obra:


[matados2k@fortaleza curso]$ cd supertux-0.1.2

[matados2k@fortaleza supertux-0.1.2]$ ./autogen.sh

[matados2k@fortaleza supertux-0.1.2]$ ./configure

checking build system type... i686-pc-linux-gnu

checking host system type... i686-pc-linux-gnu

checking target system type... i686-pc-linux-gnu

......

configure: creating ./config.status

config.status: creating Makefile

config.status: creating src/Makefile

config.status: creating data/Makefile

config.status: executing depfiles commands



Features:

=========

Profile Mode: no

Debug Mode: yes

OpenGL Support: yes



[matados2k@fortaleza supertux-0.1.2]$


Como veis ya tengo los pasos 1 y 2 hechos, y como resultado me crea los 'makefile' necesarios y me indica que se compilará con OpenGL ya que tengo las librerías necesarias.


[matados2k@fortaleza supertux-0.1.2]$ make

Making all in src

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2/src'

....

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/src'

Making all in data

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: No se hace nada para `all'.

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2'

make[1]: No se hace nada para `all-am'.

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2'

[matados2k@fortaleza supertux-0.1.2]$


Como veis no me da ningún error, y después de ver volar texto sin parar ya tengo mis binarios, que incluso puedo usar sin instalarlo (entrando en '/src' tenemos el ejecutable 'supertux'). Ahora pasamos a instalarlo.


[matados2k@fortaleza supertux-0.1.2]$ su

Password:

[root@fortaleza supertux-0.1.2]#make install

.....

make[2]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2'

make[2]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2'

make[2]: No se hace nada para `install-exec-am'.

make[2]: No se hace nada para `install-data-am'.

make[2]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2'

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2'

[root@fortaleza supertux-0.1.2]#


Y ¡tachan! ya tenemos supertux instalado en el ordenador. Simplemente ejecutando 'supertux' lo podremos usar.


Despedida.


Y después de esta pedazo de entrega, que mira que es larga, os espero hasta la próxima con la gestión básica de rpm.


Ningún CD de distribuciones de Linux fue maltratado en esta entrega y ningún Manolito tenia un tenedor.


Agradecimientos: · Revisión del documento: karuchi (Carolina García).


Página oficial y dominio de mi propiedad http://matados2k.es

Matados'2k Usuario y moderador de foro.noticias3d.com

Matados'2k Usuario y moderador de www.sinuh.org


matados2k (arroba) gmail (punto) com


Este documento está sometido a la licencia de creative commons en su variante “Reconocimiento-NoComercial-SinObraDerivada 2.1 España” . Es de agradecer que se comunique al autor el uso de este documento en otro medio y se debe incluir de forma obligatoria este recuadro y los agradecimientos.


Comentario[s]
curso
Escrito por Invitado el 2004-09-28 17:44:53
donde me dirijo para hacer un curso que aprenda a la brevedad posible, soy de venezuela si tienes un sitio aqui por favor enviame la direccion
Ni idea
Escrito por matados2k el 2004-09-30 10:32:53
No se donde puedes hacer un curso en Venezuela, yo soy de España.
una cosilla
Escrito por Psyker el 2004-12-14 00:28:55
hola, ay una cosilla que no entiendo, si yo me bajo el .tar o el que sea, lo descomprimo donde me de la real gana, y depues al compilarlo, se instala en sus sitio y como es eso?
Para Psyker
Escrito por matados2k el 2004-12-17 12:44:02
Pues basicamente al hacer make install se sule intalar en su sitio. 
 
Estas cosas pregutnarlas en el foro por que os arriegais a no tener respuesta.
continuando
Escrito por Invitado el 2005-01-09 15:12:59
¿ Y el amigo Chileno ? 
 
Muy buena la entrega. :grin
No entiendo nada, pelele
Escrito por Piluca Repro el 2005-04-01 17:08:17
 
Menos hacer el tonto y mas trabajar, si ej que... :zzz
Escrito por Invitado el 2005-05-06 23:21:50
quede igualito
????????????????
Escrito por Invitado el 2005-05-06 23:24:06
de donde sipote puedo bajar gcc que verifique las dependencia e instale lo que haga falta? despues dicen que windows es una porqueria
Escrito por Invitado el 2005-05-25 16:33:14
GrandE el cursillo, a mi me a servido para saber que lo de : no se hace nada para all-am 
no era un error :)
SDL
Escrito por Invitado el 2005-06-22 19:00:09
como instalo las librerias SDL. 
 
Soy de Mexico :grin
supertux
Escrito por francisco javier moya sanchez el 2005-11-16 11:30:14
:? :? :? :? :? :? :? :? :? como me puedo descargar supertux 0.1.2-setuo :? :? :? :? :? :? :sigh :sigh :sigh xfa decidmelo a este correo: :sigh :sigh :p ;) :grin :) GRACIAS :p 8) ;) :grin :)

Sólo los usuarios registrados pueden escribir comentarios.
Por favor valídate o regístrate.

Powered by AkoComment 2.0!




© 2002-2005 SINUH - Comunidad GNU/Linux de Extremadura
Este portal utiliza Mambo
DHTML / JavaScript Tree by TwinHelix Designs

Para contactar con nosotros envía un correo a
info
Licencia Creative Commons
Los contenidos de este portal, salvo indicación en contra, están sujetos a una licencia de Creative Commons.

Los logotipos y marcas que aparecen son propiedad de sus respectivos dueños.

Las opiniones y declaraciones de las personas reflejadas en los foros y comentarios son propiedad y responsabilidad de sus autores, no identificando la opinión de SINUH y excluyendo de cualquier responsabilidad a esta asociación.
Ahora 10 visitantes
Advertisement