`apt-get` y comodines: globos frente a expresiones regulares

`apt-get` y comodines: globos frente a expresiones regulares

Editar: Tenga en cuenta que, como se escribe a continuación, conozco respuestas en este sitio que explican que apt-getse utilizan expresiones regulares para interpretar los nombres de los paquetes. De hecho, la pregunta es directamente sobre en qué se diferencia su comportamiento real del documentado. Lea la pregunta antes de sugerir un duplicado.


Algunas respuestas en este sitio advierten sobre el uso apt-getde comodines (es decir, asteriscos *:), porque apt-getsupuestamente los expande como expresiones regulares, lo que puede dar resultados inesperados (y no deseados), especialmente con apt-get remove. En efecto,página de ubuntu manparaapt-getlee:

Si ningún paquete coincide con la expresión dada y la expresión contiene uno de '.', '?' o '*' entonces se supone que es una expresión regular POSIX y se aplica a todos los nombres de paquetes en la base de datos. Luego se instalan (o eliminan) todas las coincidencias. Tenga en cuenta que la coincidencia se realiza mediante subcadena, por lo que 'lo.*' coincide con 'how-lo' y 'lowest'. Si no lo desea, ancle la expresión regular con un carácter '^' o '$', o cree una expresión regular más específica.

De hecho,esta respuestareclamos:

apt-get acepta una expresión regular y no un patrón global como shell.

Creo que esto está mal (al menos en Xenial). Por ejemplo, puedo reproducir el siguiente comportamiento:

$ sudo apt-get install -s 'meld*'
[...]
Note, selecting 'meld' for glob 'meld*'
[...]

$ sudo apt-get install -s 'meldt*'
[...]
Note, selecting 'python-meld3' for regex 'meldt*'
Note, selecting 'python3-meld3' for regex 'meldt*'
Note, selecting 'meld' for regex 'meldt*'
[...]

(No eliminé ninguna coincidencia, solo partes irrelevantes de apt-getla respuesta de).

Me parece que, en base a este comportamiento, apt-getprimero se intenta hacer coincidir expresiones dadas como globos, y solo si falla, se vuelve a intentar como expresiones regulares.

¿Tengo ese derecho? ¿He entendido mal la manpágina o este comportamiento está mal documentado?

Respuesta1

Esto se explica en elapt(8)página de manual:

install, remove, purge (apt-get(8))
   Performs the requested action on one or more packages specified via
   regex(7), glob(7) or exact match. The requested action can be
   overridden for specific packages by append a plus (+) to the
   package name to install this package or a minus (-) to remove it.

Este párrafo no existe en el15.10 página de manual, por lo que podría haberse agregado en 16.04.

Esto no parece haber sido mencionado en el registro de cambios de apt.el compromiso que agregó esto en 2013no muestra ningún cambio en las páginas de manual. Esto se deshabilitó brevemente y se volvió a habilitar más adelante (verse compromete entre mayo y febrero de 2014), yla desactivación se menciona en el registro de cambios.

Es posible que esto se haya añadido hace cuatro años, perosolo documentado en 2015. Y apt-getla página de manual de sigue descuidada.

información relacionada