debian: APT - Saber si un paquete está instalado

Comentarios sobre el buen funcionamiento del sistema y como personalizarlo a tus necesidades.

Moderadores: doc, mcun

Responder
barbas72n
Forista Nuevo
Forista Nuevo
Mensajes: 6
Registrado: Mar Ago 02, 2016 12:22 pm

debian: APT - Saber si un paquete está instalado

Mensaje por barbas72n » Mar Ago 02, 2016 4:41 pm

Saludos,

estoy haciendo un script bastante largo, y me surge el siguiente problema:

A la hora de automatizarlo todo con el script, me quedo en el punto que debo descubrir si un paquete está instalado o no,

con aptitude show es muy fácil, pues te devuelve si el paquete es "installed", pero el problema es que no se hacerlo con apt-get, ni con apt-cache show da la información suficiente,
todo esto viene porque en stretch no viene por defecto aptitude, ni siquiera he probado a ver si está el paquete, pues el asunto es hacerlo obligatoriamente con apt en lugar de con aptitude, muchas gracias por anticipado, saludos.

Editado -- Mar Ago 02, 2016 5:41 pm --

...bueno añadir que he seguido encabezonado con no poder usar aptitude, que al final he encontrado una solución que sirve tanto para aptitude como para apt.

...consiste en utilizar el comando:
# dpkg -l | grep nombredelpaqueteabuscar

si no devuelve nada, quiere decir que no está instalado el paquete. Con eso me sirve, pues el script estaba funcionando solo con aptitude en stretch, pero ahora voy a localizarlo dando igual si en el script utilizo aptitude o apt, nos obstante si alguien sabe una forma de hacerlo en apt, le estaría agradecido que la comentara, gracias, perdón por mis prisas, saludos.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1802
Registrado: Dom Oct 10, 2004 7:00 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por neurus » Mar Ago 02, 2016 7:35 pm

Claro, es que apt-get está hecho para instalar paquetes por red. Obtenerlos.

Para la gestión de los paquetes instalados y a instalar está dpkg.

De todos modos, el filtro que pusiste de ejemplo no sólo te responde con paquetes instalados, sino también con paquetes desinstalados (que por lo tanto no están en el sistema). Deberías especificar algo más la búsqueda.

Estoy en Windows, por lo que no puedo probarlo para recordar exactamente la respuesta. Pero creo que en los paquetes devueltos por dpkg -l tienes install y deinstall. Si sólo buscas paquetes instalados, deberías hacer algo como dpkg -l |grep -w "install"|grep paquete
Avatar de Usuario
doc
Forista Ancestral
Forista Ancestral
Mensajes: 3280
Registrado: Mié Ago 11, 2010 10:32 am
Ubicación: Oviedo-es_ES
Contactar:

Re: debian: APT - Saber si un paquete está instalado

Mensaje por doc » Mar Ago 02, 2016 11:52 pm

¿estás seguro de que 'aptitude' no viene instalado, por defecto, en Debian Stretch (o sea, la actual rama 'testing' de Debian)?
En cualquier caso, te sería de gran interés tener instalada esta herramienta, y tampoco es tan incómodo hacer un simple 'sudo apt-get install aptitude' para, de una vez para siempre, instalarla.
Avatar de Usuario
EnriqueK
Forista Medio
Forista Medio
Mensajes: 367
Registrado: Dom Sep 16, 2007 7:00 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por EnriqueK » Mié Ago 03, 2016 2:54 am

dpkg --get-selections | grep paquete
barbas72n
Forista Nuevo
Forista Nuevo
Mensajes: 6
Registrado: Mar Ago 02, 2016 12:22 pm

Re: debian: APT - Saber si un paquete está instalado

Mensaje por barbas72n » Mié Ago 03, 2016 11:45 am

doc escribió:¿estás seguro de que 'aptitude' no viene instalado, por defecto, en Debian Stretch (o sea, la actual rama 'testing' de Debian)?
En cualquier caso, te sería de gran interés tener instalada esta herramienta, y tampoco es tan incómodo hacer un simple 'sudo apt-get install aptitude' para, de una vez para siempre, instalarla.
Ya, el asunto es que el script debe adaptarse a stretch, pues la filosofía del script es adaptarse a todos los cambios que vaya habiendo en de debian, aún así, aptitude se podría utilizar como bien dices simplemente instalándolo, acabo de mirar en stretch y efectivamente no viene por defecto, aunque si que sigue estando el paquete en los repositorios...

