Use em sudo apt-get remove ^k3bvez disso. Quando você instala ou remove pacotes, *geralmente é perigoso e raramente necessário. Se você usar *, deve citá-lo, mas isso não o torna mais seguro, porque a tendência de selecionar muito mais pacotes do que você pretende é o resultado do caminho apte apt-getinterpretá-lo, e não um efeito da expansão do nome do caminho .
- Mesmo usos seguros de
* são muitas vezes desnecessários .
- Usos inseguros são brutais . A remoção
k3b*remove todos os pacotes que contêm k3 qualquer lugar em seu nome (e todos os pacotes que dependem desse pacote). Isso não é um erro de digitação - k3é suficiente, mesmo sem o b, porque b*significa "zero ou mais bs".
Quando você executa aptou apt-getcom o install, removeou purgeação, cada argumento posterior é o primeiro 1 interpretado como o nome de um pacote individual. Se um pacote com esse nome exato existir, a ação será executada para ele.
Se não existe tal pacote, apte apt-getirá verificar se o argumento contém qualquer um dos comuns de expressões regulares metacharacters 2 . , ?, +,* , |, \[, ^, ou$ . Caso contrário, está feito - nenhum pacote foi encontrado.
Se ele não contém nenhum desses personagens, então ele é tratado como uma expressão regular e comparado com qualquer parte de qualquer nome do pacote. Não precisa corresponder ao nome inteiro. Como outros já 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 inúmeras 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.
O apt-get (8) ( man apt-get) diz:
Se nenhum pacote corresponder à expressão fornecida e a expressão contiver um de '.', '?' ou '*', assume-se que seja uma expressão regular POSIX e é aplicada a todos os nomes de pacotes no banco de dados. Todas as correspondências são instaladas (ou removidas). Observe que a correspondência é feita por substring, então 'lo. *' Corresponde a 'how-lo' e 'lower'. Se isso não for desejado, ancore a expressão regular com um caractere '^' ou '$' ou crie uma expressão regular mais específica.
A manpage apenas menciona ., ?e *, mas é incompleta , como +, |, [, ^, e $também são suficientes para deixar apt-getou aptinterpretar o padrão como uma expressão regular. 3
Embora você possa combinar qualquer número de caracteres com .*- e não apenas -, você *só precisa disso se ele aparecer no meio da sua expressão regular. Como o padrão é comparado com qualquer substring de um nome de pacote, não faz sentido o final (ou o começo) do padrão.
A página de manual menciona ^e$ . Estes (especialmente ^) são a chave para escrever padrões seguras e eficientes para uso com os install, removeou purgeações em aptou apt-get.
^ancora uma expressão regular no início de toda a cadeia. ^k3bseleciona todos os pacotes cujos nomes começam com k3b.
$ancora uma expressão regular no final de toda a cadeia. k3b$selecionaria todos os pacotes cujos nomes terminam com k3b.
Portanto, você pode usar este comando para remover com segurança os pacotes:
sudo apt-get remove ^k3b
Finalmente, no caso específico que você mencionou, você também pode apenas 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 a isso.) Ou use expansão de chaves , que seu shell expande no comando acima:
sudo apt-get remove k3b{,-data}
1 Há duas excepções a esta: (a) algumas opções (por exemplo, -f, --purge) são reconhecidos, e (b) alguns caracteres de pontuação que aparecem no final de um argumento que seria tomado como um nome de pacote para executar a ação pode ser usado para alterar o que é feito (por exemplo, sudo apt install ubuntu-desktop^instala a tarefa em vez do pacote e quando ^aparece no final).
2 Existem outros metacaracteres de expressão regular. Por exemplo, \é suportado por todos os dialetos de expressões regulares e comumente usado. ., ?, +, *, |, [, ^, E $só acontecerá a ser os metacaracteres os desenvolvedores APT decidiram provocaria interpretação como uma expressão regular (após a resolução como um pacote exato nomeado falhou).
3 A maneira mais fácil de verificar isso é simular a instalação ou remoção com esse padrão, usando a -sopção descrita acima. Por exemplo, a execução de apt -s install ^virtualboxprogramas que sudo apt install ^virtualboxteriam o efeito de tentar instalar todos os pacotes que o gerenciador de pacotes conhece sobre cujo nome começa virtualbox. No entanto, esse comportamento também pode ser verificado examinando o código-fonte . Verifique a CacheSetHelper::PackageFromRegExfunção em cacheset.cc.