3

私は python apt ライブラリを使用していますが、commit()関数が出力を生成しないようにしたいと考えています。

ウェブで検索したところ、フォーク機能でうまくいくことがわかりましたが、その方法や別の方法があるかどうかはわかりません。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

そしてコミット()で:

 cache.commit(install_progress=LogInstallProgress())

ただし、注意してください。deb パッケージは conffile プロンプトなどを実行する可能性があるため、conffile() (およびエラーも) をオーバーライドする必要があります。

于 2014-06-10T16:18:25.640 に答える
0

フォークへの使用は、私が思う可能性にすぎません。私はすでに sys.stderr でさえ sys.stdout をリダイレクトしようとしました: いいえ、うまくいきません。

于 2012-11-25T16:28:11.883 に答える