【轻量化】升级python3.7.9参考文档(麒麟SP1)
【摘要】 一般地麒麟SP1系统下,采用TPOPS(轻量化)安装GaussDB实例时,强制要求python3的版本为3.7.9。
1 问题现象
在华为云上购买ESC实例默认为麒麟SP1的系统,Python3版本为3.7.4。在使用TPOPS部署GaussDB实例时,会报host detection[Python3,cgconfig]not pass。
2 准备环境
以下用root用户登入系统,执行以下命令安装依赖包。
#yum -y install make rng-tools perl libffi-devel sqlite-devel openssl-devel python3-devel gcc-c++ libcgroup libcgroup-tools
#systemctl restart rngd
#systemctl restart cgconfig
3 解决iptables报错
检查service iptables save是否报错,如果报错请执行以下命令修复,否则会影响安装实例。
yum remove iptables
yum install iptables-services
yum install initscripts
service iptables save
4 安装python
要求:以上两步先完成!!
注意:如果需重新编译安装python3.7.9,且安装目录更换,则需要删除原软链信息,一般在/usr/local/bin,执行ls -l /usr/local/bin/python* 和 ls -l /usr/local/bin/pip*,如果发现软链连接到旧版本python目录,请删除后往下操作。
新编译安装操作如下:
mkdir -p /usr/local/python3
tar -zxvf Python-3.7.9.tgz
cd Python-3.7.9
./configure --prefix=/usr/local/python3 --enable-optimizations --enable-shared
# make -sj物理机建议这个命令;虚拟机建议 make -j8 或者 j 16 ,该数字看cpu核数
make -sj && make install
ln -sf /usr/local/python3/lib/libpython3.7m.so.1.0 /usr/lib64/libpython3.7m.so.1.0
ln -sf /usr/lib64/libpython3.7m.so.1.0 /usr/lib64/libpython3.7m.so
ln -sf /usr/local/python3/lib/libpython3.so /usr/lib64/libpython3.so
# 如报错已存在,忽略跳过
ln -s /usr/lib64/libffi.so.6 /usr/lib64/libffi.so.7
rm -f /usr/bin/pip /usr/bin/pip3 /usr/bin/python /usr/bin/python3
ln -s /usr/local/python3/bin/pip /usr/local/bin/pip
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
ln -s /usr/local/python3/bin/pip3.7 /usr/local/bin/pip3.7
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/bin/python3 /usr/bin/python
chmod -R 755 /usr/local/python3
chmod 755 -R /usr/local/lib64/python3.7
chmod 755 -R /usr/local/lib/python3.7
注意事项: 一般是麒麟sp1
- 安装完新python后,如果yum不可用需修复
cp -rf /usr/lib/python3.7/site-packages/dnf* /usr/local/python3/lib/python3.7/site-packages
cp -rf /usr/lib/python3.7/site-packages/iniparse /usr/local/python3/lib/python3.7/site-packages
cp -rf /usr/lib64/python3.7/site-packages/libdnf /usr/local/python3/lib/python3.7/site-packages
cp -rf /usr/lib64/python3.7/site-packages/gpg /usr/local/python3/lib/python3.7/site-packages
cp -rf /usr/lib64/python3.7/site-packages/libcomps /usr/local/python3/lib/python3.7/site-packages
cp -rf /usr/lib64/python3.7/site-packages/rpm /usr/local/python3/lib/python3.7/site-packages
cp -rf /usr/lib64/python3.7/site-packages/hawkey /usr/local/python3/lib/python3.7/site-packages
cp -rf /lib64/python3.7/curses /usr/local/python3/lib/python3.7/site-packages
cp -rf /usr/lib64/python3.7/lib-dynload/_curses.cpython-37m-aarch64-linux-gnu.so /usr/local/python3/lib/python3.7/lib-dynload/
上述操作后 yum 仍不可用,执行 yum list 查看报错原因
可能原因一:/usr/lib64/libffi.so.7 软链指向文件不存在
解决方法:
执行 ll | grep /usr/lib64/libffi.so 找到环境有的 libffi.so;
执行 ln -s /usr/lib64/{上一步查到的文件名} /usr/lib64/libffi.so.7
2. 主机上线完成后请检查 - 沙箱内的python是否正常
如果手动安装过 python,如下命令检查沙箱内的 python 是否正常
su - Ruby
chroot /var/chroot
python
如果报不存在,或者引入模块失败,在节点上以 root 执行如下命令
- 检查 /var/chroot/usr/bin/python 的软链是否正常
ls -l /var/chroot/usr/bin/python - 将自行安装的 python 拷贝到沙箱
如果自定义安装的python包放在 /usr/local/python*,那么在 root 下执行mkdir -p -m 755 /var/chroot/usr/local/ cp -fr /usr/local/python* /var/chroot/usr/local/ chmod -R 755 /var/chroot/usr/local/python* cp /usr/lib64/libpython3.7m.so.1.0 /var/chroot/usr/lib64/
执行完检查沙箱内Python是否正常。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)