Linux - Instalar programas (gestión de paquetes, compilación)

Mayo 2017


                                                                                                                              • INSTALAR UN PROGRAMA BAJO LINUX: ***** LA GESTION DE PAQUETES o COMO SIMPLIFICARSE LA VIDA ** UN EJEMPLO DE COMPILACION PARA ENTRAR EN EL TEMA ************************************************************


Prerequisitos

  • Saber utilizar la consola (terminal, shell)
  • Conocer la noción de usuario normal / de súper-usuario (root)
  • Conocer los comandos unix de base (cd, ls, rm, mkdir,...): Introducción comandos de base
  • Saber instalar aplicaciones
  • Otros enlaces de interés: Introducción a GNU/Linux

Introducción


Existen varios tipos de instalación, los paquetes o la compilación de fuentes, esta última solución siendo la más difícil de realizar. En cambio, la instalación de paquetes es sumamente sencilla, pudiendo incluso hasta evitarnos la búsqueda de paquetes, en efecto, ciertas distribuciones linux se han dado el trabajo de desarrollar herramientas de gestión de paquetes.
Sin embargo puede darse que ciertos programas (o las últimas versiones de ciertos programas) no existan (o aún no existan) en forma de paquetes: Por lo que se debe pasar por la compilación de las fuentes, de la que veremos un ejemplo en la parte III

I. La gestion de paquetes en diversas distribuciones

I.1. Introducción


Los paquetes son a linux como los .exe son a Windows. Estos son sumamente fáciles de instalar en la mayoría de casos, una vez que los enlaces dados como "Prerrequisitos" hayan sido realizados.
Los paquetes se presentan con las extensiones .rpm (para "Red-hat Package Management") en las distribuciones Mandrake, RedHat, Fedora Core y Suse, bajo la forma .deb para Debian, Ubuntu etc... y bajo la forma .tgz para Slackware.
Se instalan con el comando
rpm -ivh programme.rpm
o
dpkg -i programme.deb
o incluso
installpkg programme.tgz

Sin embargo varios problemas pueden presentarse: el paquete que se desea instalar (programa_A) necesita la instalación de otro programa (programa_B) antes que nuestro programa_A: hará falta entonces ir a buscar el paquete del programa_B para instalarlo, pero nuevamente éste puede necesitar de la presencia de un programa_C, y así sucesivamente... Son las denominadas dependencias, y esto puede volverse rápidamente muy complicado si el programa_A depende del prog_a, prog_b, prog_c y prog_d y a su vez cada uno de ellos depende igualmente de una decena de programas...

Para simplificar la vida del usuario, la mayoría de las grandes distribuciones modernas integran un sistema de gestión de paquetes, que tendrá por rol (entre otros) gestionar las dependencias en lugar del usuario. Así, la instalación del programa_A se hará con el llamado de un comando: "instale-me programa_A", y la herramienta de gestión irá a buscar en los sitios web previamente definidos el programa_A, verificará si el programa_A depende de otros paquetes, y si es el caso, los descargará e instalará en el orden correcto: programa_C, luego el programa_B que depende de C, luego el programme_A que dependía de B.
Estas herramientas varian de una distribución a otra, pero obedecen a algunas generalidades de funcionamiento

***********************************************************************

I.2. Generalidades


Esta herramienta de gestión de paquetes funcionan como sigue: un comando "instale-me-eso:" (que debe reemplazarse por urpmi, apt-get, yum, ...) y el nombre del paquete que uno desee:
instale-me-eso: paquete

Para ello, hará falta configurar este utilitario indicándole donde buscar los paquetes que desea instalar: es lo que se llama darle las fuentes de donde debe descargar los programas. Veamos en la práctica como funciona esto según las diferentes distribuciones.

***********************************************************************

I.3. Mandriva y URPM


Aquí, "instale-me-eso:" se llama "urpmi".
Urpm dispone de varias variantes (notará que "falta" la i al final...)
urpmi que sirve para instalar ("i"nstall)
urpme que sirve para desinstalar ("e"rase)
urpmf y urpmq que sirven para hacer las búsquedas ("f"ind y "q"uery)
Cada uno de estos utilitarios posee una multitud de opciones: vaya al manual
man urpmi
idem para urpme, f, q, para conocer las diferentes opciones utilizables en cada uno de estos utilitarios. A continuación sólo veremos aquellos relacionados a urpmi.

_____________________________________________________________________

