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