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
sudo dnf install ninja-build
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.gztar 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