saludos y gracias a todos por las respuestas.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1802
Registrado: Dom Oct 10, 2004 7:00 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por neurus » Mié Ago 03, 2016 12:44 pm

EnriqueK escribió:dpkg --get-selections | grep paquete
Cierto. Ese es el comando típico que usaría un debianita. Suele utilizarse, de todos modos, para "clonar" un sistema. La lista de paquetes puede levantarse luego con set-selections y actualizar.

Hay que señalar que también con esa opción persiste el problema de los paquetes desinstalados: dpgk --get-selections|grep -v deinstall|grep paquete permite saltarse los paquetes conocidos por el sistema, pero desinstalados.
barbas72n
Forista Nuevo
Forista Nuevo
Mensajes: 6
Registrado: Mar Ago 02, 2016 12:22 pm

Re: debian: APT - Saber si un paquete está instalado

Mensaje por barbas72n » Mié Ago 03, 2016 7:28 pm

...saludos, por mi parte finalicen este post cuando gusten, al final ha quedado así en el script bash:

DPKGpacnnstlld=`dpkg --get-selections | awk -F' ' '{ print $1, $2 }' | grep -x "$DPKGopcion install"`
# DPKGopcion es la variable de un bucle que va recorriendo los diferentes paquetes a instalar
# con el | awk quitamos la distancia en espacios que devuelve dpkg y filtramos con exactitud añadiendo al | grep -x
# el resultado de esta variable DPKGpacnnstlld será algo así como: nombredelpaquete install, que es fácil de ir filtrando, si esta variable no devuelve nada es que el paquete no está instalado, saludos, muchísimas gracias, intentaré contribuir a este sitio en lo que humildemente pueda, gracias de nuevo saludos.

p.d.: por fin alguien me ha respondido cuando he hablado en lenguaje linux, gracias!!!! (cuesta encontrar foros activos de debian y linux en general)

p.d.2: Acabo de ver, que el motivo de filtrar así con awk y grep, es porque con dpkg --get-selections, también me han aparecido algunos paquetes "deinstall", el filtro ha sido para asegurarme que estuviera "install"; si me devuelve la variable "" es que no está instalado y sigue con el proceso de instalación. ...osea lo que ha dicho Neurus, pero me he dado cuenta después, salud...
Última edición por barbas72n el Mié Ago 03, 2016 8:24 pm, editado 1 vez en total.
Avatar de Usuario
EnriqueK
Forista Medio
Forista Medio
Mensajes: 367
Registrado: Dom Sep 16, 2007 7:00 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por EnriqueK » Mié Ago 03, 2016 8:24 pm

dpkg --get-selections | grep -v deinstall | awk '{print $1}'| grep paquete
Última edición por EnriqueK el Mié Ago 03, 2016 8:31 pm, editado 2 veces en total.
barbas72n
Forista Nuevo
Forista Nuevo
Mensajes: 6
Registrado: Mar Ago 02, 2016 12:22 pm

Re: debian: APT - Saber si un paquete está instalado

Mensaje por barbas72n » Mié Ago 03, 2016 8:39 pm

...o lo que dice EnriqueK, que alguien me explique el algoritmo para poder dejar de ir con prisas (lo digo por mi)

aunque, el que yo propongo (esto ya suena a peli del oeste o de superheroes marvel) solo coge los install, el de EnrikeK discrimina los "deinstall"

mi debate es:
¿mejor elegir los install?
¿mejor discriminar los deinstall?

depende..., saludos

...uf que primer día, si lo llego a saber me voy de vacaciones :?

p.d.: es interesante todo esto, y este mensaje es prepotente por mi parte, mis disculpas a todos, principalmente a EnriqueK y a Neurus, es que llegas nuevo a un sitio y siempre sale ese lado, saludos...
Última edición por barbas72n el Mié Ago 03, 2016 10:03 pm, editado 2 veces en total.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1802
Registrado: Dom Oct 10, 2004 7:00 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por neurus » Mié Ago 03, 2016 8:44 pm

No sé cuál es la parte que te genera confusión, pero lo de EnriqueK es fácil:

