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
,当然,您需要考虑其他解决方案。但希望这有助于说明您的问题的根源以及您将来如何调查此类问题。
当我在我的 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
,当然,您需要考虑其他解决方案。但希望这有助于说明您的问题的根源以及您将来如何调查此类问题。