I.3.1. Definir las fuentes para urpmi


Todos estos comandos necesitan los privilegios de super-usuario (root): para ello, ingrese su luego su contraseña.

Para poder utilizar urpmi, se deberá inicialmente configurar las fuentes para urpmi. Para ello, utilizamos los comandos urpmi.addmedia (para adicionar una fuente) y urpmi.removemedia (para eliminar una fuente)
La sintaxis es la siguiente:
para adicionar una fuente:

urpmi.addmedia nom_de_la_fuente protocolo://direccion/del/directorio/de/paquetes/ with
ruta/relativa/hacia/hdlist.cz

para eliminar una fuente:
urpmi.removemedia nom_de_la_fuente

Se pueden adicionar como fuentes: los sitios ftp, http, los CDs, XX??????XXXX
En regla general, al momento de la instalación de Mandrake, se recuperan los diferentes CDs como fuente. Si se posee una conexión de banda ancha de tipo adsl, es preferible comenzar por eliminarlos y procurarse las nuevas fuentes que estarán actualizadas (contrariamente a los CDs)

urpmi.removemedia -a

Elimine todas las fuentes antiguas.

En seguida hay que adicionar las fuentes que se deseen: puede por ejemplo utilizar el sitio easyurpmi.zarb.org muy bien realizado. Se adicionan entonces las diferentes fuentes: "main" correspondientes más o menos a lo que hay en los CDs, "updates" tiene las actualizaciones, "contrib" correspondiente a los paquetes provistos por otros usuarios (a utilizar con moderación). Existen también fuentes jpackage y plf (penguin liberation front) que pueden ser adicionados para aumentar el número de paquetes instalables por urpmi. Hay que notar que estos diferentes nombres han sido dados de forma indicativa, el usuario es libre de darles el nombre que desee.
Ejemplo detallado: la fuente "main"


