制作python3.7 离线rpm包
FPM环境安装
安装依赖
yum -y install rpm-build git
rpm -aq ruby ruby-devel rubygems
安装rvm
获取密钥(有可能需要执行两次)
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
下载rvm.sh脚本
curl -sSL https://get.rvm.io | bash -s stable
根据提示加载rvm.sh环境变量
source /etc/profile.d/rvm.sh
列出所有版本
rvm list known
输入版本号直接安装ruby
rvm install 2.4.10
安装fpm
gem install fpm
制作python3.7 离线rpm包
目录结构
├─dependent-rpms.tgz ------- // python3需要的依赖包
├─fpm-create.sh ------------ // 编译rpm脚本
├─install_py37.sh ---------- // 安装rpm过程脚本
├─openssl-1.1.1k.tar.gz ---- // openssl源码包
└─Python-3.7.10.tar.xz ----- // python3.7源码包
dependent-rpms.tgz
yum install -y yum-plugin-downloadonly
yum install -y --downloadonly --downloaddir=rpms zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
fpm-create.sh
fpm -t rpm -s dir -f -m poros -n python3.7 -v Poros --iteration 0507.el7 --after-install install_py37.sh openssl-1.1.1k.tar.gz=/usr/local/ Python-3.7.10.tar.xz=/usr/local/ dependent-rpms.tgz=/usr/local
install_py37.sh
#!/bin/sh
date_str=`date +%F_%T`
function install_openssl(){
if [ -d /usr/local/openssl ];then
mv /usr/local/openssl /usr/local/openssl-$date_str
fi
echo -e "\033[33m====> 安装openssl\033[0m"
cd /usr/local
tar -xzvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k/
./config --prefix=/usr/local/openssl shared zlib
make && make install
# 加入系统环境变量
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib" >> /etc/profile
source /etc/profile
}
function install_py37(){
if [ -d /usr/local/python37 ];then
mv /usr/local/python37 /usr/local/python37-$date_str
fi
echo -e "\033[33m====> 安装python3.7\033[0m"
cd /usr/local
tar -xJvf Python-3.7.10.tar.xz
cd Python-3.7.10/
./configure --prefix=/usr/local/python37 --with-openssl=/usr/local/openssl
make && make install
if [ -e /usr/local/bin/python3.7 ];then
/bin/rm /usr/bin/python3.7
fi
if [ -e /usr/bin/pip3.7 ];then
/bin/rm /usr/bin/pip3.7
fi
ln -s /usr/local/python37/bin/python3.7 /usr/bin/python3.7
ln -s /usr/local/python37/bin/pip3.7 /usr/bin/pip3.7
}
function clean(){
echo -e "\033[33m====> 清除文件\033[0m"
/bin/rm -rf /usr/local/{openssl-1.1.1k.tar.gz,Python-3.7.10.tar.xz,dependent-rpms.tgz}
/bin/rm -rf /usr/local/openssl-1.1.1k
/bin/rm -rf /usr/local/Python-3.7.10
/bin/rm -rf /usr/local/dependent-rpms
}
function install_deprpms(){
echo -e "\033[33m====> 安装依赖\033[0m"
cd /usr/local && tar -xzvf dependent-rpms.tgz
cd /usr/local/dependent-rpms && chmod 755 * && rm -rf /var/lib/rpm/.rpm.lock && sudo rpm -ivh *.rpm --nodeps --force
}
install_deprpms
install_openssl
if [ $? == 0 ];then
install_py37
if [ $? == 0 ];then
echo -e "\033[32m安装python3.7成功!\033[0m"
clean
exit 0
else
echo -e "\033[31m安装python3.7失败\033[0m"
exit 1
fi
else
echo -e "\033[31m安装openssl失败!\033[0m"
exit 1
fi