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.


Tal vez pueda interesarte


Compartí este artículo