dpkg --get-selections es una de las opciones de dpkg. Los '|' son tuberías, imagino que ya tienes incorporado el concepto.

grep -v deinstall. El parámetro -v invierte el filtro. Es decir, ese comando deja pasar todo lo que no diga "deinstall". La idea de hacerlo así es porque este es un caso peculiar: "install" forma parte de la palabra "deinstall". Por lo tanto, si no especificas que sólo quieres la palabra "install", el filtro dejará pasar también los paquetes "deinstall". Hay dos maneras: -w install o -v deinstall.

awk '{print $1}' . Imprime el primer campo. Ya no hay riesgo de que sea un paquete desinstalado, porque gracias al filtro anterior, a esta instancia llegó sólo aquello que tenía "install". En el primer campo, como puedes ver, está el nombre del paquete.

grep paquete. Bueno, no hay mucho que agregar. Filtra el nombre que elijas, después de haber aplicado los filtros anteriores.
'
barbas72n
Forista Nuevo
Forista Nuevo
Mensajes: 6
Registrado: Mar Ago 02, 2016 12:22 pm

Re: debian: APT - Saber si un paquete está instalado

Mensaje por barbas72n » Mié Ago 03, 2016 9:31 pm

vale ok.
primero decir, que he leído algunos otros mensajes en el foro, y no soy kenton ese, ni de coña, ahora es posible que ambos compartamos el visitar la choza de panoramix de vez en cuando para probar sus nuevas infusiones, pues lo poquito que he visto de su estilo parece en esa onda, yo no soy así, bromas aparte

ok, le has dado en el: -w install,
...ha ese he ido io

vale pero, repito mi linea, no para ser cansino ni agobiante, es que así aligero lo que tengo que decir después
DPKGpacnnstlld=`dpkg --get-selections | awk -F' ' '{ print $1, $2 }' | grep -x "$DPKGopcion install"`

okok, lo primero, deberíamos o deberían abrir un apartado en este foro para las expresiones regulares, lo digo en serio, es que siempre depende,
y bueno, sigo por aquí, a ver hasta donde se llega,

el -w install es correcto, mas rápido y mas directo,
a ver,
pero si el -w install va a coger los deinstall, pues vuelvo a mi solución, de momento, pues solo coge los install, y si luego salen los purged u otra cosa? salud!

dpkg --get-selections | grep paquete
esta es la solución, la dijo EnrikeK, a partir de ahí todo han sido por mi parte expresiones regulares, se que vuestras opciones también son correctas...
Avatar de Usuario
PabliNet
Forista Menor
Forista Menor
Mensajes: 97
Registrado: Vie Ene 01, 2016 7:31 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por PabliNet » Mié Ago 03, 2016 10:27 pm

¿Nadie conoce la opción -s de dpkg?

Código: Seleccionar todo

dpkg -s paquete
Yo haría lo siguiente:

Código: Seleccionar todo

dpkg -s paquete > /dev/null 1> /dev/null
[ $? -eq 1 ] && apt install paquete
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1802
Registrado: Dom Oct 10, 2004 7:00 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por neurus » Jue Ago 04, 2016 4:26 am

Es que todos continuamos con la idea original del usuario, con leves correcciones. La verdad es que no me detuve a pensar en qué quiere hacer, sobre todo porque si la idea es instalar una lista de paquetes, ni siquiera vale la pena detenerse a comprobar que estén instalados.

Supongo que la intención del usuario es otra.

Aún así, la opción -s de dpkg muestra el estado específico de un paquete, así que sería una opción más lógica.
Avatar de Usuario
PabliNet
Forista Menor
Forista Menor
Mensajes: 97
Registrado: Vie Ene 01, 2016 7:31 am

Re: debian: APT - Saber si un paquete está instalado

Mensaje por PabliNet » Jue Ago 04, 2016 8:43 am

Cuando crea el tópico pide cómo saber el estado de un paquete:
barbas72n escribió:con aptitude show es muy fácil, pues te devuelve si el paquete es "installed", pero el problema es que no se hacerlo con apt-get, ni con apt-cache show da la información suficiente,
todo esto viene porque en stretch no viene por defecto aptitude, ni siquiera he probado a ver si está el paquete, pues el asunto es hacerlo obligatoriamente con apt en lugar de con aptitude, muchas gracias por anticipado, saludos.
Por eso le di esa idea.
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje