Como obter a saída do script em tempo real, escrita na seção% post do arquivo .spec do RPM?

1

Bom dia. Problema: Em uma seção de pós-instalação% do arquivo de especificação do RPM pode ser um script. Eu quero colocar lá um script com uma saída em tempo real, como barra de progresso para o processo de pós-instalação. Mas todas as saídas produzidas pelos comandos nesta seção são strongmente armazenadas em buffer por (supondo) Yum, e mostradas somente quando a seção é completamente executada. Pergunta: Existe uma maneira de obter saída, produzida por scripts dentro de% pós seções (python ou scripts puros pash) imediatamente ou o mais rápido possível?

Obrigado antecipadamente.

    
por J. Keker 10.12.2016 / 06:36

1 resposta

0

Você pode redirecionar stdout do seu script para o stdout de seu processo pai. Similarmente para stderr .

#!/bin/bash
exec 1>/proc/$PPID/fd/1
exec 2>/proc/$PPID/fd/2

Redirecionar stdout como esse pode ter consequências inesperadas ou causar uma surpresa desagradável para alguém que esteja executando o script tentando capturar e analisar seu stdout quando essa saída aparecer em seu terminal.

Você pode ver como isso pode ser confuso (imagine a execução em um script que não seja um argumento -c )

$ x=$(bash -c 'exec 1>/proc/$PPID/fd/1 && echo text')
text
$ echo "x was $x"
x was 

Em primeiro lugar, algo é impresso, mesmo que a subshell tenha capturado a stdout! E então, x estava vazio! Loucura. Parece que o text veio de um stderr , exceto que não.

Idealmente, yum teria apenas um sinalizador para isso; talvez alguém devesse fazer um pedido de compra;)

    
por 27.09.2018 / 08:00