{"id":153,"date":"2021-11-13T20:07:59","date_gmt":"2021-11-13T20:07:59","guid":{"rendered":"https:\/\/www.akasistemas.com\/blog\/?p=153"},"modified":"2021-11-13T20:07:59","modified_gmt":"2021-11-13T20:07:59","slug":"verificar-si-un-paquete-o-programa-esta-instalado-en-gnu-linux","status":"publish","type":"post","link":"https:\/\/www.akasistemas.com\/blog\/index.php\/2021\/11\/13\/verificar-si-un-paquete-o-programa-esta-instalado-en-gnu-linux\/","title":{"rendered":"Verificar si un paquete o programa esta instalado en GNU\/Linux"},"content":{"rendered":"\n<p>Despu\u00e9s de una pausa larga en nuestro blog, retomamos las entradas con conceptos b\u00e1sicos que nos pueden ayudar en el d\u00eda a d\u00eda, esta vez como asegurarnos que un paquete o programa esta instalado en nuestro sistema.<\/p>\n\n\n\n<p>Lo primero que debemos tener en cuenta es tener claro que un paquete y un programa no son lo mismo.<\/p>\n\n\n\n<p>Un paquete, es un conjunto de binarios, archivos de configuraci\u00f3n y scripts, los cuales alimentan la base de datos del gestor de paquetes del sistema y estos mismos se copian al sistema de archivos.<\/p>\n\n\n\n<p>Un programa, es un binario (o un script) que ejecuta instrucciones dentro del sistema, es posible encontrarlo dentro del sistema como un archivo con <em>permisos de ejecuci\u00f3n<\/em> (los veremos al detalle en una entrada posterior).<\/p>\n\n\n\n<p>Una vez teniendo claras las diferencias entre los dos veamos el primer caso:<\/p>\n\n\n\n<p><strong>1. Verificar si un paquete esta instalado dentro del sistema:<\/strong><\/p>\n\n\n\n<p>Es importante delimitar en este caso que solo nos vamos a referir a <em>rpm<\/em> y <em>deb<\/em>, no vamos a tener en cuenta otros gestores.<\/p>\n\n\n\n<p><strong>1.1 Basados en Red Hat<\/strong><\/p>\n\n\n\n<p>En Red Hat se cuenta con el sistema &#8220;<em>rpm<\/em>&#8221; (RPM Package Manager, anteriormente Red Hat Package Manager) , el cual controla la base de datos de los paquetes dentro del sistema, su ejecuci\u00f3n se logra con el comando &#8220;<em>rpm<\/em>&#8220;.<\/p>\n\n\n\n<p>Para verificar si un paquete existe podemos realizar una combinaci\u00f3n de dos comandos rpm y el indispensable grep:<\/p>\n\n\n\n<p><em>rpm -qa | grep kernel<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"481\" height=\"239\" src=\"https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-2.png\" alt=\"\" class=\"wp-image-157\" srcset=\"https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-2.png 481w, https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-2-300x149.png 300w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/figure>\n\n\n\n<p>Como lo podemos ver en la imagen nos muestra el paquete instalado con su versi\u00f3n instalada, en caso de no estar instalado el paquete en el sistema no nos mostrar\u00eda nada.<\/p>\n\n\n\n<p>los dos opciones que usamos con rpm son:<\/p>\n\n\n\n<p><em>-q<\/em> para hacer una consulta, combinado con<\/p>\n\n\n\n<p><em>-a<\/em> todos los paquetes instalados<\/p>\n\n\n\n<p>Posteriormente pasamos ese resultado por una tuber\u00eda a grep en donde especificaremos cual es el paquete que buscamos, en este caso &#8220;<em>kernel<\/em>&#8220;, obteniendo as\u00ed el resultado de la consulta.<\/p>\n\n\n\n<p><strong>1.2 Basados en Debian<\/strong><\/p>\n\n\n\n<p>En debian contamos con el gestor &#8220;<em>dpkg<\/em>&#8221; (acronimo de Debian Package) el cual nos administra la base de datos de paquetes.<\/p>\n\n\n\n<p>Para verificar la existencia de un paquete tendremos que ejecutar lo siguiente:<\/p>\n\n\n\n<p><em>dpkg -l | grep kernel<\/em><\/p>\n\n\n\n<p>Lo cual nos arroja la siguiente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"101\" src=\"https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-1024x101.png\" alt=\"\" class=\"wp-image-155\" srcset=\"https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-1024x101.png 1024w, https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-300x30.png 300w, https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-768x76.png 768w, https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen.png 1041w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>las dos primeros caracteres &#8220;<em>ii<\/em>&#8221; nos quiere decir el estado deseado y el estado real del paquete, sin profundizar en este momento, si el paquete esta instalado correctamente deber\u00eda de estar &#8220;<em>ii<\/em>&#8220;.<\/p>\n\n\n\n<p>En la siguiente columna tenemos el nombre del paquete<\/p>\n\n\n\n<p>El siguiente ser\u00eda la versi\u00f3n instalada.<\/p>\n\n\n\n<p>La arquitectura para la cual esta generado el paquete.<\/p>\n\n\n\n<p>Y por ultimo una breve descripci\u00f3n del paquete.<\/p>\n\n\n\n<p>Antes de finalizar esta secci\u00f3n y si alg\u00fan lector a llegado hasta este puntoy este perdiendo la cabeza porque no mencionamos a yum, dnf , apt o aptitude, esos son frontends para los gestores base, los cuales analizaremos por separado ya que merecen una entrada cada uno de ellos.<\/p>\n\n\n\n<p><strong>2. Verificar si un programa esta instalado dentro del sistema:<\/strong><\/p>\n\n\n\n<p>Cuando hablamos de un programa automaticamente tendremos que pensar en buscar un fichero y para ello vamos a hacer una peque\u00f1a introducci\u00f3n a find.<\/p>\n\n\n\n<p><em>find<\/em> es una herramenta altamente eficiente a la hora de hacer busquedas de todo tipo dento del sistema instalado.<\/p>\n\n\n\n<p>Al usar find debemos tener en cuenta que buscaremos los nombres u otras caracteristicas del fichero y que se har\u00e1 un recorrido por el sistema de archivos para verificar su existencia.<\/p>\n\n\n\n<p>Un ejemplo rapido si queremos buscar la existencia del programa llamado &#8220;man&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"481\" height=\"60\" src=\"https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-1.png\" alt=\"\" class=\"wp-image-156\" srcset=\"https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-1.png 481w, https:\/\/www.akasistemas.com\/blog\/wp-content\/uploads\/2021\/11\/imagen-1-300x37.png 300w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/figure>\n\n\n\n<p>El parametro &#8220;\/&#8221; quiere decir en que ruta buscaremos el archivo, en este caso estamos buscandolo en todo el sistema.<\/p>\n\n\n\n<p>La opci\u00f3n &#8220;name&#8221; nos indica que estaremos buscando la palabra &#8220;man&#8221;<\/p>\n\n\n\n<p>La opci\u00f3n &#8220;executable&#8221; nos buscara todos los ficheros que tengan permirsos de ejecuci\u00f3n, en este caso nos dectanamos por esta opci\u00f3n y no por &#8220;perm&#8221; que tambien hubiese funcionado.<\/p>\n\n\n\n<p>La opci\u00f3n &#8220;type&#8221; la cual nos indica que el nombre buscado debe ser de tipo archivo ya que dentro del sistema tambien pueden existir directorios o otro tipo de ficheros.<\/p>\n\n\n\n<p>Otra opci\u00f3n ser\u00eda utilizar el comando locate el cual no esta instalado en todas las distribuciones, pero basta con realizar un &#8220;locate man&#8221; para obtener el resultado de la busqueda.<\/p>\n\n\n\n<p>Esto ser\u00eda todo en esta entrada, no olvidar consultar las paginas man en donde podr\u00e1n encontrar toda esta informaci\u00f3n y mucho mas detalle.<\/p>\n\n\n\n<p>Si hay preguntas o comentarios pueden hacerlas en nuestras redes sociales: <a href=\"https:\/\/www.facebook.com\/AKA-sistemas-653566861739607\/\">facebook<\/a> o <a href=\"https:\/\/www.linkedin.com\/company\/aka-sistemas\">linkedin<\/a>, hasta la pr\u00f3xima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Despu\u00e9s de una pausa larga en nuestro blog, retomamos las entradas con conceptos b\u00e1sicos que nos pueden ayudar en el d\u00eda a d\u00eda, esta vez como asegurarnos que un paquete o programa esta instalado en nuestro sistema. Lo primero que debemos tener en cuenta es tener claro que un paquete y un programa no son &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.akasistemas.com\/blog\/index.php\/2021\/11\/13\/verificar-si-un-paquete-o-programa-esta-instalado-en-gnu-linux\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;Verificar si un paquete o programa esta instalado en GNU\/Linux&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-comandos-basicos-gnu-linux"],"_links":{"self":[{"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=153"}],"version-history":[{"count":2,"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/153\/revisions"}],"predecessor-version":[{"id":158,"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/153\/revisions\/158"}],"wp:attachment":[{"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.akasistemas.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}