緣由
因 redhat 8.8 只有 python 3.8.16 可直接安裝, 而又需要採用最新版本的 python 3.8, 又不要直接利用 source tarball 利用 make install 安裝, 就自行做一個 python 3.8.20 SRPM 紀錄使用
操作過程
參考 python 3.8 文件: 建立RPM軟體包
下載 python 3.8.20 source tarball
依文件執行 python3 setup.py bdist_rpm
, 不管怎麼安裝 dependencies 就一直出錯, 錯誤狀況如下圖
看起來是無法正常 compile extension, 而且是一堆
所以改找合適的 python spec 檔, 再改成 3.8.20 版本
過程中, 有找到很舊的 spec 檔, 所以放棄
而利用 rpm python 3.8.20 rpm
等餵 google, 一直出現 fedora 41, 42 版本的 rpm 檔
後來找了找, 終於找到 srouce rpm 檔
– python3.8-3.8.20-1.fc41.src.rpm
– python3.8-3.8.20-1.fc42.src.rpm
所以就弄了一台 fedora 41, 確實可以利用 rpmbuild -ba python3.8.spec
把 source rpm 重新打包
想想, 那直接用 centos 8.8 / redhat 8.8 的 python 3.8.16 source rpm 改一改, 理論有機會包出 python 3.8.20 rpm 檔
確實改了一些東西, 但就不講了, 反正就是遇到錯誤就修一修
最後放出 source rpm: python38-3.8.20-1.el8.src.rpm
有需要就直接拿去用吧, 服用方法
編譯時, 會需要安裝相依套件, 依需求安裝
編譯後, 只要這 2個檔案, 就能用 rpm -i
進行安裝使用
– python38-3.8.20-1.el8.x86_64.rpm
– python38-libs-3.8.20-1.el8.x86_64.rpm
# download python38-3.8.20-1.el8.src.rpm 放置 /tmp
cd /tmp
rpm -i --nomd5 python38-3.8.20-1.el8.src.rpm
cd ~/rpmbuild/SPECS
rpmbuild -ba --nocheck python38.spec # 一定要有 --nocheck, 因 test_dtrace 會出錯, 但不想找問題, 還能能正常打包
安裝方式
# 假設 python38-3.8.20-1.el8.x86_64.rpm python38-libs-3.8.20-1.el8.x86_64.rpm 放置於 /tmp
yum install -y python38-pip-wheel python38-setuptools-wheel
cd /tmp
rpm -i python38-3.8.20-1.el8.x86_64.rpm python38-libs-3.8.20-1.el8.x86_64.rpm
結果如下