Comprobar Instalación De Paquete


Ir a la página 1, 2  Siguiente

Objetivo: Comprobar Instalación De Paquete
¿Existe algún comando para comprobar si un paquete está o no instalado?

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Si estás en Ubuntu o Debian usa esto:

aptitude show nombre_paquete | grep Estado

Saludos

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Muy buen día

yo le estoy siguiendo los pasos a Octavio al parecer, ya me lo he encontrado dos veces el día de hoy en estos temas mi duda es la misma el programa debe de comprobar si esta instalada una aplicación y definir en una variable texto si esta instalado o no.

el código algo así

PUBLIC ocrad AS String
PUBLIC tesseract AS String
PUBLIC gocr AS String

'Se comprueba la instalación de los tres motores
SHELL "aptitude show tesseract | grep Estado" TO tesseract
SHELL "aptitude show ocrad | grep Estado" TO ocrad
SHELL "aptitude show gocr | grep Estado" TO gocr


creo que hay problema pues a pesar de instalar las aplicaciones siempre me pide volver a instalar pues la verificación depende de estas instrucciones

probé en en una terminal aptitude show tesseract | grep Estado

malon@malon-desktop:~$ aptitude show tesseract | grep Estado
El programa «aptitude» puede encontrarse en los siguientes paquetes:
* aptitude
* aptitude-gtk
Pruebe: sudo apt-get install <paquete seleccionado>
malon@malon-desktop:~$ sudo aptitude show tesseract | grep Estado
[sudo] password for malon:
sudo: aptitude: command not found
malon@malon-desktop:~$
por eso creo que esta instrucción no manda la información requerida por el programa

mi sistema es ubuntu 11.04 gambas 2.21

Marlon Perez
Mi nueva pasión UBuntu+gambas

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Hola

Parece ser que "aptitude" (el gestor de paquetes) no viene preinstalado en Ubuntu Natty, así que tu programa deberá además chequear eso.

Para que el código que usas funcione, deberás instalar aptitude: sudo apt-get install aptitude

Otra forma de comprobar si un programa está instalado es mirar si existe su ejecutable, por ejemplo suponiendo que el ejecutable se llame tesseract:

which tesseract

...que devolverá la ruta donde se encuentra, y en caso contrario no devolverá nada. Entonces bastaría con hacer una simple comprobación para saber si está instalado usando la instrucción SHELL:

SHELL "which mi_programa" TO test

IF test THEN PRINT "Mi programa está instalado"


Saludos

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
En ubuntu yo utilizo esta función:
PUBLIC FUNCTION instalado(paquete AS String) AS Boolean
'Indica si un paquete de software está instalado en el sistema o no (Debian y derivados)

DIM contenido AS String
DIM n AS Integer

SHELL "dpkg -l|grep " & paquete & " > /tmp/paq.txt" WAIT
TRY contenido = File.load("/tmp/paq.txt")
n = InStr(contenido, " " & paquete & " ")
IF n > 0 AND Left(contenido, 2) = "ii" THEN 'si el paquete se desinstaló pero no completamente el paquete aparece, pero la línea empieza por rc
RETURN TRUE
ELSE
RETURN FALSE
ENDIF

END


Espero te sea útil.

Suerte

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Buen día, muchas gracias por sus respuestas funcionan pero aun tengo algunos inconvenientes pero pero de eso se trata de crear un código exacto y libre de errores,,,, probé las instrucciones y tuve estos resultados espero me puedan dar alguna explicación

ejecute las instrucciones directamente en una terminal para ver que resultados arrojaba esto después de instalar aptitude como me lo recomendaron

malon@malon-desktop:~$ aptitude show gocr | grep Estado
Estado: instalado

malon@malon-desktop:~$ aptitude show ocrad | grep Estado
Estado: instalado

malon@malon-desktop:~$ aptitude show tesseract | grep Estado
E: No se pudo localizar el paquete tesseract

hasta aqui un pequeño problema que no es precisamente del gambas pero tal vez me puedan dar una luz los tres programas están instalados desde el gestor de paquetes synaptic pero el ultimo no me lo detecta esta instrucción
en gambas lo utilizo así

SHELL "aptitude show tesseract | grep Estado" TO tesseract

IF (tesseract = "Estado: instalado") THEN 'aqui nunca se cumple la condición pues SHELL "aptitude..... arroja otro valor a la variable tesseract
tipo[0].text = "TESSERACT"
operativo = TRUE
ENDIF

un segundo intento con otra instrucion

malon@malon-desktop:~$ which gocr
/usr/bin/gocr

malon@malon-desktop:~$ which ocrad
/usr/bin/ocrad

malon@malon-desktop:~$ which tesseract
/usr/bin/tesseract

aqui si arroja que los tres programas existen y muestra la ruta en gambas lo utilizo asi

SHELL "which tesseract" TO tesseract

IF (tesseract = "/usr/bin/tesseract") THEN 'aqui comparo la variable tesseract con la ruta que de antemano descubrí me arrojara el comando y no da resultado
tipo[0].text = "TESSERACT"
operativo = TRUE
ENDIF