urpmi.addmedia main fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/main with
media_info/hdlist.cz
  • urpmi.addmedia es el comando
  • main es el nombre de la fuente urpmi (el usuario es libre por ejemplo de poner \"principal\", o incluso \"toto_ama_las_flores\", lo importante es de ingresar un nombre reconocible: es habitual de llamarla por ejemplo \"rpmfind_main\" ya que va a buscar en el sitio rpmfind
  • ............../media/main corresponde a la carpeta que contiene los archivos .rpm de la fuente main
  • with media_info/hdlist.cz correspondiendo a la lista de paquetes contenidos en la carpeta .../media/main definido anteriormente: esta lista será descargada y almacenada en su ordenador y permitirá al programa saber rápidamente si el paquete existe y donde buscarlo: se trata de una ruta RELATIVA: es decir que la ruta hacia hdlist.cz es en realidad: ....../media/main/media_info/hdlist.cz


puede que a veces se encuentre con "with ../media_info/hdlist_main.cz": esto significa que la "hdlist" para "main" se sitúa en: ....media/media_info/hdlist_main.cz: se ha subido con .. un nivel en la arborescencia antes de volver a descender hacia media_info/

quedan por instalar los diferentes fuentes de la misma manera: para eso siga las indicaciones de easyurpmi, es decir ojee un poco en el sitio ftp para encontrar lo que le interese...
se puede por ejemplo adicionar:
urpmi.addmedia updates fr2.rpmfind.net/linux/Mandrakelinux/official/updates/10.1/main_updates with media_info/hdlist.cz

urpmi.addmedia contrib fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/contrib with media_info/hdlist.cz
urpmi.addmedia jpackage fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/jpackage with media_info/hdlist.cz
urpmi.addmedia plf-free ftp.free.fr/pub/Distributions_Linux/plf/mandrake/free/10.1 with hdlist.cz
urpmi.addmedia plf-nonfree ftp.free.fr/pub/Distributions_Linux/plf/mandrake/non-free/10.1 with hdlist.cz

Y bien, hemos instalado las diferentes fuentes para urpmi!

Resumen
su
xxxxxx <-- contraseña root
urpmi.removemedia -a
urpmi.addmedia nom carpeta_de_los_rpm with ruta_relativa/hdlist.cz

_______________________________________________________________________

I.3.2. Actualización de fuentes


Las distribuciones linux y los paquetes asociados son constantemente en evolución, es por esto que se aconseja, por ejemplo antes de instalar ciertos paquetes, de hacer una actualización de sus diferentes fuentes

_______________________________________________________________________

I.3.3. Instalar un programa con urpmi


Es aquí que uno comprende toda la potencia de utilización de este tipo de gestor de paquetes...
En un Terminal, pasamos al modo súper-usuario (su), y si se desea instalar el paquete "paquete", ingresamos:
urpmi paquete


Ejemplo : imaginemos que deseamos instalar gedit:
urpmi gedit

¡será suficiente!
Otro ejemplo interesante: Ud. desea instalar un "equivalente" libre de Office, pero no sabe ¿cómo se llama en linux? Puede contar con el hecho de que el paquete contendrá al menos la cadena de caracteres "office": puede intentar entonces
urpmi office

Aquí ¿algún usuario de mandrake podrá decirme lo que arroja exactamente el programa????
¡éste le propone los diversos nombres de paquetes que contienen office!
una vez hecha la selección (por ejemplo openoffice), lo indica!

urpmi openoffice.org

y ¿es el nombre correcto del paquete?
man urpmi

le dará las diferentes opciones disponibles con urpmi para un uso avanzado (por ejemplo especificar una fuente, ignorar las dependencias, etc etc)
es también posible buscar los paquetes con urpmf o urpmq (vea
man urpmf
y
man urpmq
)
en fin, se puede verificar la posibilidad de instalar un paquete con
urpmi --test paquete


Resumen
su
xxxxxx <-- contraseña root
urpmi paquete

Para una actualización de todos los paquetes ya instalados:

urpmi.update -a
urpmi --auto-select

para probar la posibilidad de instalación de "paquete"

urpmi --test paquete

_______________________________________________________________

I.3.4. Desinstalar un programa con urpme


¿El paquete que acaba de instalar no le gusta? O ¿no le ve finalmente la utilidad? ¡No hay nada más fácil que eliminarlo! Siempre como súper-usuario, le bastará con ingresar
urpme gedit
por ejemplo para eliminar gedit anteriormente instalado.

Resumen
su
xxxxxx <-- contraseña root
urpme paquete

______________________________________________________________

I.3.5. Gestión en modo gráfico


No conozco, pero se que existe , del tipo drakconf, instalar paquetes, etc.: ¿alguien que lo pueda detallar??

I.4. debian y apt-get


Aquí, "instale-me-eso:" se llama "apt-get".
Las diferentes opciones de apt-get están descritas en el manual:
man apt-get

_______________________________________________________________________

I.4.1. Definir las fuentes para apt-get


Ellas son definidas en al archivo /etc/apt/sources.list, y se presentan como una línea conteniendo:
type adresse version nom1 nom2 ...

tipo: puede ser "deb" para los paquetes o "deb-src" para las fuentes de programas
dirección: dirección de la carpeta de la distribución
versión: versión de la distribución : stable, testing o unstable
nombres: nombre de los sub directorios de dirección/dists/versión/

Ejemplo: si se posee la versión testing de Debian: una línea como esta:
deb ftp.fr.debian.org/debian testing main contrib non-free

en el /etc/apt/sources.list hará la tarea.
se puede añadir
deb ftp.fr.debian.org/debian-non-US testing main contrib non-free

para los paquetes etiquetados "non US", y :
deb-src ftp.fr.debian.org/debian/ testing main contrib non-free

para los paquete-fuente de programa.
el archivo /etc/apt/sources.list debe editarse "a mano" como súper-usuario
_______________________________________________________________________

I.4.2. Actualización de fuentes


La actualización de fuentes se hace gracias al comando:
apt-get update

_______________________________________________________________________

I.4.3. Instalar un programa


Se instala un paquete con el comando:
apt-get install paquete


Ejemplo: si desea instalar gedit:
apt-get install gedit

nos da:
Lectura de listas de paquetes... Hecho
Construcción del árbol de dependencias... Hecho
Los paquetes adicionales siguientes serán instalados :
docbook-xml gedit-common gnome-keyring libbonoboui2-0 libbonoboui2-common libeel2-2 libeel2-data
libgail-common libgail17 libgnome-keyring0 libgnomeui-0 libgnomeui-common libgtksourceview-common
libgtksourceview1.0-0 libscrollkeeper0 scrollkeeper
Paquetes sugeridos:
docbook docbook-doc docbook-dsssl docbook-xsl docbook-stylesheets docbook-xsl-stylesheets
gnome-icon-theme
Los siguientes NUEVOS paquetes serán instalados:
docbook-xml gedit gedit-common gnome-keyring libbonoboui2-0 libbonoboui2-common libeel2-2
libeel2-data libgail-common libgail17 libgnome-keyring0 libgnomeui-0 libgnomeui-common
libgtksourceview-common libgtksourceview1.0-0 libscrollkeeper0 scrollkeeper
0 actualizaciones, 17 recientemente instalados, 0 a retirar y 4 no actualizados.
Es necesario tomar 5584ko de los archivos.
Luego de desempaquetado, serán utilizados 24,7Mo de espacio de disco suplementario.
¿Desea continuar? [S/N]

Vemos que apt-get nos indica cuales son los paquetes que deben ser instalados para satisfacer las dependencias

También se puede hacer una actualización con:
apt-get dist-upgrade

que va a verificar todas las actualizaciones de los paquetes actualmente instalados y hacer una actualización si fuese necesario

Resumen
  • instalación de \"paquete\" :


apt-get install paquete
  • actualización del sistema:


apt-get dist-upgrade
  • actualización del \"paquete\":


apt-get upgrade paquete
_______________________________________________________________________

I.4.4. Desinstalar un programa


La desinstalación del "paquete" se hace con:
apt-get remove paquete


apt-get descarga los paquetes .deb antes de instalarlos, se recomienda limpiar de tiempo en tiempo esta base de datos temporal:
apt-get clean

_______________________________________________________________________

I.4.5. Otras herramientas Debian


Existen otras herramientas Debian que permiten la gestión de paquetes. Podemos citar principalmente synaptic, dselect y aptitude
para instalarlos, ¡nada más simple ahora! :
apt-get install synaptic dselect aptitude

Los lanzamos con
aptitude
o
dselect
o incluso
synaptic

aptitude me parece el más completo, es "casi gráfico": funciona en un Terminal, pero los menús son accesibles con el ratón. Permite hacer búsquedas con parte del nombre del paquete, ver para cada paquete aquellos de los que depende, aquellos que dependen de él, los paquetes que son utilizados en asociación con él, etc. etc. Muy práctico, entonces hay que probarlo!
dselect posee un menú en modo texto, y puede ser desconcertante al inicio. Tiene la tendencia de dejar su lugar a aptitude.
no conozco synaptic sin embargo...alguien podrían decir algo?

                                                                                                                                              • ===I.5. Fedora y Yum===***********************************************************************

I.6. Slackware


Los paquetes de esta distribución son un conjunto de archivos reunidos en uno solo gracias al utilitario "tar" luego comprimidos en gzip.
Su extension es .tgz (una contracción de tar.gz). Esto puede prestarse a confusión: tenemos la habitud de asociar tar.gz a las fuentes archivadas de un software. Pero, este no es el caso: no son las fuentes más bien los archivos binarios que están contenidos en estos archivos. Al igual que los paquetes de otras distribuciones (excepto Gentoo y sus derivados).

En slackware, hay un gestor de paquetes entregado por defecto: pkgtools.
Lo podemos comparar a dpkg en debian: es el gestor de base para instalar, retirar, crear un paquete pero no irá a buscar las dependencias por usted. A pesar que este párrafo supuestamente sólo debe introducir los administradores de paquetes que administran automáticamente las dependencias (las otros son nombrados en la introducción). Sin embargo, hay que hablar de esto aquí ya que puede necesitarlo justamente para instalar un administrador de paquetes más avanzado)

