Ubuntu 版本:“Ubuntu 22.04 LTS” Pro 版本:31.2~22.04
我尝试使用 pro 启用 fips-updates。
pro attach <subscritptionID>
- 这是成功的pro enable fips-updates
- 失败。错误片段:
root@testmachine:~# pro enable fips-updates --assume-yes
One moment, checking your subscription first
Updating FIPS Updates package lists
Installing FIPS Updates packages
Updating standard Ubuntu package lists
Could not enable FIPS Updates.
Updating package lists
Unexpected APT error.
Failed running command 'apt-get install --assume-yes --allow-downgrades -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" ubuntu-fips' [exit(100)]. Message: E: Unable to locate package ubuntu-fips
经过进一步分析,我发现,创建的 sources.list.d 有注释的 debian repo 链接,该文件在过程中被动态创建和删除:检查此图像: ubuntu-fips-更新列表
这是什么错误,还是我遗漏了什么。非常感谢任何帮助。
答案1
我最近也遇到了这个问题。原来,这是因为没有配置 Ubuntu 提供的“$DISTRO-updates”apt repo。
在“/usr/lib/python3/dist-packages/uaclient/apt.py”文件(由 ubuntu-advantage-tools 包提供)中,它会检查现有的存储库,并检查是否存在 Ubuntu 提供的“-updates”存储库:
# Does this system have updates suite enabled?
updates_enabled = False
policy = run_apt_command(
["apt-cache", "policy"], messages.APT_POLICY_FAILED
)
for line in policy.splitlines():
# We only care about $suite-updates lines
if "a={}-updates".format(series) not in line:
continue
# We only care about $suite-updates from the Ubuntu archive
if "o=Ubuntu," not in line:
continue
updates_enabled = True
break
接下来,如果启用的功能名称中包含“-updates”,并且之前的检查未找到匹配项,则会注释掉 repo URL 条目:
content = ""
for suite in suites:
if series not in suite:
continue # Only enable suites matching this current series
maybe_comment = ""
if "-updates" in suite and not updates_enabled:
LOG.warning(
'Not enabling apt suite "%s" because "%s-updates" is not'
" enabled",
suite,
series,
)
maybe_comment = "# "
content += (
"{maybe_comment}deb {url} {suite} main\n"
"# deb-src {url} {suite} main\n".format(
maybe_comment=maybe_comment, url=repo_url, suite=suite
)
)
system.write_file(repo_filename, content)
我建议检查实例上的存储库。上面的代码查看“apt-cache policy”命令的输出。
就我而言,这是因为我们首先修改了 apt repos,然后尝试启用 fips-updates,但失败了。