如何在 debian:latest docker 上安装 gcc-9

How to install gcc-9 on debian:latest docker

为了使用 C++17 include <filesystem> 我需要 gcc-9 我的 debian 包 docker.

默认情况下 debian:latest(又名 10 或 buster)将从常规发行版存储库安装 gcc 8.3.0

是否有任何 PPA、测试回购等,我可以在哪里 轻松地 安装 gcc-9(或更高版本)包(即不是从源代码构建它)

谢谢!

注意:需要 gcc-9 才能获得良好的 C++17 <filesystem> 支持。
GCC 9 发行说明:

Using the types and functions in does not require linking with -lstdc++fs now.

来源:https://gcc.gnu.org/gcc-9/changes.html

注意 2:CMake 3.16* 不支持任何 cxx_filesystem 编译器功能 AFAIK。

注意 3:您可以在此处找到日志:https://github.com/Mizux/KalistoUnpacker/runs/642516660?check_suite_focus=true

debian:10 的全新开始:

echo 'deb http://deb.debian.org/debian testing main' > /etc/apt/sources.list.d/testing.list
apt update
cat <<EOF > /etc/apt/preferences.d/pin
Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650
EOF

apt install -qq -y -t testing build-essential

产量:

# g++ -v
gcc version 9.3.0 (Debian 9.3.0-11) 

在我的 Dockerfile 中我做了:

FROM debian:latest AS env
...
RUN echo 'deb http://deb.debian.org/debian testing main' >> /etc/apt/sources.list
RUN apt update -y
RUN apt install -y gcc

注意:我在 build-essential 安装后添加了这些行,所以从技术上讲,容器安装“默认”gcc,然后由测试库中的 gcc 更新...

note2: 使用 RUN gcc --version 我有 gcc (Debian 9.3.0-11) 9.3.0 :D