Em um servidor executando o Ubuntu 20.04 LTS, estou tentando listar os kernels instalados com o comando:
dpkg-query -W -f '${Package}\n' 'linux-image-[0-9]*'
que de acordo com a página de manual deve listar os pacotes instalados que correspondem ao padrão. No entanto, a saída do comando inclui versões do kernel que já foram removidas. Como posso limitar a saída aos kernels que ainda estão instalados?
A página de manual em 20.04 diz " todos os pacotes que correspondem ao padrão " que inclui pacotes desinstalados. Ele não pretende limitar a saída aos pacotes instalados.
Adicione o estado do pacote à sua saída
dpkg-query -W -f '${db:Status-Status} ${Package}\n' 'linux-image-[0-9]*'
Filtre a saída usando o campo de estado do pacote. Todos os valores, exceto "não instalado", significam que o pacote está pelo menos parcialmente instalado.
dpkg-query -W -f '${db:Status-Status} ${Package}\n' 'linux-image-[0-9]*' | awk '$1 != "not-installed" {print}'
Limite a saída ao nome do pacote
dpkg-query -W -f '${db:Status-Status} ${Package}\n' 'linux-image-[0-9]*' | awk '$1 != "not-installed" {print $2}'