debian: APT - Saber si un paquete está instalado
debian: APT - Saber si un paquete está instalado
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.
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.
Re: debian: APT - Saber si un paquete está instalado
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
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
- doc
- Forista Ancestral
- Mensajes: 3538
- Registrado: Mié Ago 11, 2010 10:32 am
- Ubicación: Oviedo-es_ES
- Contactar:
Re: debian: APT - Saber si un paquete está instalado
¿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.
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.
Re: debian: APT - Saber si un paquete está instalado
dpkg --get-selections | grep paquete
Re: debian: APT - Saber si un paquete está instalado
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...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.
saludos y gracias a todos por las respuestas.
Re: debian: APT - Saber si un paquete está instalado
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.EnriqueK escribió:dpkg --get-selections | grep paquete
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.
Re: debian: APT - Saber si un paquete está instalado
...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...
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.
Re: debian: APT - Saber si un paquete está instalado
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.
Re: debian: APT - Saber si un paquete está instalado
...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...
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.
Re: debian: APT - Saber si un paquete está instalado
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.
'
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.
'
Re: debian: APT - Saber si un paquete está instalado
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...
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...
Re: debian: APT - Saber si un paquete está instalado
¿Nadie conoce la opción -s de dpkg?
Yo haría lo siguiente:
Código: Seleccionar todo
dpkg -s paquete
Código: Seleccionar todo
dpkg -s paquete > /dev/null 1> /dev/null
[ $? -eq 1 ] && apt install paquete
Re: debian: APT - Saber si un paquete está instalado
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.
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.
Re: debian: APT - Saber si un paquete está instalado
Cuando crea el tópico pide cómo saber el estado de un paquete:
Por eso le di esa idea.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.
-
- Temas similares
- Respuestas
- Vistas
- Último mensaje