Você pode fazer isso listando os dois conjuntos de pacotes e determinando a diferença entre os dois resultados:
grep -Fxv -f <(apt list | grep unstable | cut -d/ -f1) <(apt list | grep experimental | cut -d/ -f1)
Isso produz "experimental menos instável" e pode ser adaptado para calcular qualquer diferença alterando unstable
e / ou experimental
. Estritamente falando, combina mais do que apenas a suíte; a seguinte variante corresponde exatamente ao corresponder somente após a saída de /
in apt list
:
grep -Fxv -f <(apt list | egrep /.\*unstable | cut -d/ -f1) <(apt list | grep /.\*experimental | cut -d/ -f1)
(Caso contrário, os pacotes com "experimental" em seus nomes aparecerão quando não devem, por exemplo, ao comparar os testes e experimental, trafficserver-experimental-plugins
está listado, embora esteja presente apenas na instabilidade.)
Além disso, apt list
lista apenas os pacotes candidatos por padrão, portanto, para obter os resultados corretos, especialmente ao comparar o teste e a instabilidade, você precisa fazer:
grep -Fxv -f <(apt list --all-versions | egrep /.\*unstable | cut -d/ -f1) <(apt list --all-versions | grep /.\*experimental | cut -d/ -f1)
Ambos cut
s extraem o nome do pacote da saída de apt
. O primeiro conjunto de pacotes (da unstable) é fornecido como uma lista de padrões para grep
usando a opção -f
. -F
indica grep
para considerar os padrões como sequências de texto simples em vez de expressões regulares; -x
diz para combinar cada padrão completamente; e -v
diz para listar as linhas que não correspondem aos padrões fornecidos.
Então grep
pega todos os pacotes em experimental, mantém apenas aqueles que não estão na lista de pacotes da unstable, e produz o resultado.
As construções <()
usam a substituição do processo para alimentar a saída padrão dos comandos contidos dentro dos parênteses para um canal que pode então ser usado como entrada para outro comando; consulte o guia avançado de bash para obter detalhes.