Comprobar si existen programas instalados en linux

Francisco Palm francisco.palm en gmail.com
Dom Oct 1 14:44:03 CEST 2006


Este es el arte del "deployment", y no es un problema técnico, es un
problema de ingeniería de software. Cuando uno especifíca los
requisitos del sistema tiene que pensar en los usuarios del sistema
¿un tipo de usuario potencial de tu sistema usa slackware?, entonces
olvidate de los paquetes! (al menos en el sentido de Redhat o Debian o
Gentoo).

Continuan los comentarios intercalados...

On 9/30/06, Rolando José Torres Sánchez <rolandojtorres en gmail.com> wrote:
> Depende de que tipo de distribucion uses, las distribuciones derivadas
> de Redhat, o Debian, como Mandrake, Conectiva, usan una base de datos
> que ccontiene la informacion de los paquetes que han sido instalados,
> en Redhat se llaman RPM Manager Package RedHat, en Debian son los
> .deb, que pueden ser leidos o convertidos a rpm.
>
> Para saber que paquetes estan instalados, el comando es rpm -aq pero
> si quieres mas informacion sobre esos paquetes, como el listado de los
> archivos de cada paquete, puede darle lo siguiente:
> rpm -aql
>
> Te recomiendo que busques en el man de rpm y de deb2rpm.

Claro, pero eso solamente resolverá el problema para distribuciones
que utilizan RPM. Los convertidores de paquetes comp deb2rpm o alien
(rpm2deb) están bastante lejos de ser infalibles y en particular nada
aconsejables para los paquetes de aplicaciones del sistema
(http://kitenet.net/~joey/code/alien.html). No olvidar además que más
y más gente, y en más y más lugares se utiliza la combinación de
Debian en los servidores y Ubuntu en los escritorios. Los distintos
sistemas de paquetes apt, emerge, rpm, cada uno con sus distintos
sabores y los fuentes son todos bastante utilizados.

>
> Ahora si lo que quieres es despreocuparte por los prerequisitos,
> compila de forma estatica , que ocupa mas pero va a la fija, pero lo
> que pienso es que quieres hacer alguna aplicacion que revise los
> archivos de paquetes que estan instalados, para saber cuales han sido,
> modificados, borrados o movidos.

Compilar de forma estática solo puede ser una solución temporal. Por
ejemplo, para liberar betas a los usuarios impacientes y
colaboradores.

Un ejemplo, SciCraft una excelente aplicación de análisis de datos
desarrollada en Python. Las versiones estáticas de instalación
antiguas de este sistema para Debian y Ubuntu tenían un tamaño de 97
MB, y el paquete .deb de la versión más reciente para Ubuntu Dapper
tiene por tamaño 122 KB!! Y lo más gracioso del asunto es que las
versiones estáticas son más propensas a problemas al ejecutarse,
porque en algún momento tiene que asumir que existen versiones
específicas de algunas librerías.

>
> En RedHat o en Mandrake el urpm ya hace esto, incluso los puede
> actuaalizar desde cdrom o desde internet automaticamente.
>
> El drakrpm de mandrake incluso ya es grafico, y todo estas utilidades
> estan muy faciles de hacer.

Ya Mandrake ni siquiera existe. Y esto solo resuelve el problema para
algunos usuarios con un esfuerzo que sería mejor empleado en mejorar
la aplicación. El mundo linux se mueve muy rápido, versiones y
versiones e incluso cambios estructurales en el diseño de los
sistemas, no es sano pensar en soluciones específicas (a menos que el
sistema esté siendo desarrollado para -esas- condiciones específicas).

Los paquetes se encargan de los requisitos. Si es un trabajo
individual recomiendo  empaquetar para la distribución donde se
trabaja y para los demás lo mejor es una buena documentación donde se
indiquen los prerrequisitos muy claramente y sin ambigüedades. Si la
aplicación triunfa tendrás a varias personas empaquetando tu
aplicación para distintos sistemas, y una buena documentación les
ahorrará una gran parte del trabajo.

Saludos

F. Palm


-- 
del Delirio al Limbo....




Más información sobre la lista de distribución Python-es