porque no da resultado esta comparación? entonces envié la variable tesseract a un contenedor de texto para así conocer su valor y obtuve lo siguiente
/usr/bin/tesseract+ con el signo (+) quiero explicarles que me salio al final de la ruta una basurita o un tipo de texto desconocido que no lo puedo digitar y es como un cuadrado con cuatro figuras dentro muy pequeño equivale a un carácter y es el que no me permite hacer la comparación.. muchas gracias


Marlon Perez
Trabajando en lo que me gusta

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Otra prueba

el código me quedo así

DIM contenido AS String
DIM n AS Integer

SHELL "dpkg -l|grep tesseract > /tmp/paq.txt" WAIT
TRY contenido = File.load("/tmp/paq.txt")
n = InStr(contenido, "tesseract") ********************************
IF n > 0 AND Left(contenido, 2) = "ii" THEN '*******************si el paquete se desinstaló pero no completamente el paquete aparece, pero la línea empieza por rc
Vtesseract = "Instalado"
ENDIF

IF (Vtesseract = "Instalado") THEN
tipo[0].text = "TESSERACT"
operativo = TRUE
ENDIF

aquí el programa pas la verificación y muestra tesseract como instalado verifique el archivo temporal y contiene lo siguiente

ii tesseract-ocr 2.04-2.1 Command line OCR tool
ii tesseract-ocr-dev 2.04-2.1 Development files for the tesseract command line OCR tool
ii tesseract-ocr-eng 2.00-2 tesseract-ocr language files for English text
ii tesseract-ocr-spa 2.00-2 tesseract-ocr language files for Spanish text
ii tesseract-ocr-vie 2.01-2 tesseract-ocr language files for Vietnamese text

me podrían comentar el uso de las dos instrucciones marcadas ******************* pues me hago a la idea que con se verifica que el archivo no este vacio y segundo se busca que las primeras dos letras del contenido del archivo sean ii, estas dos me indican que esta instalado ? bien gracias de nuevo por sus respuestas

Marlon Perez gambas 2.21 Ubuntu 11.04
Programando antes que desayunar

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Hola de nuevo

Hay dos cosas que deberías saber:

  • El paquete que implementa teseract se llama realmente "tesseract-ocr", por eso aptitude no lo encuentra por el nombre tesseract

  • El comando de SHELL "which tesseract" o cualquie otro es posible que te devuelva una cadena más un caraćter de nueva línea (el simbolito que ves en el textbox), por eso la comparación siempre es FALSE,
    Como en este caso concreto la salida del comando "which" siempre da un resultado de tipo cadena en caso de encontrar el programa instalado y siempre da un resultado NULL en caso contrario, no es necesario realizar una comparación explícita con la cadena que esperamos, sino simplemente asegurarnos que nuestra variable donde almacenamos el resultado del comando es TRUE o FALSE.


Para que lo sepas, en gambas si una variable de tipo string contiene una cadena, vale TRUE en una comparación y si está vacía será igual a FALSE.

Por eso en el ejemplo que puse lo hice así:


SHELL "which tesseract" TO test

IF test THEN
' test es igual a true porque contiene la ruta de tesseract
ELSE
' test está vacía, por tanto es false.
ENDIF


Saludos

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Señor Jesús, Excelente apoyo, Me queda súper claro el tema, ya verificada la instalación del paquete ahora si a programar ... Gracias

Marlon Perez
Comunidad Gambas-es la mejor escuela que uno puede tener

Perfil MP  
Objetivo: Re: Comprobar Instalación De Paquete
Bueno este es un post viejito, pero me parece que merece la pena aportarle algo mas.
Desarrolle esta función para ver si un paquete esta instalado y en teoría funciona en "todas" las distros.
Si alguno tiene: Arch, Gentoo, OpenSuse, U otro y quiere verificar si funciona y mejorar este código, adelante.

Public Function PkgStat(strPkg As String) As String

Dim strDistro As String
Dim stxDistro As New String[]
Dim intN As Integer
Dim strCommand As String
Dim strPkgStatus As String


strDistro = Sysdata.Distro()
strDistro = Replace(strDistro, " ", " ")
strDistro = String.LCase(strDistro)

stxDistro.clear

stxDistro = Split(strDistro, " ")

For intN = 0 To stxDistro.Max

Select stxDistro[intN]
Case "arch", "fedora", "debian", "ubuntu", "opensuse", "gentoo"
strDistro = stxDistro[intN]
Case Else
strDistro = "Otra"
End Select

Next

Select strDistro
Case "arch"
strCommand = "pacman -Qs " & strPkg
Case "fedora"
strCommand = "rpm-qa | grep " & strPkg
Case "debian"
strCommand = "dpkg-query -W -f='${Status}\n' " & strPkg
Case "ubuntu"
strCommand = "dpkg-query -W -f='${Status}\n' " & strPkg
Case "opensuse"
strCommand = "zypper se -i " & strPkg
Case "gentoo"
strCommand = "emerge -pv " & strPkg
End Select

Shell strCommand & " 2>&1" To strPkgStatus

Select strPkgStatus
Case "install ok installed\n"
strPkgStatus = "yes"
Case Else
strPkgStatus = "no"
End Select

Return strPkgStatus

End

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4574s (PHP: -75% SQL: 175%)
Consultas SQL: 44 - Debug off - GZIP Activado