En este artículo voy a explicar cómo buscar paquetes, y obtener información de los mismos, desde el gestor de paquetes APT en Debian y derivados (Ubuntu, Mint, Elementary, etc.).
El gestor de paquetes APT cuetna con la herramienta apt-cache
, la cual realiza diferentes operaciones sobre la caché de paquetes. No realiza cambios en el sistema sino que provee operaciones de búsqueda de paquetes e información.
Supongamos que deseamos buscar paquetes que provean el módulo MySQL de PHP. Para ello deberíamos utilizar el comando "search". Este comando busca en todos los paquetes disponibles la ocurrencia de una expresión regular POSIX (man regex
) especificada como parámetro. La búsqueda se produce tanto en el nombre como en la descripción de cada paquete.
apt-cache search mysql
Como la salida de este comando es muy extensa (hay muchos paquetes relacionados con MySQL), es posible filtrar las líneas que contengan "php" utilizando grep
:
root@debian7# apt-cache search mysql | grep php htcheck-php - Simple php interface to database generated by ht://Check libphp-adodb - ADOdb database abstraction layer for PHP php5-adodb - Extension optimising the ADOdb database abstraction library php-db - PHP PEAR Database Abstraction Layer php-mdb2-driver-mysql - PHP PEAR module to provide a MySQL driver for MDB2 php5-mysql - MySQL module for php5 php5-mysqlnd - MySQL module for php5 (Native Driver) php5-sqlite - SQLite module for php5 phpmyadmin - MySQL web administration tool
De el listado es posible determinar que existen dos paquetes que proveen el módulo MySQL para PHP: "php5-mysql" y "php5-mysqlnd".
root@debian7# apt-cache search php5-mysql php5-mysql - MySQL module for php5 php5-mysqlnd - MySQL module for php5 (Native Driver)
Para obtener información acerca de un paquete específico se puede utilizar el comando "show". Por ejemplo:
root@debian7# apt-cache show php5-mysqlnd Package: php5-mysqlnd Source: php5 Version: 5.4.35-0+deb7u2 Installed-Size: 495 Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org> Architecture: amd64 Replaces: php5-mysql, php5-mysqli Depends: libc6 (>= 2.4), phpapi-20100525, php5-common (= 5.4.35-0+deb7u2), ucf Conflicts: php5-mysql, php5-mysqli Description-en: MySQL module for php5 (Native Driver) This package provides modules for MySQL database connections directly from PHP scripts. It includes the generic "mysql" module which can be used to connect to all versions of MySQL, an improved "mysqli" module for MySQL version 4.1 or later, and the pdo_mysql module for use with the PHP Data Object extension. . This package use the MySQL Native Driver. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Homepage: http://www.php.net/ Description-md5: 1806d3e8fad46f0044b35b3d49649a65 Pre-Depends: dpkg (>= 1.15.7.2~) Section: php Priority: optional Filename: pool/updates/main/p/php5/php5-mysqlnd_5.4.35-0+deb7u2_amd64.deb Size: 164296 MD5sum: 548d0ea10421a88f5541e42a721a5180 SHA1: 0fd7fd4ef7eacd753e30e4eeb23712b08d0d9dea SHA256: b28b5726555312a7f273271b7bff2823840d2d9d87549358e7edb0bbd880c3d5 Package: php5-mysqlnd Source: php5 Version: 5.4.4-14+deb7u14 Installed-Size: 483 Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org> Architecture: amd64 Replaces: php5-mysql, php5-mysqli Depends: libc6 (>= 2.4), phpapi-20100525, php5-common (= 5.4.4-14+deb7u14), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Conflicts: php5-mysql, php5-mysqli Description-en: MySQL module for php5 (Native Driver) This package provides modules for MySQL database connections directly from PHP scripts. It includes the generic "mysql" module which can be used to connect to all versions of MySQL, an improved "mysqli" module for MySQL version 4.1 or later, and the pdo_mysql module for use with the PHP Data Object extension. . This package use the MySQL Native Driver. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Homepage: http://www.php.net/ Description-md5: 1806d3e8fad46f0044b35b3d49649a65 Tag: secteam::squeeze-limited-support, secteam::wheezy-limited-support Section: php Priority: extra Filename: pool/main/p/php5/php5-mysqlnd_5.4.4-14+deb7u14_amd64.deb Size: 162722 MD5sum: bcabb28b7cfa732f0d43df5ff245f03c SHA1: 794dd99c3673adec1e81146420ab22b78113e00e SHA256: 689c6658ccfb41b4b6a73aaeda588223f713e32c47b61b592b44bfd193460e73
El comando apt-cache show
muestra la misma información que dpkg --print-avail
(si el paquete se encuentra instalado). Por ejemplo para el apquete "php5-mysql":
root@debian7# dpkg --print-avail php5-mysql Package: php5-mysql Priority: optional Section: php Installed-Size: 270 Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org> Architecture: amd64 Source: php5 Version: 5.4.35-0+deb7u2 Replaces: php5-mysqli, php5-mysqlnd Depends: libc6 (>= 2.4), libmysqlclient18 (>= 5.5.24+dfsg-1), zlib1g (>= 1:1.1.4), phpapi-20100525, php5-common (= 5.4.35-0+deb7u2), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Conflicts: php5-mysqli, php5-mysqlnd Size: 80850 Description: MySQL module for php5 This package provides modules for MySQL database connections directly from PHP scripts. It includes the generic "mysql" module which can be used to connect to all versions of MySQL, an improved "mysqli" module for MySQL version 4.1 or later, and the pdo_mysql module for use with the PHP Data Object extension. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Homepage: http://www.php.net/
Además de permitir obtener información de paquetes no instalados, apt-cache show
replica la salida si el paquete existe en diferentes repositorios.
Entre la información que muestra la salida de apt-cache show
o dpkg --print-avail
es posible determinar el tamaño del paquete instalado, su versión, dependencias, conflictos y una descripción detallada.
Se observa que apt-cache show
reporta que el paquete "php5-mysqlnd" tiene conflicto con "php5-mysql":
Conflicts: php5-mysql, php5-mysqli
Esto significa que no se pueden tener ambos paquetes en el sistema, se debe escoger entre uno u otro.
Es posible utilizar el comando apt-cache showpkg
para determinar las dependencias hacia adelante y hacia atrás de un determinado paquete:
root@debian7# apt-cache showpkg php5-mysqlnd Package: php5-mysqlnd Versions: 5.4.35-0+deb7u2 (/var/lib/apt/lists/security.debian.org_dists_wheezy_updates_main_binary-amd64_Packages) Description Language: File: /var/lib/apt/lists/ftp.debian.org_debian_dists_wheezy_main_binary-amd64_Packages MD5: 1806d3e8fad46f0044b35b3d49649a65 Description Language: en File: /var/lib/apt/lists/ftp.debian.org_debian_dists_wheezy_main_i18n_Translation-en MD5: 1806d3e8fad46f0044b35b3d49649a65 5.4.4-14+deb7u14 (/var/lib/apt/lists/ftp.debian.org_debian_dists_wheezy_main_binary-amd64_Packages) Description Language: File: /var/lib/apt/lists/ftp.debian.org_debian_dists_wheezy_main_binary-amd64_Packages MD5: 1806d3e8fad46f0044b35b3d49649a65 Description Language: en File: /var/lib/apt/lists/ftp.debian.org_debian_dists_wheezy_main_i18n_Translation-en MD5: 1806d3e8fad46f0044b35b3d49649a65 Reverse Depends: php5-mysql,php5-mysqlnd php5-mysql,php5-mysqlnd phpmyadmin,php5-mysqlnd php5-mysql,php5-mysqlnd php5-mysql,php5-mysqlnd mediawiki,php5-mysqlnd Dependencies: 5.4.35-0+deb7u2 - libc6 (2 2.4) phpapi-20100525 (0 (null)) php5-common (5 5.4.35-0+deb7u2) ucf (0 (null)) dpkg (2 1.15.7.2~) php5-mysql (0 (null)) php5-mysqli (0 (null)) php5-mysql (0 (null)) php5-mysqli (0 (null)) 5.4.4-14+deb7u14 - libc6 (2 2.4) phpapi-20100525 (0 (null)) php5-common (5 5.4.4-14+deb7u14) ucf (0 (null)) dpkg (2 1.15.7.2~) php5-mysql (0 (null)) php5-mysqli (0 (null)) php5-mysql (0 (null)) php5-mysqli (0 (null)) Provides: 5.4.35-0+deb7u2 - 5.4.4-14+deb7u14 - Reverse Provides:
Las dependencias hacia adelante (forwrad) son los paquetes necesarios para que el paquete en cuestión funcione. En cambio las dependencias hacia atrás (reverse) son los paquetes que dependen del paquete en cuestión para su correcto funcionamiento.
Para el caso, también existen los comandos depends
y rdepends
:
root@debian7# apt-cache depends php5-mysqlnd php5-mysqlnd Depends: libc6 Depends: <phpapi-20100525> libapache2-mod-php5 libapache2-mod-php5filter libphp5-embed php5-cgi php5-cli php5-fpm Depends: php5-common Depends: ucf PreDepends: dpkg Conflicts: php5-mysql Conflicts: <php5-mysqli> Replaces: php5-mysql Replaces: <php5-mysqli>
root@debian7# apt-cache rdepends php5-mysqlnd php5-mysqlnd Reverse Depends: php5-mysql php5-mysql phpmyadmin php5-mysql php5-mysql mediawiki
Para más información: man apt-cache
.