我使用python apt库,我希望commit()
函数不会产生任何输出。
我在网上搜索过,看到fork函数可以解决这个问题,但我不知道如何做到这一点,或者是否存在其他方法。我没有使用任何GUI,我通过终端工作。
答案 0 :(得分:1)
最简单的解决方案可能是使用类似的东西:
class LogInstallProgress(apt.progress.base.InstallProgress):
def fork(self):
pid = os.fork()
if pid == 0:
logfd = os.open("dpkg.log", os.O_RDWR | os.O_APPEND | os.O_CREAT, 0o644)
os.dup2(logfd, 1)
os.dup2(logfd, 2)
return pid
然后在commit()中:
cache.commit(install_progress=LogInstallProgress())
但要小心,请注意deb包可能会提示conffile提示和类似的东西,所以你会想要覆盖conffile()(以及错误)。
答案 1 :(得分:0)
我认为使用fork是一种可能性。我已经尝试重定向sys.stdout甚至是sys.stderr:No Joy,它不会工作。