Ele executa o comando rpm -E %fedora e substitui sua saída do stdout pelo comando externo.
rpm -E avalia a (s) variável (s) no texto passado para ela.
Estou tentando adicionar um novo repositório ao meu Fedora e fui solicitado a introduzir o seguinte comando:
su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm'
Estou tentando entender o que cada parte do comando significa e quase tenho tudo, exceto a linha $(rpm -E %fedora) . Eu pesquisei mas não encontrei nada, então decidi perguntar aqui.
Quando você tiver perguntas como essa, é melhor consultar as páginas do manual. Dê uma olhada na página rpm man.
$ man rpm
...
-E, --eval='EXPR'
Prints macro expansion of EXPR.
Ao perceber que %fedora é uma macro, se você for um pouco mais abaixo na página rpm man, poderá ver quais arquivos fornecem definições de macro.
Macro Configuration
/usr/lib/rpm/macros
/usr/lib/rpm/redhat/macros
/etc/rpm/macros
~/.rpmmacros
Dar uma olhada dentro de /etc/rpm/macros irá revelar essa definição.
$ grep fedora /etc/rpm/macros*
/etc/rpm/macros.dist:%fedora 19
Então podemos ver que existe uma definição chamada %fedora e no meu sistema (Fedora 19) tem um valor de "19".
A notação $(..) executará qualquer comando entre os parênteses e substituirá os resultados retornados em seu lugar.
$ echo $(echo hi)
hi
Ou no seu caso:
$ echo $(rpm -E %fedora)
19
Então, quando o comando que você está perguntando executa as seguintes coisas acontecem. Uma macro RPM, %fedora é avaliada usando o comando rpm . Esse comando é executado em linha. Uma vez expandido para "19", esse valor é usado dentro do maior comando yum para instalar o arquivo .rpm apropriado para uma versão do Fedora.
Tags repository rpm fedora