0. 下载 AlmaLinux 8 docker 镜像

    https://hub.docker.com/r/almalinux/8-base/tags

下载镜像: 

sudo docker pull almalinux/8-base:8.4

创建一个容器:

sudo docker run --gpus all -it   --name   cudaq_src_py_LHL_06   -v   /home/hanmeimei/big_app/tmp6:/root/tmp6  almalinux/8-base:8.4

 1. Alma 安装软件

    以安装 wget 为例:

sudo dnf install wget

2.  安装软件时报 Error: GPG check FAILED

      在 AlmaLinux 8 中使用 dnf 安装软件包时遇到 GPG 检查失败GPG check FAILED)的问题,通常是由于软件源的 GPG 密钥未正确导入或已过期。

2.1. GPG 密钥的作用

    在 AlmaLinux(及其他基于 RPM 的 Linux 发行版)中,GPG(GNU Privacy Guard)密钥用于:
        验证软件包来源:确保软件包未被篡改,来源可信(如官方仓库)。
        防止恶意软件安装:防止攻击者伪造软件包并植入后门。
        确保软件完整性:检查软件包是否在传输过程中损坏。

2.2. 修正

     # 删除旧密钥(如有冲突)

sudo rpm -e /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux

    # 从 AlmaLinux 官方重新下载并导入最新密钥

sudo curl -o  /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux

    # 清除缓存并强制更新

sudo dnf clean all
sudo dnf makecache

2.3. GPG 密钥的存储位置


AlmaLinux 的 GPG 密钥通常存储在:

    系统级密钥存储在:

/etc/pki/rpm-gpg/(RPM 包管理器的 GPG 密钥存放目录)

        例如:/etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux

   导入的密钥也会存储在 RPM 数据库中,可以使用如下命令查看

rpm -qa gpg-pubkey* 

2.4. 查看已安装的 GPG 密钥

    # 查看系统存储的 GPG 密钥文件

ls /etc/pki/rpm-gpg/

    # 查看 RPM 数据库中已导入的 GPG 密钥

rpm -qa gpg-pubkey*

    输出 含 AlmaLinux 官方密钥 和 EPEL 仓库密钥

3.  启用 EPEL 和 CodeReady Builder (CRB) 仓库

sudo dnf install -y epel-release
sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --set-enabled powertools

 4. 列出所有可用软件包

dnf list --all

 5. 安装 GCC Toolset 11

安装:

sudo dnf install -y gcc-toolset-11

 临时启用 GCC 11:

source /opt/rh/gcc-toolset-11/enable

检查版本:

gcc --version
g++ --version

应该显示 gcc (GCC) 11.x.x

永久启用 GCC 11

如果你想每次登录时自动启用 GCC 11,可以将其添加到 ~/.bashrc

echo "source /opt/rh/gcc-toolset-11/enable" >> ~/.bashrc
source ~/.bashrc

6. 源码安装 cmake

#安装依赖:
sudo dnf install openssl-devel

#下载,解压,bootstrap,编译,安装
wget https://github.com/Kitware/CMake/releases/download/v3.31.6/cmake-3.31.6.tar.gz
tar zxf cmake-3.31.6.tar.gz
./bootstrap --parallel=128
make -j
sudo make install

7. 安装 ninja-build

    安装比较老的 ninja:(不推荐)

#这个方式安装的 ninja 版本比较旧
sudo dnf install ninja-build

编译最新的llvm-project 时,会报错:

ninja: error: build.ninja:3252: multiple outputs aren't (yet?) supported by depslog; bring this up on the mailing list if it affects you

    安装比较新的 ninja:

    直接下载最新的 ninja,它就一个可执行文件构成的,所以直接覆盖即可

NINJA_VERSION=$(curl -s https://api.github.com/repos/ninja-build/ninja/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')
wget https://github.com/ninja-build/ninja/releases/download/${NINJA_VERSION}/ninja-linux.zip
unzip ninja-linux.zip
sudo cp ninja /usr/bin/

8. 安装 python3.11

安装 python3.11

sudo dnf install -y python3.11
sudo dnf install -y python3.11-devel

安装并更新 pip

sudo dnf install python3.11-pip
sudo python3.11 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

安装 python3.11-pybind11-devel

sudo dnf install python3.11-pybind11-devel
sudo dnf install python3.11-pybind11

pip 从22.x更新到了25.x:

9. 安装 zlib-1.3.1

wget https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz

tar zxf zlib-1.3.1.tar.gz
CFLAGS="-fPIC" ./configure --prefix=/usr && make -j && sudo make install

#如果系统中原先没有安装 libz,则此步可免:
rm /usr/lib/x86_64-linux-gnu/libz.* && \
ln -s /usr/lib/libz.so.1.3.1 /usr/lib/x86_64-linux-gnu/libz.so.1 && \
ln -s /usr/lib/libz.so.1.3.1 /usr/lib/x86_64-linux-gnu/libz.so && \
ln -s /usr/lib/libz.a /usr/lib/x86_64-linux-gnu/libz.a

10. 安装 cuda sdk toolkits

    以 cuda 12.6 为例,x86_64 Linux 发行版任意选,直至选到 runfile,

下载:

wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run

安装: 

sudo sh cuda_12.6.0_560.28.03_linux.run

    这个情况,一般 Host 中已经安装了cuda sdk,docker 容器中的 cuda 版本最好跟 Host 中的cuda 的版本一致,基于接近的 cuda kernel mode driver。但是,在 docker 容器中安装cuda sdk时,选择不安装 Kernel Mode Driver,直接以来 Host 中的 kernel mode driver 即可。即,先 accept,然后用上下箭头键将光标移至 Driver,用空格键取消选中X。然后 将光标移至 Install,按回车键。

安装完毕的控制台输出:

11. 更多参考:

https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/9/html/managing_software_with_the_dnf_tool/proc_listing-software-packages_assembly_searching-for-rhel-9-content

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