Para instalar un paquete con pkgtools:
installpkg ruta_hacia_un_paquete.tgz

Para eliminarlo:
removepkg nom_paquete #Sin .tgz alfinal

Para actualizarlo:
upgradepkg nom_antiguo_paquete%ruta_hacia_nuevo_paquete.tgz

=> slackware.com/config/packages.php

Pero si no desea romperse la cabeza administrando las dependencias usted mismo (lo que es comprensible), puede utilizar un administrador de paquete más avanzado como slackpkg.
slackpkg.sourceforge.net/
Para instalarlo, siga escrupulosamente la parte "install" del enlace de más abajo. En resumen y para aclarar un poco el inglés:
  • Descargue el paquete slackpkg (enlace dado en la acápite de install líneas arriba)
  • Instalar este paquete con installpkg
  • Editar el archivo de configuracion /etc/slackpkg/mirrors y retirar el comentario de una sola línea (éste será el enlace del mirror hacia el que slackpkg irá a buscar los paquetes).
  • Lance el comando
    slackpkg update
    esto permitirá recuperar la lista de paquetes que contiene el servidor mirror.


Y ya esta, lance el comando anterior de vez en cuando para actualizar su lista de paquetes.
Para instalar un paquete:
slackpkg install nom_paquete

Oh maravilla puede incluso permitirse aproximaciones con el nombre del paquete, slackpkg le ofrecerá una lista con los nombres de los paquetes que se aproximan a aquellos que solicitó.
Actualice sus paquetes (automáticamente todos aquellos para los que hay una actualización):
slackpkg upgrade

