Lo que vamos a aprender ahora es a instalar programas en Linux. El tutorial esta basado en RedHat y sus derivados como Mandriva, SUSE, etc.
Por gusto propio, uso Mandriva, me parece un sistema muy robusto y estable.
Para instalar el Mandriva si nunca viste un Linux siquiera, te recomiendo este Link de T! en donde sigo una instalacion de Mandriva paso por paso con fotos:
Instalación de programas en la consola
Debido a la historia del sistema, que no voy a mencionar acá, en el entorno GNU/Linux hay dos o tres maneras de instalar software:
A través de paquetes ya compilados. En esta categoría entran los paquetes en formato deb (paquetes para Debian GNU/Linux y derivados, como Lindows[b], [b]Ubuntu, etc.), los paquetes en formato rpm (paquetes para distribuciones como Red Hat, SuSE, Mandriva Linux, etc.). Vamos a hablar sobre los paquetes rpm, ya que son los predeterminados en las tres distribuciones cubiertas por este tutorial.
La otra manera común de instalar es conseguir el código fuente de un programa y compilarlo, es decir transformar las instrucciones de programación legibles por un humano a archivos binarios ejecutables. La compilación es el equivalente informático de tomar una receta e ingredientes y hacer una torta: uno toma el código fuente y lo pasa por un compilador (el horno, digamos) que nos devuelve un programa usable. Dado que dicho código puede ocupar muchos archivos y ocupar bastante espacio, se usan algunas herramientas para comprimirlo. Estas son un compresor y un archivador: gzip (o bzip2) para comprimir y tar para archivar. El procedimiento funciona en cualquier sistema Linux con los paquetes de desarrollo instalados y también en otros sistemas operativos como los BSDs , Unixes o incluso en Mac OS X y Windows (con bastante más trabajo).
Llamamos a los programas "paquetes" porque lo que bajamos de Internet o lo que viene incluído en nuestros discos de instalación son archivos y directorios agrupados y comprimidos, como en un paquete. Este nombre o su equivalente en inglés, package son comunes en el mundo Linux, por lo que usted debe saber a qué nos referimos.
Las herramientas urpm de Mandriva
Para hacerle fácil la vida, Mandriva ha desarrollado poderosas herramientas para administrar su software, expandiendo las funciones de rpm. En su conjunto, las llamaré "herramientas urpm".
Las herramientas básicas son urpmi, urpme, urpmq y urpmf:
* urpmi nombre_de_archivo instalará ese paquete rpm.
* urpme nombre_de_paquete lo desinstalará
* urpmq nombre_de_paquete nos dirá si existe ese paquete en la base de datos (es decir, si es posible instalarlo.
* urpmf archivo Nos dirá qué paquete rpm contiene ese archivo.
Ahora que hicimos la presentación básica, veamos un poco cómo se trabaja realmente (al menos, cómo trabajamos nosotros) con urpm. Por ejemplo, supongamos que un amigo le comentado a nuestro usuario Peluchin la belleza de un paquete llamado qalc (o algo parecido). ¿Cómo ver si está disponible en nuestro sistema?
Para empezar, Peluchin buscará el paquete en la lista disponible:
[rogelio@edhellond ~]$ urpmq qalc
ningún paquete denominado qalc
los siguientes paquetes contienen qalc:
libqalculate0
libqalculate0-devel
qalculate
[rogelio@edhellond ~]$
Vemos que el paquete que buscamos es posiblemente qalculate (los paquetes que comienzan por "lib" son librerías usadas por los programas, y si son necesarias los programas las instalarán). Veamos un poco más:
[rogelio@edhellond ~]$ urpmq -i qalculate
Name : qalculate
Version : 0.7.2
Release : 1mdk
Group : Office
Size : 2903560 Architecture: i586
Summary : A very versatile desktop calculator
[rogelio@edhellond ~]$
Una descripción bastante completa de qué es el programa y qué hace. Bien, para instalarlo necesitaremos ser el usuario administrador. Hora de hacer su (con este comando entramos en modo root o superusuario).
[root@edhellond rogelio]# urpmi qalculate
Para satisfacer dependencias se instalarán los siguientes 4 paquetes (9 MB):
gnuplot-4.0.0-5mdk.i586
libcln3-1.1.9-1mdk.i586
libqalculate0-0.7.2-1mdk.i586
qalculate-0.7.2-1mdk.i586
Es correcto? (S/n)
Vemos que urpmi se encarga de toda la tarea de buscar las dependencias automáticamente. Noten también que instalamos qalculate, no qalculate-0.7.2-1mdk.i586 ni qalculate-0.7.2-1mdk.i586.rpm. Es posible también hacerlo de estos dos últimos modos, en particular si deseamos instalar precisamente esa versión del programa. El comando que dimos instalará la versión más actual contenida en la lista de paquetes. Si esto nos interesa, investigue el comportamiento de las opciones -f y -r de urpmq. Por ejemplo, urpmq -f qalculate.
Después de pedirle el CD / DVD de instalación y de descargar archivos de internet (si es necesario), el paquete quedará instalado y listo para usar.
Todo lo anterior es estrictamente cierto, pero estaba ocultando un par de detalles para hacer la explicación más clara. Ahora es el momento de ver qué es lo que permite esa simplicidad que vimos arriba.
Mandriva y las demás distros importantes usan un sistema de repositorios de paquetes. Esto quiere decir sitios en internet que contienen una lista con montones de paquetes. Basta agregar dicha lista a nuestro sistema para tener a disposición todos esos programas. Normalmente sólo hay dos repositorios base instalados en una distribución Mandriva Linux: los CDs o DVDs de instalación y el repositorio de actualizaciones de seguridad.
Para agregar nuevos repos, podemos usar (en Mandriva al menos) la herramienta apropiada del centro de control, o podemos hacerlo a mano desde una consola. Hay disponible un sitio, easyurpmi, que hace esto de manera muy fácil. Basta ir al sitio, seleccionar la versión instalada de mandriva linux, y agregar luego los repositorios que uno guste. Personalmente, uso los repositorios main (equivalente al DVD de instalación), contrib (paquetes extra), plf-free y plf-nonfree. No es necesario agregar otro repo "updates" si ya tenemos uno configurado. Para agregar un repositorio, marcamos el casillero y elijimos un mirror cercano a nosotros.
Recomiendo marcar también el casillero "Utilizar índices comprimidos, de menor tamaño, con menos información adicional" si nuestra conexión no es demasiado rápida. De todos modos estamos hablando de una descarga de algunos megabytes por repositorio, sólo de las listas de paquetes.
Como dice al final en la página de easyurpmi, copiamos cada línea (una por vez) en la consola y dejamos que el sistema descargue. Luego dispondremos de todos los paquetes que esos repositorios ofrecen. Notamos que si usamos urpmi.removemedia -a como se menciona, debemos agregar un repositorio de actualizaciones, y que el sistema ya no nos pedirá los CDs de instalación. Esto significa que si no eligimos un repositorio Main tendremos problemas
.
Veamos el proceso paso por paso:
1. Elijo mi distribución y arquitectura (en mi caso, "2005" y "i586", es decir, cualquier PC común que no sea un Athlon64) y hago click en "Ir al paso 2".
2. Marco las casillas de los repos Main, Contrib, Updates, PLF-Free y PLF-Nonfree (jpackage contiene paquetes Java, que no me interesan personalmente). En los tres primeros uso el repositorio de Brazil Curitiva (el más cercano a mí), en los otros alguno en Francia (son veloces). Marco también la casilla "Utilizar índices comprimidos", y hago click en "Ir al paso 3)
3. Copio de a una línea en una consola como usuario root (Es decir, abro una terminal o consola, uso el comando su, pongo mi password de root). Como el sitio sugiere, antes de esto uso el comando urpmi.removemedia -a para limpiar lo que había antes.
4. Listo!
Veamos ahora un poco el funcionamiento de urpmi.addmedia y urpmi.removemedia. El primero es bastante complejo, el segundo en cambio sólo requiere nombre(s) de repositorio(s) o la opción -a (all, todos).
Por ejemplo:
urpmi.addmedia main ftp://bo.mirror.garr.it/mirrors/Mandrake/official/2005/i586/media/main with media_info/synthesis.hdlist.cz
Indica que agregaremos el repositorio llamado "main" (puede tener cualquier nombre, pero main es más claro), que se encuentra en el sitio ftp://bo.mirror... con lista de paquetes en el directorio media_info/. El archivo synthesis.hdlist.cz contiene la lista de paquetes, en este caso con una información menor que si fuera hdlist.cz a secas.
El comando man urpmi.addmedia nos mostrará las diversas opciones disponibles y la sintaxis del comando. Una opción importante es --update, que configura el repositorio como uno del que recibiremos actualizaciones.
urpmi.removemedia main se encarga por supuesto de quitar ese repositorio de la lista.
Cada tanto, actualizamos nuestra lista de paquetes para ponernos al día con los repositorios. Es simplemente cuestión de ejecutar el comando urpmi.update -a (actualiza todos los repositorios).
Actualizar su sistema con urpmi
Es posible (y recomendable) tener actualizado nuestro sistema fácilmente. Hemos visto en otra parte de este tutorial cómo hacerlo en modo gráfico, ahora veamos los comandos equivalentes.
Personalmente, cuando quiero actualizar mi sistema simplemente ejecuto el comando
urpmi --auto --auto-select
La opción --auto-select indica "seleccionar todos los paquetes actualizables" y la opción --auto indica "resolver las dependencias automáticamente". Eso quiere decir que, si todo está estable, la instalación debería terminar tranquilamente, al máximo pidiéndonos confirmación para instalar todo.
Notamos que, si justo intentamos instalar en un momento en que alguien ha subido un paquete actualizado al repositorio, pero no sus dependencias actualizadas, es muy posible que ese paquete no pueda ser instalado. Deberemos entonces esperar o buscar el programa de otro modo.
RPMs
El sistema de instalación RPM se pensó como una manera de facilitar las cosas al usuario. Actualmente se usa en muchas distribuciones, y tiene "metaherramientas" como urpmi que lo usan para hacer las cosas todavía más simples. Sólo deberían usar el comando rpm como último recurso, pero está ahí, siempre disponible, y veremos su funcionamiento básico. Antes de empezar, recuerde que debe trabajar con el usuario root para que rpm funcione.
Las principales opciones son las siguientes:
* -i : instala un paquete.
* -U : actualiza un paquete. Si no existe, lo instala.
* -v : modo verboso, proporciona más información.
* -h : muestra una cadena de # a medida que la instalación avanza.
* -e : desinstala un paquete.
* --force : fuerza una instalación.
* --nodeps : no chequea por posibles dependencias.
Normalmente veremos o querremos usar los comandos
rpm -ivh paquete-X.rpm para instalar un programa
rpm -Uvh paquete-X.rpm para actualizar un programa
rpm -e paquete-X (sin las extensiones de versión o .rpm), desinstala el paquete
rpm -ivh --force --nodeps paquete-X.rpm para forzar la instalación de un programa especialmente molesto.
No recomiendo para nada la instalación de software usando las opciones --force y --nodeps. Suelen crear problemas de incompatibilidades y errores en el paquete instalado. Sólo deben usarse si es el único modo posible. Esto incluye confirmación en la lista de correos del programa, consultas en foros, mails al programador, etc. Busque en el sitio web del programa las dependencias necesarias, y si son incompatibles con su sistema, pregunte al autor del programa qué se puede hacer.
Otra parte interesante de rpm es su base de datos, que permite buscar archivos o paquetes por nombre. Si un programa le pide instalar la librería libprograma.so.0, puede buscarlo con el comando
rpm -qa libprograma.so.0 . Las opciones son -q (query) para buscar, -f (file) para decirle que lo que buscamos es un archivo en particular. Un ejemplo:
[root@localhost adriano]# rpm -qf /usr/lib/libpty.so.1
krb5-libs-1.2.7-1.1mdk
Otras posibilidades de búsqueda son la opción -R que muestra qué requiere un paquete instalado para funcionar (es decir, nos da sus dependencias). Se usa de esta manera:
rpm -qR paquete-X
Para más posibilidades, podemos consultar la página de manual de rpm, y ver qué otros programas de la "familia" de rpm puede usar (dependen de paquetes instalados, así que hacemosa uso de lo aprendido en estos tutoriales para buscar e instalar algún programa que no tengamos. En la máquina en que los autores trabajan, usando Mandrake 9.1, están disponibles los siguientes:
[root@localhost adriano]# rpm
rpm rpmdb rpme rpm-rebuilder
rpm2cpio rpmdiff rpmi rpmsign
rpm2header rpmdrake rpmlint rpmu
rpmbuild rpmdrake-remove rpmquery rpmverify
De los cuales normalmente no querrá usar todos. Si quiere instalar paquetes .src.rpm, vea la sección abajo, e investigamos el uso de rpm-rebuilder y rpmbuild.
Instalando rpms de código fuente (paquetes .src.rpm)
Es posible que necesite o quiera compilar usted mismo sus programas, pero manteniendo las ventajas del sistema rpm. En este caso, lo mejor es bajar de internet (de los mirrors de su distribución por ejemplo) los programas en formato .src.rpm. Suelen encontrarse en un directorio aparte (sources) en los sitios de download y las distribuciones en caja incluyen CDs con los srpms (pronuncie "es-arpiéms", o "ese-errepeemes"
de todos los programas instalables. Compilando sus rpms logrará un sistema más ajustado a su hardware, aunque si ése es el único motivo que lo impulsa le recomendamos que no pierda el tiempo: la diferencia en performance es normalmente ínfima en máquinas modernas. Si desea hacerlo por curiosidad, diviértase con el proceso, y consiga café para esos largos ratos en que el procesador compila código.
En resumen, el proceso es el siguiente:
1. Bajar el paquete paquete-x.src.rpm
2. Hacer que rpmbuild compile el paquete
3. Instalarlo con rpm -Uvh paquete-x
4. Disfrutar el programa compilado especialmente para su PC.
Ahora veámoslo en detalle.
Como root desde una consola, usamos el comando
rpmbuild --rebuild --target=$HOSTTYPE ruta_al_paquete/paquete-x.src.rpm
Eso graba el rpm terminado en /usr/src/RPMS/arquitectura/paquete-xalgo.rpm . El "algo" son las tres primeras letras de su nombre de usuario (si compilan como usuario y no como root), o lo que decida el sistema en el otro caso. Arquitectura dependerá de su procesador.
Una vez lista la compilación, vamos al directorio /usr/src/RPMS/i586 o la dirección que corresponda a su arquitectura de PC. Ahora puede instalar el paquete compilado:
rpm -Uvh paquete-xalgo.rpm Recordamos que la opción -U sirve tanto para instalar como para actualizar paquetes.
El infierno de las dependencias
En todos los casos, algunos más, otros menos, podemos tener el siguiente problema: acabamos de bajar el programa X. Quiere instalarlo, pero rpm le hace saber de maneras más o menos ruidosas "Falta el archivo/paquete Y para funcionar". Eso hace que tengamos que buscar Y por la red, tratar de instalarlo, etc. En algunos casos desesperantes, podemos llegar a paquetes con dependencias recursivamente enlazadas: el paquete Z, del que depende Y, depende a su vez de que exista el paquete X... ¡Pero X necesita Y!
¿Qué hacer entonces? Lo veremos abajo. ¿Por qué pasa esto? Porque, a diferencia de Windows, donde cada aplicación escribe el registro como quiere y sobreescribe archivos de sistema a piacere, creando problemas de inestabilidad, cuelgues, etc; en Linux esto no es posible por la estructura de archivos del sistema.
Por eso, hay dos opciones: instalar los paquetes con dependencias enlazadas estáticamente o dinámicamente. Estáticamente quiere decir que el paquete "programa-X.rpm" tiene todas las librerías y archivos necesarios para funcionar como binarios, se instalan en directorios aparte y listo. No tendrá problemas de dependencias faltantes porque todo está incluído en el paquete. Un programa con dependencias enlazadas dinámicamente confía en que nuestro sistema tendrá instalado un cierto número de archivos. Cuando no están surgen los problemas mencionados.
Dirá entonces "¿Por qué no usar directamente paquetes estáticos?" La respuesta es que, por ahora, es un gasto de ancho de banda considerable (los paquetes enlazados estáticamente son mucho más voluminosos que los dinámicos) y de performance: ocupan más espacio en memoria 1. Pero si eso no es problema, le damos para adelante.
Nota: las dependencias no son un problema de rpm exclusivamente. Simplemente, rpm avisa con más claridad qué paquete nos hace falta. Cuando bajamos un paquete para compilar, tal vez veamos durante la configuración o compilación avisos del tipo "No se encuentra libZ.so.1". Esto es exactamente lo mismo, con distinto aroma.
Archivos Fuente
La compilación de código fuente es el "sistema" más antiguo de instalación de software en Linux. Consiste en cuatro pasos básicos y bastante estandarizados: la descompresión del paquete bajado de internet, la configuración del código para su sistema, la compilación y la instalación. De estos pasos, el último debe ser efectuado por el usuario root si desea que todos los usuarios del sistema usen el programa final. Si no, deberemos usar una opción especial del programa make para instalarlo en el directorio del usuario.
Veamos el proceso: usted bajó de internet el programa programa.tar.gz y quiere instalarlo. ¿Qué hacer? En un caso ideal, bastante frecuente, basta hacer lo siguiente:
* Descomprimir y desarchivar el paquete en su administrador de archivos; o desde una consola con el comando
tar -zxvf programa.tar.gz
Esto es idéntico para paquetes .tgz. Los paquetes .tar.bz2 sólo cambian las opciones -zxvf por -jxvf.
Estamos diciendo: usar el programa tar y algún otro (z para gunzip y j para usar bunzip2) para descomprimir el paquete programa, extraerlo (opción x) dando información sobre lo que hace (v, verbose). La opción f indica que el archivo es local, que está en nuestra PC (podría no estarlo).
Una manera más larga de hacer el mismo proceso sería ejecutar
gunzip programa.tar.gz
y luego
tar -xvf programa.tar
* Ir al directorio que se creó. Generalmente lleva el mismo nombre que el programa. En la consola, esto es
cd programa
* Leer las instrucciones de compilación e instalación, generalmente en un archivo llamado README o INSTALL. En el caso más simple, serán:
1. Ejecutar el comando ./configure (es decir, "ejecutar el archivo llamado configure situado en el directorio actual"
para que el programa se configure de acuerdo a nuestro sistema.
2. ejecutar make . El programa Make (y varios otros) deberá estar instalado. Para evitarse problemas, simplemente instale el grupo de paquetes "herramientas de desarrollo (programación)" de su distribución. Esto compila el programa.
3. Ejecutar make install con el usuario root. Es decir, en la consola ejecutar su y en el campo passwd: escribir el password del usuario root, luego ejecutar make install. Esto instala el programa en los directorios adecuados (generalmente dentro del directorio /usr/local). Ya puede ejecutar el programa, agregarlo al menú de aplicaciones, etc.
4. Suponiendo que quiera desinstalar un programa instalado de esta manera: basta ir al directorio de compilación, loguearse como root y ejecutar make uninstall para eliminar el programa.
5. Esto deja instalado el programa (generalmente dentro del directorio /usr/share), que ya puede ejecutarse desde una consola.
--FIN--
Nota: Este tutorial sirve para cualquier Linux basado en RedHat e inclusive se puede usar RPM en Ubuntu y otros derivados de Debian.
INSTALANDO RPM EN UBUNTU
Si ya tenemos nuestro nombre_del_paquete.rpm a instalar en nuestro Ubuntu, tenemos que convertirlo en nombre_del_paquete.dev y para esto existe el comando alien.
Si no tenemos el paquete alien, lo instalamos como de costumbre y lo que seria el equivalente a urpmi en nuestro Mandriva: apt-get install alien
Una vez instalado el paquete alien, lo ejecutamos asi:
alien -d nombre_del_paquete.rpm.
Ahora ya tenemos nuestro nombre_del_paquete.deb y solo resta instalarlo. Lo cual lo hacemos de la forma de siempre en nuestro Ubuntu:
apt-get install nombre_del_paquete.deb
Y listo! Tenemos nuestro RPM instalado en Ubuntu
Espero que haya quedado claro, cualquier duda consulten. "Cinco peso la horita"
Por gusto propio, uso Mandriva, me parece un sistema muy robusto y estable.
Para instalar el Mandriva si nunca viste un Linux siquiera, te recomiendo este Link de T! en donde sigo una instalacion de Mandriva paso por paso con fotos:
Instalación de programas en la consola
Debido a la historia del sistema, que no voy a mencionar acá, en el entorno GNU/Linux hay dos o tres maneras de instalar software:
A través de paquetes ya compilados. En esta categoría entran los paquetes en formato deb (paquetes para Debian GNU/Linux y derivados, como Lindows[b], [b]Ubuntu, etc.), los paquetes en formato rpm (paquetes para distribuciones como Red Hat, SuSE, Mandriva Linux, etc.). Vamos a hablar sobre los paquetes rpm, ya que son los predeterminados en las tres distribuciones cubiertas por este tutorial.
La otra manera común de instalar es conseguir el código fuente de un programa y compilarlo, es decir transformar las instrucciones de programación legibles por un humano a archivos binarios ejecutables. La compilación es el equivalente informático de tomar una receta e ingredientes y hacer una torta: uno toma el código fuente y lo pasa por un compilador (el horno, digamos) que nos devuelve un programa usable. Dado que dicho código puede ocupar muchos archivos y ocupar bastante espacio, se usan algunas herramientas para comprimirlo. Estas son un compresor y un archivador: gzip (o bzip2) para comprimir y tar para archivar. El procedimiento funciona en cualquier sistema Linux con los paquetes de desarrollo instalados y también en otros sistemas operativos como los BSDs , Unixes o incluso en Mac OS X y Windows (con bastante más trabajo).
Llamamos a los programas "paquetes" porque lo que bajamos de Internet o lo que viene incluído en nuestros discos de instalación son archivos y directorios agrupados y comprimidos, como en un paquete. Este nombre o su equivalente en inglés, package son comunes en el mundo Linux, por lo que usted debe saber a qué nos referimos.
Las herramientas urpm de Mandriva
Para hacerle fácil la vida, Mandriva ha desarrollado poderosas herramientas para administrar su software, expandiendo las funciones de rpm. En su conjunto, las llamaré "herramientas urpm".
Las herramientas básicas son urpmi, urpme, urpmq y urpmf:
* urpmi nombre_de_archivo instalará ese paquete rpm.
* urpme nombre_de_paquete lo desinstalará
* urpmq nombre_de_paquete nos dirá si existe ese paquete en la base de datos (es decir, si es posible instalarlo.
* urpmf archivo Nos dirá qué paquete rpm contiene ese archivo.
Ahora que hicimos la presentación básica, veamos un poco cómo se trabaja realmente (al menos, cómo trabajamos nosotros) con urpm. Por ejemplo, supongamos que un amigo le comentado a nuestro usuario Peluchin la belleza de un paquete llamado qalc (o algo parecido). ¿Cómo ver si está disponible en nuestro sistema?
Para empezar, Peluchin buscará el paquete en la lista disponible:
[rogelio@edhellond ~]$ urpmq qalc
ningún paquete denominado qalc
los siguientes paquetes contienen qalc:
libqalculate0
libqalculate0-devel
qalculate
[rogelio@edhellond ~]$
Vemos que el paquete que buscamos es posiblemente qalculate (los paquetes que comienzan por "lib" son librerías usadas por los programas, y si son necesarias los programas las instalarán). Veamos un poco más:
[rogelio@edhellond ~]$ urpmq -i qalculate
Name : qalculate
Version : 0.7.2
Release : 1mdk
Group : Office
Size : 2903560 Architecture: i586
Summary : A very versatile desktop calculator
[rogelio@edhellond ~]$
Una descripción bastante completa de qué es el programa y qué hace. Bien, para instalarlo necesitaremos ser el usuario administrador. Hora de hacer su (con este comando entramos en modo root o superusuario).
[root@edhellond rogelio]# urpmi qalculate
Para satisfacer dependencias se instalarán los siguientes 4 paquetes (9 MB):
gnuplot-4.0.0-5mdk.i586
libcln3-1.1.9-1mdk.i586
libqalculate0-0.7.2-1mdk.i586
qalculate-0.7.2-1mdk.i586
Es correcto? (S/n)
Vemos que urpmi se encarga de toda la tarea de buscar las dependencias automáticamente. Noten también que instalamos qalculate, no qalculate-0.7.2-1mdk.i586 ni qalculate-0.7.2-1mdk.i586.rpm. Es posible también hacerlo de estos dos últimos modos, en particular si deseamos instalar precisamente esa versión del programa. El comando que dimos instalará la versión más actual contenida en la lista de paquetes. Si esto nos interesa, investigue el comportamiento de las opciones -f y -r de urpmq. Por ejemplo, urpmq -f qalculate.
Después de pedirle el CD / DVD de instalación y de descargar archivos de internet (si es necesario), el paquete quedará instalado y listo para usar.
Todo lo anterior es estrictamente cierto, pero estaba ocultando un par de detalles para hacer la explicación más clara. Ahora es el momento de ver qué es lo que permite esa simplicidad que vimos arriba.
Mandriva y las demás distros importantes usan un sistema de repositorios de paquetes. Esto quiere decir sitios en internet que contienen una lista con montones de paquetes. Basta agregar dicha lista a nuestro sistema para tener a disposición todos esos programas. Normalmente sólo hay dos repositorios base instalados en una distribución Mandriva Linux: los CDs o DVDs de instalación y el repositorio de actualizaciones de seguridad.
Para agregar nuevos repos, podemos usar (en Mandriva al menos) la herramienta apropiada del centro de control, o podemos hacerlo a mano desde una consola. Hay disponible un sitio, easyurpmi, que hace esto de manera muy fácil. Basta ir al sitio, seleccionar la versión instalada de mandriva linux, y agregar luego los repositorios que uno guste. Personalmente, uso los repositorios main (equivalente al DVD de instalación), contrib (paquetes extra), plf-free y plf-nonfree. No es necesario agregar otro repo "updates" si ya tenemos uno configurado. Para agregar un repositorio, marcamos el casillero y elijimos un mirror cercano a nosotros.
Recomiendo marcar también el casillero "Utilizar índices comprimidos, de menor tamaño, con menos información adicional" si nuestra conexión no es demasiado rápida. De todos modos estamos hablando de una descarga de algunos megabytes por repositorio, sólo de las listas de paquetes.
Como dice al final en la página de easyurpmi, copiamos cada línea (una por vez) en la consola y dejamos que el sistema descargue. Luego dispondremos de todos los paquetes que esos repositorios ofrecen. Notamos que si usamos urpmi.removemedia -a como se menciona, debemos agregar un repositorio de actualizaciones, y que el sistema ya no nos pedirá los CDs de instalación. Esto significa que si no eligimos un repositorio Main tendremos problemas
.
Veamos el proceso paso por paso:
1. Elijo mi distribución y arquitectura (en mi caso, "2005" y "i586", es decir, cualquier PC común que no sea un Athlon64) y hago click en "Ir al paso 2".
2. Marco las casillas de los repos Main, Contrib, Updates, PLF-Free y PLF-Nonfree (jpackage contiene paquetes Java, que no me interesan personalmente). En los tres primeros uso el repositorio de Brazil Curitiva (el más cercano a mí), en los otros alguno en Francia (son veloces). Marco también la casilla "Utilizar índices comprimidos", y hago click en "Ir al paso 3)
3. Copio de a una línea en una consola como usuario root (Es decir, abro una terminal o consola, uso el comando su, pongo mi password de root). Como el sitio sugiere, antes de esto uso el comando urpmi.removemedia -a para limpiar lo que había antes.
4. Listo!
Veamos ahora un poco el funcionamiento de urpmi.addmedia y urpmi.removemedia. El primero es bastante complejo, el segundo en cambio sólo requiere nombre(s) de repositorio(s) o la opción -a (all, todos).
Por ejemplo:
urpmi.addmedia main ftp://bo.mirror.garr.it/mirrors/Mandrake/official/2005/i586/media/main with media_info/synthesis.hdlist.cz
Indica que agregaremos el repositorio llamado "main" (puede tener cualquier nombre, pero main es más claro), que se encuentra en el sitio ftp://bo.mirror... con lista de paquetes en el directorio media_info/. El archivo synthesis.hdlist.cz contiene la lista de paquetes, en este caso con una información menor que si fuera hdlist.cz a secas.
El comando man urpmi.addmedia nos mostrará las diversas opciones disponibles y la sintaxis del comando. Una opción importante es --update, que configura el repositorio como uno del que recibiremos actualizaciones.
urpmi.removemedia main se encarga por supuesto de quitar ese repositorio de la lista.
Cada tanto, actualizamos nuestra lista de paquetes para ponernos al día con los repositorios. Es simplemente cuestión de ejecutar el comando urpmi.update -a (actualiza todos los repositorios).
Actualizar su sistema con urpmi
Es posible (y recomendable) tener actualizado nuestro sistema fácilmente. Hemos visto en otra parte de este tutorial cómo hacerlo en modo gráfico, ahora veamos los comandos equivalentes.
Personalmente, cuando quiero actualizar mi sistema simplemente ejecuto el comando
urpmi --auto --auto-select
La opción --auto-select indica "seleccionar todos los paquetes actualizables" y la opción --auto indica "resolver las dependencias automáticamente". Eso quiere decir que, si todo está estable, la instalación debería terminar tranquilamente, al máximo pidiéndonos confirmación para instalar todo.
Notamos que, si justo intentamos instalar en un momento en que alguien ha subido un paquete actualizado al repositorio, pero no sus dependencias actualizadas, es muy posible que ese paquete no pueda ser instalado. Deberemos entonces esperar o buscar el programa de otro modo.
RPMs
El sistema de instalación RPM se pensó como una manera de facilitar las cosas al usuario. Actualmente se usa en muchas distribuciones, y tiene "metaherramientas" como urpmi que lo usan para hacer las cosas todavía más simples. Sólo deberían usar el comando rpm como último recurso, pero está ahí, siempre disponible, y veremos su funcionamiento básico. Antes de empezar, recuerde que debe trabajar con el usuario root para que rpm funcione.
Las principales opciones son las siguientes:
* -i : instala un paquete.
* -U : actualiza un paquete. Si no existe, lo instala.
* -v : modo verboso, proporciona más información.
* -h : muestra una cadena de # a medida que la instalación avanza.
* -e : desinstala un paquete.
* --force : fuerza una instalación.
* --nodeps : no chequea por posibles dependencias.
Normalmente veremos o querremos usar los comandos
rpm -ivh paquete-X.rpm para instalar un programa
rpm -Uvh paquete-X.rpm para actualizar un programa
rpm -e paquete-X (sin las extensiones de versión o .rpm), desinstala el paquete
rpm -ivh --force --nodeps paquete-X.rpm para forzar la instalación de un programa especialmente molesto.
No recomiendo para nada la instalación de software usando las opciones --force y --nodeps. Suelen crear problemas de incompatibilidades y errores en el paquete instalado. Sólo deben usarse si es el único modo posible. Esto incluye confirmación en la lista de correos del programa, consultas en foros, mails al programador, etc. Busque en el sitio web del programa las dependencias necesarias, y si son incompatibles con su sistema, pregunte al autor del programa qué se puede hacer.
Otra parte interesante de rpm es su base de datos, que permite buscar archivos o paquetes por nombre. Si un programa le pide instalar la librería libprograma.so.0, puede buscarlo con el comando
rpm -qa libprograma.so.0 . Las opciones son -q (query) para buscar, -f (file) para decirle que lo que buscamos es un archivo en particular. Un ejemplo:
[root@localhost adriano]# rpm -qf /usr/lib/libpty.so.1
krb5-libs-1.2.7-1.1mdk
Otras posibilidades de búsqueda son la opción -R que muestra qué requiere un paquete instalado para funcionar (es decir, nos da sus dependencias). Se usa de esta manera:
rpm -qR paquete-X
Para más posibilidades, podemos consultar la página de manual de rpm, y ver qué otros programas de la "familia" de rpm puede usar (dependen de paquetes instalados, así que hacemosa uso de lo aprendido en estos tutoriales para buscar e instalar algún programa que no tengamos. En la máquina en que los autores trabajan, usando Mandrake 9.1, están disponibles los siguientes:
[root@localhost adriano]# rpm
rpm rpmdb rpme rpm-rebuilder
rpm2cpio rpmdiff rpmi rpmsign
rpm2header rpmdrake rpmlint rpmu
rpmbuild rpmdrake-remove rpmquery rpmverify
De los cuales normalmente no querrá usar todos. Si quiere instalar paquetes .src.rpm, vea la sección abajo, e investigamos el uso de rpm-rebuilder y rpmbuild.
Instalando rpms de código fuente (paquetes .src.rpm)
Es posible que necesite o quiera compilar usted mismo sus programas, pero manteniendo las ventajas del sistema rpm. En este caso, lo mejor es bajar de internet (de los mirrors de su distribución por ejemplo) los programas en formato .src.rpm. Suelen encontrarse en un directorio aparte (sources) en los sitios de download y las distribuciones en caja incluyen CDs con los srpms (pronuncie "es-arpiéms", o "ese-errepeemes"
de todos los programas instalables. Compilando sus rpms logrará un sistema más ajustado a su hardware, aunque si ése es el único motivo que lo impulsa le recomendamos que no pierda el tiempo: la diferencia en performance es normalmente ínfima en máquinas modernas. Si desea hacerlo por curiosidad, diviértase con el proceso, y consiga café para esos largos ratos en que el procesador compila código.
En resumen, el proceso es el siguiente:
1. Bajar el paquete paquete-x.src.rpm
2. Hacer que rpmbuild compile el paquete
3. Instalarlo con rpm -Uvh paquete-x
4. Disfrutar el programa compilado especialmente para su PC.
Ahora veámoslo en detalle.
Como root desde una consola, usamos el comando
rpmbuild --rebuild --target=$HOSTTYPE ruta_al_paquete/paquete-x.src.rpm
Eso graba el rpm terminado en /usr/src/RPMS/arquitectura/paquete-xalgo.rpm . El "algo" son las tres primeras letras de su nombre de usuario (si compilan como usuario y no como root), o lo que decida el sistema en el otro caso. Arquitectura dependerá de su procesador.
Una vez lista la compilación, vamos al directorio /usr/src/RPMS/i586 o la dirección que corresponda a su arquitectura de PC. Ahora puede instalar el paquete compilado:
rpm -Uvh paquete-xalgo.rpm Recordamos que la opción -U sirve tanto para instalar como para actualizar paquetes.
El infierno de las dependencias
En todos los casos, algunos más, otros menos, podemos tener el siguiente problema: acabamos de bajar el programa X. Quiere instalarlo, pero rpm le hace saber de maneras más o menos ruidosas "Falta el archivo/paquete Y para funcionar". Eso hace que tengamos que buscar Y por la red, tratar de instalarlo, etc. En algunos casos desesperantes, podemos llegar a paquetes con dependencias recursivamente enlazadas: el paquete Z, del que depende Y, depende a su vez de que exista el paquete X... ¡Pero X necesita Y!
¿Qué hacer entonces? Lo veremos abajo. ¿Por qué pasa esto? Porque, a diferencia de Windows, donde cada aplicación escribe el registro como quiere y sobreescribe archivos de sistema a piacere, creando problemas de inestabilidad, cuelgues, etc; en Linux esto no es posible por la estructura de archivos del sistema.
Por eso, hay dos opciones: instalar los paquetes con dependencias enlazadas estáticamente o dinámicamente. Estáticamente quiere decir que el paquete "programa-X.rpm" tiene todas las librerías y archivos necesarios para funcionar como binarios, se instalan en directorios aparte y listo. No tendrá problemas de dependencias faltantes porque todo está incluído en el paquete. Un programa con dependencias enlazadas dinámicamente confía en que nuestro sistema tendrá instalado un cierto número de archivos. Cuando no están surgen los problemas mencionados.
Dirá entonces "¿Por qué no usar directamente paquetes estáticos?" La respuesta es que, por ahora, es un gasto de ancho de banda considerable (los paquetes enlazados estáticamente son mucho más voluminosos que los dinámicos) y de performance: ocupan más espacio en memoria 1. Pero si eso no es problema, le damos para adelante.
Nota: las dependencias no son un problema de rpm exclusivamente. Simplemente, rpm avisa con más claridad qué paquete nos hace falta. Cuando bajamos un paquete para compilar, tal vez veamos durante la configuración o compilación avisos del tipo "No se encuentra libZ.so.1". Esto es exactamente lo mismo, con distinto aroma.
Archivos Fuente
La compilación de código fuente es el "sistema" más antiguo de instalación de software en Linux. Consiste en cuatro pasos básicos y bastante estandarizados: la descompresión del paquete bajado de internet, la configuración del código para su sistema, la compilación y la instalación. De estos pasos, el último debe ser efectuado por el usuario root si desea que todos los usuarios del sistema usen el programa final. Si no, deberemos usar una opción especial del programa make para instalarlo en el directorio del usuario.
Veamos el proceso: usted bajó de internet el programa programa.tar.gz y quiere instalarlo. ¿Qué hacer? En un caso ideal, bastante frecuente, basta hacer lo siguiente:
* Descomprimir y desarchivar el paquete en su administrador de archivos; o desde una consola con el comando
tar -zxvf programa.tar.gz
Esto es idéntico para paquetes .tgz. Los paquetes .tar.bz2 sólo cambian las opciones -zxvf por -jxvf.
Estamos diciendo: usar el programa tar y algún otro (z para gunzip y j para usar bunzip2) para descomprimir el paquete programa, extraerlo (opción x) dando información sobre lo que hace (v, verbose). La opción f indica que el archivo es local, que está en nuestra PC (podría no estarlo).
Una manera más larga de hacer el mismo proceso sería ejecutar
gunzip programa.tar.gz
y luego
tar -xvf programa.tar
* Ir al directorio que se creó. Generalmente lleva el mismo nombre que el programa. En la consola, esto es
cd programa
* Leer las instrucciones de compilación e instalación, generalmente en un archivo llamado README o INSTALL. En el caso más simple, serán:
1. Ejecutar el comando ./configure (es decir, "ejecutar el archivo llamado configure situado en el directorio actual"
para que el programa se configure de acuerdo a nuestro sistema.
2. ejecutar make . El programa Make (y varios otros) deberá estar instalado. Para evitarse problemas, simplemente instale el grupo de paquetes "herramientas de desarrollo (programación)" de su distribución. Esto compila el programa.
3. Ejecutar make install con el usuario root. Es decir, en la consola ejecutar su y en el campo passwd: escribir el password del usuario root, luego ejecutar make install. Esto instala el programa en los directorios adecuados (generalmente dentro del directorio /usr/local). Ya puede ejecutar el programa, agregarlo al menú de aplicaciones, etc.
4. Suponiendo que quiera desinstalar un programa instalado de esta manera: basta ir al directorio de compilación, loguearse como root y ejecutar make uninstall para eliminar el programa.
5. Esto deja instalado el programa (generalmente dentro del directorio /usr/share), que ya puede ejecutarse desde una consola.
--FIN--
Nota: Este tutorial sirve para cualquier Linux basado en RedHat e inclusive se puede usar RPM en Ubuntu y otros derivados de Debian.
INSTALANDO RPM EN UBUNTU
Si ya tenemos nuestro nombre_del_paquete.rpm a instalar en nuestro Ubuntu, tenemos que convertirlo en nombre_del_paquete.dev y para esto existe el comando alien.
Si no tenemos el paquete alien, lo instalamos como de costumbre y lo que seria el equivalente a urpmi en nuestro Mandriva: apt-get install alien
Una vez instalado el paquete alien, lo ejecutamos asi:
alien -d nombre_del_paquete.rpm.
Ahora ya tenemos nuestro nombre_del_paquete.deb y solo resta instalarlo. Lo cual lo hacemos de la forma de siempre en nuestro Ubuntu:
apt-get install nombre_del_paquete.deb
Y listo! Tenemos nuestro RPM instalado en Ubuntu
Espero que haya quedado claro, cualquier duda consulten. "Cinco peso la horita"