我一直在使用 launchpad.net 构建许多我的项目适用于 Xenial、Bionic 以及现在的 Focal。
当我尝试完成我的项目列表时,其中一个构建程序告诉我无法安装依赖项。从我在网上找到的信息来看,这似乎是在缺少依赖项时发生的(至少就 launchpad.net 而言)。为了以防万一,我今天重新运行了一个构建程序,大约 20 小时后,它仍然失败。同样的错误。
我还遗漏了什么吗?
以下是阻止构建的错误:
The following packages have unmet dependencies:
sbuild-build-depends-cassandra-cpp-driver-snap-dummy : Depends: libuv1-snap-dev (>= 1.33.1.7~bionic) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
apt-get failed.
E: Package installation failed
你可以阅读完整的启动板日志如果有帮助的话。
这软件包列表包括所有三个发行版和两种架构的依赖项:amd64 和 arm64 中的 Xenial、Bionic 和 Focal。所以它就在那里!
Xenial 构建 ( cassandra-cpp-driver-snap_2.14.0.9~xenial
) 成功了。我只是不明白为什么其他两个会失败,因为该依赖项存在并且随时可用(我可以从我的电脑上下载它)。而且到目前为止,它都可以与所有其他软件包一起使用...
你知道我下一步该做什么才能让它发挥作用吗?
答案1
这里的问题是 cassandra-cpp-driver-snap 依赖于 cmake,而 cmake 在 18.04 和 20.04 中依赖于 libuv1。libuv1-snap 与 libuv1 冲突,因此无法安装它和 libuv1-snap-dev,因此构建失败。
如果 cmake 确实可以基于 libuv1-snap 进行构建和工作,那么您可以在 ppa 中解决这个问题。在我看来,最好的选择是使用 libuv1-snap 将 cmake 打包到单独的 build dep ppa,然后将该 ppa 添加到您当前 ppa 的依赖项中。这将保护 ppa 用户免于获取修改后的 cmake。否则,您可以尝试编辑 cmake 控件以允许 libuv1-snap-dev | libuv1-dev,尽管我更喜欢前者。