buscar el nombre de un paquete:
slackpkg search nom_archivo
donde nom_archivo es le nombre de un archivo que se encuentra en el paquete que busca (súper práctico).


Slackpkg no es el único administrador de paquetes avanzado de Slackware, no dude en revisar swaret y slapt-get:
http://swaret.sourceforge.net/index.php
http://freshmeat.net/projects/slaptget/

***********************************************************************

II. Alien : Otras soluciones ...


Desea instalar la última versión de su programa preferido, y todos los paquetes son disponibles!! En fin, casi todos... todos excepto el de su distribución.... Le hará falta compilar las fuentes, y la última vez que experimentó, fue una catástrofe total.... le queda talvez una última esperanza: se llama alien, se usa para "transformar" un paquete .rpm en .deb, o en viceversa... éste puede gestionar los paquetes rpm, deb, slp, tgz y pkg (para Solaris). Sin embargo es y será sin duda por siempre un programa "de test" que no será jamás eficaz al 100%
A pesar de esto, sigue siendo una solución interesante antes de compilar las fuentes. Para instalarla, apt-get o urpmi debería ser suficiente
en seguida
alien --to-deb paquete.rpm
creará el archivo paquete.deb que podrá instalarlo con
dpkg -i paquete.deb

una lectura atenta de
man alien
le permitirá encontrar las opciones adecuadas a su distribución.

***********************************************************************

III. Un ejemplo de compilacion de fuentes

III.1. Recordatorio


Nada que hacer, no llega a encontrar un solo paquete o incluso alien no le sirva para instalar su programa... hará falta recurrir a la instalación del programa a partir del código fuente...
éste se presenta generalmente bajo la forma de un archivo comprimido (.tar.gz o .tar.bz2).
El procedimiento se resume a lo siguiente:
  • extracción del código fuente en la carpeta \"programa\"
  • cd hacia la carpeta \"programa\"
  • ./configure
  • make
  • pasar a súper-usuario
  • make install


Sin embargo, la mayoría de principiantes en linux se precipitan hacia programas muy complicados de instalar que suponen la instalación previa de un gran número de paquetes llamados "de desarrollo" del tipo toto-dev, toto-devel, o libtoto, sin contar con todas las dependencias intrincadas que posiblemente son necesarias
Aquí haremos una instalación simple de un programa que sólo depende de un número reducido de cosas para realizar la instalación.
_______________________________________________________________________

III.2. Programas necesarios para la compilación


Para este ejemplo, y para ver si hemos comprendido bien el procedimiento, vamos a instalar lynx que es un navegador Internet en modo consola. Como se trata de un programa relativamente simple (modo consola), éste depende de muy pocas cosas. Pero ya que se trata del código fuente del programa, nos hará falta al menos un compilador! (que va a "traducir" las líneas de código hacia un ejecutable).
Para lynx, se trata de gcc
Para verificar que lo tiene, ingrese
which gcc

Si obtiene algo como
/usr/bin/gcc
, tiene bien el gcc
Si no, si siguió lo que se hizo líneas arriba, y de acuerdo a su distribución, puede utilizar
urpmi gcc
o
apt-get install gcc
o incluso
yum gcc
deberían ser suficientes
_______________________________________________________________________

III.3. La compilación


El objetivo aquí es proporcionarle (con las explicaciones del caso) todas las etapas necesarias a la compilación del programa, partiendo de la hipótesis de que posee todos los programas, compiladores y otros.
Comencemos por obtener el código fuente del programa que nos interesa.
lynx.isc.org/release/lynx2.8.5.tar.bz2 para el archivo en formato .tar.bz2
y la descargamos en /home/toto/ (si el usuario se llama toto => a reemplazar por su nombre de usuario si no lo conoce, obténgalo con:
ls -l /home
le dará una lista de usuarios: para ¡reemplazar "toto" por el correcto!)
Enseguida, abriremos una ventana de Terminal, y nos desplazamos hacia /home/toto, ¡como usuario normal! (toto, y no el súper usuario root)
cd /home/toto

