Búsquedas y versiones.

De manera predeterminada, un patrón se corresponde con un paquete si cualquier versión del paquete encaja con el patrón. De todas formas, algunos patrones restringen sus sub-patrones para emparejarse solo con algunas versiones de un paquete. Por ejemplo, el término de búsqueda ?depends(patrón) selecciona cualquier paquete que dependa de un paquete que encaja con patrón. De todas formas, patrón solo encaja con las versiones de un paquete que satisfacen la dependencia. Esto significa que si foo depende de bar (>= 3.0), estando disponibles 2.0, 3.0, y 4.0, en el patrón de búsqueda ?depends(?version(2\.0)) sólo las versiones 3.0 y 4.0 se compararían con ?version(2\.0), conduciendo a que no se encontraría foo en esta búsqueda.

Importa qué versiones se revisan porque, al igual que en el ejemplo anterior, algunos patrones encajarían con una versión pero no con la otra. Por ejemplo, el patrón ?installed solo muestra la versión del paquete que está instalado. De manera similar, el patrón ?maintainer(desarrollador) solo encontraría versiones que contengan el desarrollador dado. Normalmente, todas las versiones de un paquete tienen el mismo desarrollador, pero éste no es siempre el caso; de hecho, cualquier patrón de búsqueda que examina los campos de un paquete (aparte de su nombre, por supuesto) actúa de esta manera, pues todos los campos de un paquete pueden variar de una versión a otra.

Para revisar un patrón con todas las versiones de un paquete, aunque el patrón generalmente se compara sólo con algunas versiones, use el término ?widen. Por ejemplo, ?depends(?widen(?version(2\.0))) muestra cualquier paquete A que depende de un paquete B, donde B encaja con la versión 2.0, independientemente de si la versión satisface la dependencia de A. Por otro lado, el término ?narrow restringe las versiones con las cuales se compara el sub-patrón: ?narrow(?installed, ?depends(?version(ubuntu))) encontraría cualquier paquete cuya versión instalada tiene una dependencia que se puede satisfacer con un paquete cuya cadena de versión contenga ubuntu.

[Nota]Nota

Hay una sutil pero importante distinción entre emparejar un patrón con un paquete, y emparejarlo con todas las versiones de ese paquete. Cuando un patrón se compara con un paquete cada uno de sus términos se compara con el paquete, y por lo tanto cada término encajaría si cualquier versión del paquete encaja. En contraste, cuando un patrón se compara con cada versión de un paquete, encajaría con éxito al emparejarse cuando todos sus términos encajan con la misma versión del paquete.

Por ejemplo: suponga que la versión 3.0-1 del paquete aardvark está instalado, pero está disponible la versión 4.0-1. La expresión de búsqueda ?version(4\.0-1)?installed muestra aardvark, porque ?version(4\.0-1) encaja con la versión 4.0-1 de aardvark, mientras que ?installed encaja con la versión 3.0-1. Por otra parte, esta expresión no se emparejaría con todas las versiones de aardvark, porque no hay ninguna versión instalada y porque también tiene el numero de versión 4.0-1.