what might be the difference ?
O principal motivo para o número diferente de linhas é que a saída produzida por yum
é formatada para que cada campo seja alinhado verticalmente (independentemente do tamanho do nome do pacote e / ou número da versão). Ele faz isso usando duas linhas para listar esses pacotes e preenchendo a segunda linha com caracteres de espaço para alinhar os campos corretamente. A seguinte saída (de uma caixa do CentOS 6) mostra que duas linhas são usadas para listar o pacote device-mapper-persistent-data.x86_64
:
device-mapper-libs.x86_64 1.02.95-3.el6_7.4 @clearos-verified-updates
device-mapper-persistent-data.x86_64
0.3.2-1.el6 @clearos
dhclient.x86_64 12:4.1.1-49.P1.v6 @clearos-verified-updates
No entanto, este não é o motivo apenas e pode ser visto massageando a saída dos dois comandos antes de compará-los:
Para a saída do comando rpm
:
-
Classifique-o para que os pacotes que começam com uma letra maiúscula apareçam antes daqueles com letras minúsculas:
rpm -qa | LC_ALL=C sort
-
Use o comando
sed
para remover os números da versão do pacote:rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
Para a saída do comando yum
:
-
Remova as duas primeiras linhas de cabeçalho (
Loaded plugins
eInstalled Packages
):Loaded plugins: etckeeper, fastestmirror Installed Packages
Podemos usar
sed
para isso:yum list installed | sed '1,2d;'
-
Também podemos usar
sed
para remover todas as linhas que são continuações de uma listagem de pacotes (essas linhas começam com um número de espaços para que todas as versões do pacote sejam alinhadas).yum list installed | sed '1,2d;/^ /d;s/\..*//' >| installed.yum
Agora, podemos usar o comando diff
para comparar a saída dos dois arquivos. Veja os resultados da caixa do CentOS 6:
# diff installed.{rpm,yum}
239,243d238
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
Conclusão
Isso mostra que rpm -qa
também inclui listagens de pacotes para as chaves públicas confiáveis para assinar pacotes, enquanto o comando yum
omite esses pacotes.