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 脚本。
只有当输出到终端时才会写出进度条。您可以使用expect(ExpectJ是 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)
在此之后,您可以捕获输出并查看正在那里下载的软件包。
归档时间: |
|
查看次数: |
5695 次 |
最近记录: |