Capturando a porcentagem da barra de progresso do yum

3

Eu gostaria de saber se é possível capturar o progresso do download, ou seja, o percentual de download completo mostrado por "yum" enquanto ele está baixando um pacote. Captura, no sentido, poderia ser para um arquivo de texto ou programaticamente usando JAVA, por exemplo, se eu executar o instalador do yum do JAVA.

Eu tentei yum install pkg_name > captured , mas captura apenas a saída padrão sem as informações de progresso.

Eu também verifiquei stderr, nenhum resultado.

Por exemplo,

Setting up Install Process Resolving Dependencies

--> Running transaction check

---> Package wget.i686 0:1.12-4.fc14 set to be installed

--> Finished Dependency Resolution

Dependencies Resolved

================================================================================ Package Arch Version Repository Size

================================================================================

Installing: wget i686 1.12-4.fc14 updates 481 k

Transaction Summary

================================================================================ Install 1 Package(s)

Total download size: 481 k

Installed size: 1.8 M Downloading Packages:

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Installing : wget-1.12-4.fc14.i686 1/1

Installed:

Wget.i686 0:1.12-4.fc14

Complete! 

Juntamente com as informações acima, eu também gostaria de capturar a parte do progresso, ou seja, porcentagem completa que é mostrada abaixo do rótulo 'Downloading Packages:' durante o download.

Eu não uso scripts em Python.

    
por SSaikia_JtheRocker 26.11.2011 / 14:26

2 respostas

6

As barras de progresso são gravadas somente quando a saída está no terminal. Você pode simular isso usando espera (com ExpectJ sendo a implementação Java), mas analisar a saída do aplicativo (coisa chamada screen scraping) pode ser um método muito frágil e quebraria quando a saída fosse alterada, por exemplo, dependendo da largura do terminal de saída, comprimento dos nomes dos pacotes e talvez outras coisas. / p>

O Yum é escrito em python e é extensível com plugins, então você pode tentar escrever um plugin para falar com seu aplicativo e notificar sobre o progresso, mas não parece valer a pena para mim.

Aqui estão os documentos se você decidiu seguir esse caminho.

Para simplesmente envolver o yum em uma expectativa, você pode usar algo como:

#!/usr/bin/expect -f
set timeout 600
spawn yum -y install zsh-html
expect eof

Depois disso, você pode pegar a saída e ver os pacotes sendo baixados lá.

    
por 30.11.2011 / 11:56
1

Eu não acho que esse comportamento é um problema terminal vs , para mim, isso tem a ver com o armazenamento em buffer.

Da minha experiência, o comando unbuffer funciona muito bem:

unbuffer yum install pkg_name > captured

e depois você pode acompanhar o progresso:

tail -f -n 0 captured

No CentOS 7, use yum provides '*/bin/unbuffer' para encontrar o pacote fornecendo o comando unbuffer .

    
por 28.09.2016 / 17:50