Dónde andará… Investigando a qué paquete pertenece un comando en varias distros

por | junio 22, 2015

Seguramente te has preguntado más de una vez a qué paquete pertenece un determinado comando en Linux, especialmente cuando no lo tienes instalado y necesitas saber qué paquete te proporcionaría un determinado comando. Para resolver estas dudas tienes a tu disposición varias utilidades en función de la distro que estés utilizando.

En este artículo, voy a suponer que estoy buscando mysql. Algunas herramientas nos permiten saber de qué paquete es originario un comando que ya está instalado. En otras ocasiones, algunas herramientas nos permiten obtener información del paquete de origen incluso si no está instalado en nuestro sistema.

Para RHEL y derivadas como Fedora o CentOS:

# Si el paquete ya está instalado usamos rpm

rpm -qf $(which mysql)

# También qué paquete creó un determinado fichero

rpm -qf /etc/init.d
rpm -qf /etc/my.cnf

# Si el paquete aún no está instalado, para ver en qué paquete se encuentra

yum provides mysql
yum whatprovides mysql

Debian y derivadas (Ubuntu, Mint, ElementaryOS…):

# Si el paquete está instalado hacemos uso de dpkg o apt-file

dpkg -S $(which mysql)
apt-file search mysql

# Si no está instalado, más facil aún ya que apt-get genera un aviso
# de instalación con el nombre del paquete o paquetes en los que se encuentra

mysql

----------------------------------------------------------------------------------------------

The program 'mysql' can be found in the following packages:
 * mysql-client-core-5.5
 * mariadb-client-core-5.5
 * mysql-client-core-5.6
 * percona-xtradb-cluster-client-5.5
Try: apt-get install <selected package>

En OpenSUSE:

# Si ya está instalado utilizamos zypper

zypper se --provides --match-exact mysql

---------------------------------------------------------------------------------------------------------------

Loading repository data...
Reading installed packages...

S | Name                   | Summary                               | Type
--+------------------------+---------------------------------------+--------
  | mariadb                | Server part of MariaDB                | package
  | mysql-community-server | Server part of MySQL Community Server | package


# Si no está instalado podemos utilizar cnf (Command Not Found)

cnf mysql

---------------------------------------------------------------------------------------------------------------

The program 'mysql' can be found in following packages:
  * mariadb-client [ path: /usr/bin/mysql, repository: zypp (openSUSE-13.2-0) ]
  * mariadb-client [ path: /usr/bin/mysql, repository: zypp (download.opensuse.org-oss_1) ]
  * mysql-community-server-client [ path: /usr/bin/mysql, repository: zypp (download.opensuse.org-oss_1) ]
  * mariadb-client [ path: /usr/bin/mysql, repository: zypp (download.opensuse.org-update_1) ]

Try installing with:
    sudo zypper install <selected_package>

Para Arch Linux y de la familia como Manjaro o Antergos:

# En cualquier caso, recomendable visitar Pacman Rosetta
# https://wiki.archlinux.org/index.php/Pacman_Rosetta
# Y la documentación oficial de pkgfile, echad un vistazo a los hooks para automatizar
# la búsqueda de paquetes de comandos no encontrados 
# https://wiki.archlinux.org/index.php/Pkgfile

pkgfile mysql

---------------------------------------------------------------------------------------------------------------

extra/bash-completion
extra/mariadb-clients
community/logwatch
community/percona-server-clients


Con esto creo que se cubre un gran espectro de las distros Linux disponibles… ¡Suerte con vuestras búsquedas! 🙂