Bitbucket 管道安装了错误版本的 cmake

Bitbucket pipeline installing the wrong version of cmake

当我在我的 Bitbucket 管道中使用 apt-get install cmake 时,它​​会安装 3.0.2 版。这会导致错误 "CMake 3.7.2 or higher is required. You are running version 3.0.2"。如何在我的 .yml 中安装 cmake 3.7.2 或更高版本?

bitbucket-pipelines.yml

image: gcc:6.5

pipelines:
  default:
    - step:
        script: # Modify the commands below to build your repository.
          - apt-get update && apt-get -y install cmake
          - cmake -B build .

错误:

+ cmake -B build .
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.7.2 or higher is required.  You are running version 3.0.2

这实际上不是管道问题。我将逐步完成故障排除过程,以确定问题和可能的解决方案。您可以寻求其他解决方案来安装所需的版本,但希望按照此处的方法在将来对您有所帮助。

完全公开,我在 Atlassian 工作——尽管不在 Bitbucket Pipelines 团队:)


您看到正在安装的 cmake 版本实际上与您正在使用的第三方基础映像 gcc:6.5 有关。您可以 test/verify 在您自己的机器上执行此操作:

$ docker run --rm -it gcc:6.5 bash
root@77d4fde67119:/# apt-get update && apt-get -y install cmake
root@77d4fde67119:/# cmake --version
cmake version 3.0.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

我们可以看到 gcc:6.5 图像是基于 Debian Jessie:

root@77d4fde67119:/# cat /etc/os-release | grep PRETTY
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"

如果您查找 Jessie 的默认 cmake 包,您会发现它是 v3.0.2:https://packages.debian.org/jessie/devel/cmake

多一点挖掘会告诉你,较新的 Debian 版本默认打包较新版本的 cmake:Stretch 或 Buster 将分别打包 3.7 或 3.13。因此,您的问题的解决方案是使用基于更新的 Debian 版本的 gcc 基础映像的更新版本:

让我们用 gcc:7 基本图像再试一次:

$ docker run --rm -it gcc:7 bash
root@26e82f7b5e56:/# cat /etc/os-release | grep PRETTY
PRETTY_NAME="Debian GNU/Linux 10 (buster)"

嗯,这是一个好兆头:gcc:7 基于 Debian Buster。克星舰 3.13:https://packages.debian.org/buster/devel/cmake

root@26e82f7b5e56:/# apt-get update && apt-get -y install cmake
root@26e82f7b5e56:/# cmake --version
cmake version 3.13.4

CMake suite maintained and supported by Kitware (kitware.com/cmake).

给你了:3.7 以上的版本。

如果您不能使用此版本的 gcc,当然,您需要考虑其他解决方案。但希望这有助于说明您的问题的根源以及您将来如何调查此类问题。