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