Búsquedas y versiones.

De manera predeterminada, un patrón se corresponde con un paquete si cualquier versión del paquete coincide 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 coincide con patrón. De todas formas, patrón solo coincide 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 coincidirí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 coincide 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 coincidiría si cualquier versión del paquete coincide. En contraste, cuando un patrón se compara con cada versión de un paquete, coincidiría con éxito al emparejarse cuando todos sus términos coinciden 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) coincide con la versión 4.0-1 de aardvark, mientras que ?installed coincide 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.