我使用 python apt 库,我希望该commit()
函数不会产生任何输出。
我在网上搜索过,发现 fork 函数可以解决问题,但我不知道该怎么做,或者是否存在其他方法。我不使用任何 GUI,我通过终端工作。
最简单的解决方案可能是使用类似的东西:
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() (还有错误)。
我认为使用 fork 只是一种可能性。我已经尝试重定向 sys.stdout 甚至 sys.stderr :No Joy,它不会工作。