Editar : Por favor note, como escrito abaixo, estou ciente das respostas neste site explicando que apt-get
usa regex para interpretar os nomes dos pacotes. De fato, a questão é diretamente sobre uma maneira em que seu comportamento real é diferente daquele documentado. Por favor, leia a questão antes de sugerir uma cópia.
Algumas respostas neste site avisam sobre o uso de apt-get
com curingas (isto é, asteriscos: *
), porque apt-get
supostamente os expande como expressões regulares, o que pode dar resultados inesperados (e indesejados), especialmente com% código%. Na verdade, o Ubuntu apt-get remove
page para man
diz:
Se nenhum pacote corresponder à expressão especificada e a expressão contiver
um de '.', '?' ou '*' então é assumido como sendo um POSIX regular
expressão, e é aplicado a todos os nomes de pacotes no banco de dados.
Qualquer correspondência é então instalada (ou removida). Note que a correspondência é
feito por substring, então 'lo. *' combina 'how-lo' e 'lowest'. Se isso é
não desejado, ancorar a expressão regular com um caractere '^' ou '$',
ou crie uma expressão regular mais específica.
Na verdade, esta resposta afirma:
O apt-get aceita uma expressão regular e não um padrão glob como o shell.
Eu acredito que isso está errado (pelo menos a partir de 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 resposta de apt-get
).
Parece-me, com base nesse comportamento, que apt-get
primeiro tenta corresponder expressões dadas como globs e, somente se falhar, tentará novamente como expressões regulares.
Eu tenho isso certo? Eu entendi mal a página apt-get
ou esse comportamento está mal documentado?