The Inside Out


Este sitio La web

¿Sufriste un ataque de generosidad y quieres regalarme algo? ¡Gracias! Fíjate en mi lista de deseos en Amazon.

Hai avuto un attacco di generosità e vuoi regalarmi qualcosa? Grazie! Controlla nella mia lista dei desideri su Amazon.

Instalación de programas en la consola

Debido a la historia del sistema, que no mencionaremos aquí, 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, Ubuntu, etc.), los paquetes en formato rpm (paquetes para distribuciones como Red Hat, SuSE, Mandriva Linux, etc.). Hablaremos sobre los paquetes rpm, ya que son los predeterminados en las tres distribuciones cubiertas por estos tutoriales.
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 le dirá si existe ese paquete en la base de datos (es decir, si es posible instalarlo.
  • urpmf archivo le 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 ha comentado a nuestro usuario Rogelio la belleza de un paquete llamado qalc (o algo parecido). ¿Cómo ver si está disponible en nuestro sistema?

Para empezar, Rogelio 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.

[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 le 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 le estábamos 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 increíblemente sencillo. 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 tienen uno configurado. Para agregar un repositorio, marquen el casillero y elijan un mirror cercano a ustedes.

Recomiendo marcar también el casillero "Utilizar índices comprimidos, de menor tamaño, con menos información adicional" si su 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, copie cada línea (una por vez) en la consola y deje que su sistema descargue. Luego dispondrá de todos los paquetes que esos repositorios ofrecen. Note que si usa urpmi.removemedia -a como se menciona, deberá agregar un repositorio de actualizaciones, y que el sistema ya no le pedirá los CDs de instalación. Esto significa que si no eligió un repositorio Main tendrá 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 Italy Bologna (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 le 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, actualice su lista de paquetes para ponerse 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 su sistema fácilmente. Hemos visto en otra parte de estos tutoriales 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éndole confirmación para instalar todo.

Note que, si justo intenta 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. Deberá entonces esperar o buscar el programa de otro modo, tal vez como explicamos en las próximas secciones.

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 usted verá o querrá 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.

Note que no recomendamos 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 debe usarlas 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, consulte la página de manual de rpm, y vea qué otros programas de la "familia" de rpm puede usar (dependen de paquetes instalados, así que haga uso de lo aprendido en estos tutoriales para buscar e instalar algún programa que usted no tenga. 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 debajo, e investigue 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 fuente: 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, vaya 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 Recuerde 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, puede tener el siguiente problema: acaba 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. Si eso no es problema para usted, adelante.

Note que las dependencias no son un problema de rpm exclusivamente. Simplemente, rpm avisa con más claridad qué paquete nos hace falta. Cuando baja un paquete para compilar, tal vez vea 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, deberá 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.

[1] Si usted usó Windows alguna vez, es posible que conozca programas como RAM Booster o similares, que optimizan el rendimiento de la memoria RAM y vacían memoria en desuso. En Linux, la memoria RAM siempre está llena, pero lo que la llena es algo distinto. Linux carga en la RAM librerías compartidas que pueden ser útiles para abrir programas más rápidamente. Si abre el navegador Mozilla, el núcleo de Linux guardará un número de librerías compartidas en la RAM, para que sea más veloz la carga posterior de otras ventanas del programa. Si usted de pronto decide cerrar Mozilla y abrir la suite OpenOffice, y la RAM no da abasto, las librerías de Mozilla se descargarán para hacer espacio. Esto lleva a un uso óptimo de la memoria y de los recursos del sistema.

Contactarme - Contattarmi

Ningún dato es necesario, salvo antispam y el texto del mensaje.

Nessun dato è necessario, aparte antispam e il testo del messaggio.

Si tienes problemas con el formulario, escríbeme a la dirección de correo en la imagen:

Se hai problemi usando il form, scrivi all'email nell'immagine:

mailto image

Nombre / Nome
Email
Subject
Anti Spam: 2 + 2 =
Texto / Testo