捕获 yum 进度条百分比

SSa*_*ker 3 linux fedora java yum

我想知道是否可以在下载包时捕获下载进度,即“yum”显示的下载完成百分比。从某种意义上说,捕获可以是文本文件或以编程方式使用 JAVA,例如,如果我从 JAVA 运行 yum 安装程序。

我试过yum install pkg_name > captured,但它只捕获标准输出而没有进度信息。

我也检查过标准错误,没有结果。

例如

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! 
Run Code Online (Sandbox Code Playgroud)

除了上述信息,我还想在下载时捕获“下载包:”标签下方显示的进度部分,即完成百分比。

我不使用 Python 脚本。

Mar*_*ian 7

只有当输出到终端时才会写出进度条。您可以使用expectExpectJ是 Java 实现)来模拟它,但是解析应用程序输出(称为屏幕抓取的东西)可能是非常脆弱的方法,并且会在输出更改时中断,例如取决于输出终端的宽度、包名称的长度和也许其他事情。

Yum 是用 python 编写的,并且可以通过插件进行扩展,因此您可以尝试编写一个插件来与您的应用程序对话并通知进度,但对我来说似乎不值得麻烦。

如果您决定这样做,这里是文档

要简单地将 yum 包装在期望中,您可以使用以下内容:

#!/usr/bin/expect -f
set timeout 600
spawn yum -y install zsh-html
expect eof
Run Code Online (Sandbox Code Playgroud)

在此之后,您可以捕获输出并查看正在那里下载的软件包。

  • @JtheRocker 我为你投了赞成票 :) 只是在需要给予的地方给予信任...... (2认同)