Use sudo apt-get remove ^k3b . Quando você instala ou remove pacotes, * costuma ser perigoso e raramente é necessário. Se você usa * , você deve citá-lo, mas isso não o torna mais seguro, porque sua tendência de selecionar muito mais pacotes do que você pretende é o resultado da maneira como apt e apt-get interpreta e não um efeito da expansão do nome do caminho .
- Até mesmo os usos seguros de
* são muitas vezes desnecessário .
- Os inseguros usam são brutais . Remover
k3b* remove todo pacote que contém k3 em qualquer lugar em seu nome (e todo pacote que depende de tal pacote). Isso não é um erro de digitação - contendo k3 é suficiente, mesmo sem o b , porque b* significa "zero ou mais b s".
Quando você executa apt ou apt-get com a ação install , remove ou purge , cada O argumento subsequente é o primeiro 1 interpretado como o nome de um pacote individual. Se existir um pacote com esse nome exato, a ação será executada para ele.
Se não houver esse pacote, apt e apt-get verificarão se o argumento contém alguma das expressões comuns metacaracteres 2 . , ? , + , * , | , \[ , < href="http://www.regular-expressions.info/anchors.html"> ^ ou $ . Se não, está feito - nenhum pacote foi encontrado.
Se contiver qualquer um desses caracteres, ele será tratado como uma expressão regular e será comparado a qualquer parte de qualquer nome de pacote. Não precisa corresponder ao nome inteiro. Como outros disseram, * em uma expressão regular não significa a mesma coisa que * em uma glob. ? também não. Em uma expressão regular:
-
* permite que o item anterior apareça qualquer número de vezes - incluindo apenas uma vez ou não - em vez de exatamente uma vez.
-
? torna o item anterior opcional - ou seja, permite que ele apareça zero ou uma vez.
apt-get (8) ( man apt-get ) 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.
A página do manual menciona apenas . , ? e * , mas está incompleta , pois + , | , [ , ^ e $ também são suficientes para permitir que apt-get ou apt interpretem o padrão como uma expressão regular. 3
Embora você possa combinar qualquer número de caracteres com .* - não apenas * - você só precisa disso se aparecer no meio da sua expressão regular. Como o padrão é comparado com qualquer substring de um nome de pacote, é inútil no final (ou no início) do padrão.
O manpage menciona ^ e $ . Esses (especialmente ^ ) são essenciais para criar padrões seguros e eficientes para uso com as ações install , remove ou purge em apt ou apt-get .
-
^ ancora uma expressão regular no início de toda a cadeia. ^k3b seleciona todos os pacotes cujos nomes iniciam com k3b .
-
$ ancora uma expressão regular no fim de toda a cadeia. k3b$ selecionaria todos os pacotes cujos nomes terminam com k3b .
Portanto, você pode usar este comando para remover os pacotes com segurança:
sudo apt-get remove ^k3b
Por fim, no caso específico que você mencionou, é melhor passar os dois nomes:
sudo apt-get remove k3b k3b-data
Então você evita toda essa complexidade! (Embora a ancoragem com ^ seja simples quando você estiver acostumado.) Ou use expansão da cinta , que seu shell expande no comando acima:
sudo apt-get remove k3b{,-data}
Existem duas exceções:
(a) algumas opções ) são reconhecidos, e
(b) alguns caracteres de pontuação que aparecem no
fim de um argumento que seria usado como um nome de pacote para executar a ação podem ser usados para alterar o que é feito (por exemplo,
-f instala a
tarefa em vez do pacote e quando
--purge aparece no final ).
2 Outros metacaracteres de expressões regulares existem. Por exemplo, sudo apt install ubuntu-desktop^ é suportado por todos os dialetos de expressões regulares e comumente usados. ^ , \ , . , ? , + , * , | e [ são os metacaracteres que os desenvolvedores APT decidiram que acionariam a interpretação como uma expressão regular ( após a resolução, como um pacote exato chamado falhou).
3 A maneira mais fácil de verificar isso é simular a instalação ou a remoção com esse padrão, usando a opção ^ , conforme descrito acima. Por exemplo, executar $ mostra que -s teria o efeito de tentar instalar todos os pacotes que o gerenciador de pacotes conhece, cujo nome começa com apt -s install ^virtualbox . No entanto, esse comportamento também pode ser verificado com o exame do código-fonte . Verifique a função sudo apt install ^virtualbox em virtualbox .