大家好,我让 Landscape 在 lxd 容器中运行。容器处于桥接模式。我将 lxdhost 添加到 Landscape,据我所知,它运行良好,连接正常。但是它没有报告其软件包,您可以想象,这对于补丁管理来说毫无用处。所有系统都运行 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
有趣的是,所有其他集装箱的包裹都报告正常,没有任何问题。
我查看了脚本,但由于我的编程知识很少,所以我找不到问题所在。
也许你们中有人有一个想法。
2023 年编辑:Veeam 似乎已经修复了这个问题。我现在使用的是 22.04 版本,横向版本是 23.03,无需进行任何自定义即可运行。
答案1
该问题(特别是位置 处的问题724
)与 Veeam 软件包列表中的杂散 unicode 字符有关。/var/lib/apt/lists/repository.veeam.com_backup_linux_agent_dpkg_debian_public_dists_stable_veeam_binary-amd64_Packages
我发现了这一点
我们已将此问题报告给 Veeam,因此它可能会或可能不会很快得到修复(我将更新此帖子)。
简单(但不是永久的)方法是删除 末尾的杂散字符。但是,更新软件包列表/var/lib/apt/lists/repository.veeam.com_backup_linux_agent_dpkg_debian_public_dists_stable_veeam_binary-amd64_Packages
时,此更改将被覆盖。apt
veeam
永久解决方案(只有更新才会覆盖)是在相关代码周围launchpad-client
添加一个try
/块except UnicodeError
skeleton.py
看我的博文了解有关如何执行此操作的更多详细信息。