web-dev-qa-db-ja.com

LXDhostがコンテナ内のランドスケープにパッケージを報告しない

こんにちは、私はlxdコンテナで風景を走らせています。コンテナはブリッジモードです。ランドスケープにlxdhostを追加しました。ランドスケープは正常に機能し、認識できる限り正常に接続します。ただし、そのパッケージは報告されないため、ご想像のとおり、パッチ管理にはほとんど役に立ちません。すべてのシステムでUbuntu 18.04が実行されています。手動でlandscape-package-reporterを実行すると、次のエラーが発生します。

Sudo landscape-package-reporter 
[Sudo] password for lxcuser: 
2020-01-17 14:38:53,220 ERROR    [MainThread] None
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 653, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/python3/dist-packages/landscape/client/package/reporter.py", line 92, in <lambda>
result.addCallback(lambda x: self.request_unknown_hashes())
File "/usr/lib/python3/dist-packages/landscape/client/package/reporter.py", line 498, in request_unknown_hashes
self._facade.ensure_channels_reloaded()
File "/usr/lib/python3/dist-packages/landscape/lib/apt/package/facade.py", line 265, in ensure_channels_reloaded
self.reload_channels()
File "/usr/lib/python3/dist-packages/landscape/lib/apt/package/facade.py", line 253, in reload_channels
version, with_info=False).get_hash()
File "/usr/lib/python3/dist-packages/landscape/lib/apt/package/facade.py", line 402, in get_package_skeleton
return build_skeleton_apt(pkg, with_info=with_info, with_unicode=True)
File "/usr/lib/python3/dist-packages/landscape/lib/apt/package/skeleton.py", line 131, in build_skeleton_apt
version.record, "Provides", DEB_PROVIDES))
File "/usr/lib/python3/dist-packages/apt/package.py", line 690, in record
return Record(self._records.record)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 724: invalid start byte

おかしなことに、他のすべてのコンテナーは通常、パッケージを報告しますが、問題はありません。

スクリプトを調べましたが、プログラミングの知識が非常に低いため、問題の原因を見つけることができませんでした。

たぶん、あなたの一人がアイデアを持っています。

1
peperjohnny

この問題(特に724の位置にある問題)は、Veeamパッケージリスト/var/lib/apt/lists/repository.veeam.com_backup_linux_agent_dpkg_debian_public_dists_stable_veeam_binary-AMD64_Packagesの迷子のUnicode文字に関連しています。私はこれを発見しました

この問題をVeeamに報告したので、すぐに修正される場合とそうでない場合があります(この投稿を更新します)。

簡単な(ただし永続的ではない)方法は、/var/lib/apt/lists/repository.veeam.com_backup_linux_agent_dpkg_debian_public_dists_stable_veeam_binary-AMD64_Packagesの末尾にある浮遊文字を削除することです。ただし、aptveeamパッケージリストを更新すると、この変更は上書きされます。

恒久的な解決策(launchpad-client更新によってのみ上書きされます)は、try/except UnicodeErrorブロックをskeleton.pyの関連コードの周りに追加することです

その方法の詳細については my blogpost を参照してください。

1
Uli Köhler