3

我使用 python apt 库,我希望该commit()函数不会产生任何输出。

我在网上搜索过,发现 fork 函数可以解决问题,但我不知道该怎么做,或者是否存在其他方法。我不使用任何 GUI,我通过终端工作。

4

2 回答 2

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() (还有错误)。

于 2014-06-10T16:18:25.640 回答
0

我认为使用 fork 只是一种可能性。我已经尝试重定向 sys.stdout 甚至 sys.stderr :No Joy,它不会工作。

于 2012-11-25T16:28:11.883 回答