`apt-get` e curingas: globs vs. regex

`apt-get` e curingas: globs vs. regex

Editar: Observe que, conforme escrito abaixo, estou ciente das respostas neste site explicando que apt-getusa regex para interpretar nomes de pacotes. Na verdade, a questão é diretamente sobre a forma como o seu comportamento real é diferente daquele documentado. Por favor, leia a pergunta antes de sugerir uma duplicata.


Algumas respostas neste site alertam sobre o uso apt-getde curingas (ou seja, asteriscos: *), porque apt-getsupostamente os expande como expressões regulares, o que pode fornecer resultados inesperados (e indesejados), especialmente com apt-get remove. De fato,Página do Ubuntu manparaapt-getlê:

Se nenhum pacote corresponder à expressão fornecida e a expressão contiver um dos '.', '?' ou '*' então é assumido como uma expressão regular POSIX e é aplicado a todos os nomes de pacotes no banco de dados. Quaisquer correspondências são então instaladas (ou removidas). Observe que a correspondência é feita por substring, portanto 'lo.*' corresponde a 'how-lo' e 'lowest'. Se isso não for desejado, ancore a expressão regular com um caractere '^' ou '$' ou crie uma expressão regular mais específica.

Na verdade,esta respostareivindicações:

O apt-get aceita uma expressão regular e não um padrão glob como shell.

Acredito que isso esteja errado (pelo menos no Xenial). Por exemplo, posso reproduzir o seguinte comportamento:

$ 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*'
[...]

(Não removi nenhuma correspondência, apenas partes irrelevantes da apt-getresposta de.)

Parece-me, com base nesse comportamento, que apt-getprimeiro tenta corresponder determinadas expressões como globs e, somente se falhar, tentará novamente como expressões regulares.

Eu tenho esse direito? Eu entendi mal a manpágina ou esse comportamento está mal documentado?

Responder1

Isto é explicado noapt(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 parágrafo não existe noPágina de manual 15.10, então pode ter sido adicionado em 16.04.

Isso não parece ter sido mencionado no changelog do apt -o commit que adicionou isso em 2013não mostra nenhuma alteração nas páginas de manual. Isto foi brevemente desativado e reativado mais tarde (vejacompromete-se entre maio e fevereiro de 2014), ea desativação é mencionada no changelog.

Então isso pode ter sido adicionado há quatro anos, masdocumentado apenas em 2015. E apt-geta página de manual permanece negligenciada.

informação relacionada