O que significa a linha $ (rpm -E% fedora)?

1

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.

    
por Sal Manning 26.12.2013 / 03:25

2 respostas

3

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.

    
por 26.12.2013 / 03:42
1

Macros RPM

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".

Execução de comandos in-line

A notação $(..) executará qualquer comando entre os parênteses e substituirá os resultados retornados em seu lugar.

Exemplo

$ echo $(echo hi)
hi

Ou no seu caso:

$ echo $(rpm -E %fedora)
19

Colocando tudo junto

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.

    
por 26.12.2013 / 07:17