旧源消失的rpm包安装-devtoolset-9引出
装nvidia12.6驱动失败,以为是缺少devtoolset-9,找了一圈scl源无果,最后用豆包的脚本从另外一台centos7.6+devtoolset-9的主机上把rpm导出来装了,虽然仍然没有解决nvidia 12.6安装问题,但有必要记录这种应对源消失的包无法安装的变态应对方法。
1、导出已安装的包清单:
rpm -qa | grep devtoolset-9 > devtoolset-9-packages.txt
2、导出系统安装的rpm包,保存在/tmp/devtoolset-9-rpms目录
# 1. 创建存放目录 mkdir -p /tmp/devtoolset-9-rpms # 2. 遍历包列表,正确使用 rpmrebuild while read -r pkg; do # 提取纯包名(去掉版本号,避免匹配问题) pkg_name=$(echo "$pkg" | cut -d'-' -f1-$(echo "$pkg" | grep -o '-' | wc -l) | sed 's/-[0-9].*//') # 检查包是否真的安装 rpm -q "$pkg" > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Exporting $pkg..." # 核心修正:去掉 -p,直接用包名,-b 保持批量模式 sudo rpmrebuild -b "$pkg" > /tmp/rpmrebuild_$pkg.log 2>&1 # 查找生成的 RPM 包(默认路径) rpm_file=$(find /root/rpmbuild/RPMS/x86_64/ -name "$pkg_name*$(echo "$pkg" | cut -d'.' -f2-).rpm" | head -1) if [ -f "$rpm_file" ]; then mv "$rpm_file" /tmp/devtoolset-9-rpms/ echo "✅ Success: $pkg -> /tmp/devtoolset-9-rpms/" else echo "❌ Failed to find RPM for $pkg" fi # 清理临时文件 rm -rf /root/rpmbuild/RPMS/x86_64/"$pkg_name"*.rpm else echo "⚠️ Package $pkg not installed, skip..." fi done < devtoolset-9-packages.txt # 3. 查看结果 ls -l /tmp/devtoolset-9-rpms/
3、新机器上安装包
rpm -Uvh *.rpm --nodeps --force
浙公网安备 33010602011771号