私は python apt ライブラリを使用していますが、commit()
関数が出力を生成しないようにしたいと考えています。
ウェブで検索したところ、フォーク機能でうまくいくことがわかりましたが、その方法や別の方法があるかどうかはわかりません。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
そしてコミット()で:
cache.commit(install_progress=LogInstallProgress())
ただし、注意してください。deb パッケージは conffile プロンプトなどを実行する可能性があるため、conffile() (およびエラーも) をオーバーライドする必要があります。
フォークへの使用は、私が思う可能性にすぎません。私はすでに sys.stderr でさえ sys.stdout をリダイレクトしようとしました: いいえ、うまくいきません。