ls -rtl
: verá aparecer en la liste (sin lugar a dudas entre las últimas posiciones, el archivo "lynx2.8.5.tar.bz2". como ya se dijo, se trata de un archivo, como un .zip o un .rar: hará falta entonces extraer el contenido. Para ello, utilizamos el comando tar
tar xvfj lynx2.8.5.tar.bz2

debería ver desfilar las líneas, que corresponden a los ficheros que son extraídos del archivo
.
.
.
lynx2-8-5/test/
lynx2-8-5/test/tabtest.html
lynx2-8-5/test/iso8859-1.html
lynx2-8-5/test/TestComment.html
lynx2-8-5/test/ISO_LATIN1_test.html
lynx2-8-5/test/README.txt
.
.
.

aquí, verá que todos estos archivos tienen por nombre uno que comienza por lynx2-8-5/: se trata de la carpeta en la que efectivamente serán extraídas las fuentes.
desplacémonos hacia esa carpeta:
cd lynx2-8-5/
y veamos lo que contiene:
ls

Vemos una cantidad de archivos, donde los más importantes son: configure?? Makefile?? NO!! README e INSTALLATION por supuesto!!
Les ahorraré la lectura aquí, pero para compilar un programa más complejo, esto puede ser ¡útil y necesario!
Normalmente, la primera etapa de la compilación corresponde a la configuración con ./configure: aquí, para evitar de reinstalar lynx que talvez ya está instalado, y para verificar que lo que uno va a hacer funcione correctamente, crearemos una carpeta "Install_test" en la que instalaremos la versión compilada.
mkdir Install_test

y vamos a configurar precisando que esta carpeta será la carpeta donde instalaremos nuestro nuevo programa gracias a la opción --prefix= en ./configure :
./configure --prefix=/home/toto/lynx2-8-5/Install_test
(teniendo cuidado de reemplazar "toto" por el usuario correcto)
el sistema verifica entonces que el compilador esté presente, otras opciones, o formas de compilar/instalar el programa, pero ¡le dice todo! (lo que es de gran utilidad cuando se planta el sistema: podemos entonces saber lo que falta en la configuración)
Una vez configurado, hace falta compilar el programa con make
make

desfilan una gran cantidad de líneas de código correspondientes a los archivos compilados, a las opciones de compilación utilizadas, etc. etc.
solo resta instalar el programa: para ello, se requieren los privilegios de súper usuario
su
xxxxxx <-- su contraseña "root"

y en fin:
make install

En esta etapa, si todo pasó bien, su programa está instalado en /home/toto/lynx2-5-8/Install_test/bin y puede lanzarlo con:
/home/toto/lynx2-8-5/Install_test/bin/lynx

su pantalla se colorea, y llega a un menú un poco extraño "Lynx source distribution and potpourri". Presione "q" para salir: Bingo!!! Ha compilado e instalado su programa! No aprenderemos a utilizarlo aquí...
si desea que esté instalado en el sistema y que pueda lanzarlo ingresando solamente "lynx", hará falta empezar de nuevo sin usar la opción --prefix=

Para borrar el programa:
cd /home/toto/lynx2-8-5/
make uninstall
make clean

_______________________________________________________________________

III.4. Desinstalación


Para la instalación por compilación, se presenta el problema de la desinstalación y el de la actualización del software.
  • En efecto, dos métodos son posibles:
  • el comando "make uninstall": sólo es posible si por una parte, se ha conservado el directorio que sirvió para la compilación (para retomar el ejemplo anterior, se trata del directorio /home/toto/lynx2-8-5/ ) y por otra la desinstalación haya sido prevista, es decir que existan las reglas para crear el objetivo "uninstall" (make uninstall").
  • eliminar los archivos generados por la instalación a través de "make install": esto significa complicar la tarea ya que habrá que reparar la ubicación de los archivos generados. Será la única solución si ninguna regla para el "uninstall" ha sido prevista.
  • Para paliar esta dificultad, existe el comando \"checkinstall\".


Su ventaja es la de permitir la instalación de un software compilado como el de una instalación por paquete: el software compilado se encuentra entonces en la lista de los software en su administrador de paquetes. Por cierto, un paquete correspondiente a nuestro software compilado, en el mismo formato que el de la distribución (*.deb para los Debian-like o *.rpm para las distribuciones a base de rpm) es generado en el directorio de compilación.
  • Pasos a seguir: bastará con optar por el comando \"checkinstall\" en lugar del comando \"make install\".


seguimos entonces la secuencia:

./configure -> make -> checkinstall

en lugar de la clásica:

./configure -> make -> make install

Se le solicitará diversas informaciones (creación o no de la doc correspondiente, comentarios) a fin de finalizar la creación del paquete correspondiente.

observe que checkinstall reconoce el formato del paquete a generar en el caso de Ubuntu. En regla general, para Fedora por ejemplo, se le solicita indicar el formato del paquete que va a ser creado.
  • Se hace entonces simple de eliminar un software compilado:
    • para los Debian-like:

dpkg -r paquete_de_mi-software_compilado


*
    • para las distrib a base de rpm:

rpm -e paquete_de_mi-software_compilado

Para más información vea:
_______________________________________________________________________

III.5. Trucos - consejos

  • Desde un punto de vista más personal, le aconsejaría de descargar y descomprimir sus diferentes fuentes de programas en un directorio que haya creado, por Ejemplo en /usr/src/progperso


mkdir /usr/src/progperso
  • Para los programas que solo desea \"probar\" y desinstalar de inmediato, la idea de --prefijo es interesante, pero en general, hay que evitarla excepto en caso de fuerza mayor (a veces es necesario adicionar --prefix=/usr)
  • Puede intentar la instalación de bc, una calculadora en modo consola (incluso más simple de instalar que lynx)


- descargar www.fr.linuxfromscratch.org/view/blfs-5.0-fr/general/bc.html: es un tar.gz : guardarla en su carpeta /usr/src/progperso por ejemplo
cd /usr/src/progperso
tar xvzf bc-1.06.tar.gz
cd bc-1.06
mkdir install_perso
./configure --prefix=/usr/src/progperso/install_perso
make
su
xxxxxx
make install

Luego
exit
/usr/src/progperso/install_perso/bin/bc

exit para salir del modo root, la línea siguiente para lanzar el programa bc

- con checkinstall:
si sustituimos el comando "make install" por "checkinstall", entonces nos preguntará si hay que generar la doc correspondiente a nuestro software:
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]: n

Personalmente, yo respondo no, pero eso no tiene realmente importancia en el funcionamiento de nuestro software.

luego solicita información para este software:
Installing with "make install"...

========================= Installation results ===========================
[...]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
>>une calculatrice en mode console
>>


Esta descripción concierne a la información mostrada por el administrador de paquetes sobre el paquete. Aquí podemos indicar por ejemplo que si se trata de una calculadora en modo consola.
Podemos notar que "checkinstall" utiliza "make install" para generar nuestro futuro paquete.
This package will be built according to these values:

0 - Maintainer: [ root@localhost.localdomain ]
1 - Summary: [ une calculatrice ]
2 - Name: [ bc-1.06 ]
3 - Version: [ 1.06 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ bc-1.06 ]
9 - Alternate source location: [ ]

Enter a number to change any of them or press ENTER to continue:

Podemos en seguida modificar el encabezado del futuro paquete verificando que la información sea exacta.

                                                                                    • Debian package creation selected **************************************Building Debian package...OKInstalling Debian package...OKErasing temporary files...OKDeleting temp dir...OK********************************************************************** Done. The new package has been installed and saved to /usr/src/progperso/bcbc-1.06/bc-1.06_1.06-1_i386.deb You can remove it from your system anytime using: dpkg -r bc-1.06**********************************************************************
En el caso de un Debian-like (aqui Ubuntu 5.10), obtenemos entonces el paquete bc-1.06_1.06-1_i386.deb que es creado en el directorio de compilación.
Y como se indicó, basta con un "dpkg -r bc-1.06" para desinstalar fácilmente nuestra calculadora.

observe que en este caso, por ejemplo, de Fedora, el paquete no es automáticamente instalado. Además; este se encuentra al momento de su creación en el directorio /usr/src/redhat/RPMS/architecture/.

Consulta también

Publicado por Carlos-vialfa. Última actualización: 19 de noviembre de 2013 a las 17:03 por Carlos-vialfa.
El documento «Linux - Instalar programas (gestión de paquetes, compilación)» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.