【轻量化】升级python3.7.9参考文档(麒麟SP1)

举报
HuaweiCloudDeveloper 发表于 2025/01/10 16:06:57 2025/01/10
3.6k+ 0 0
【摘要】 一般地麒麟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

  1. 安装完新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 执行如下命令

  1. 检查 /var/chroot/usr/bin/python 的软链是否正常
    ls -l /var/chroot/usr/bin/python
  2. 将自行安装的 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

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。