From b8deb3ca1a6c6dc22359d3194b3fa08bdd525eef Mon Sep 17 00:00:00 2001 From: "Ricardo.Cui" Date: Mon, 9 Nov 2020 15:42:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E7=89=88?= =?UTF-8?q?=E6=9C=ACpython=E7=BC=96=E8=AF=91=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/Ricardo/support-python3.x-Version.md | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 content/zh/post/Ricardo/support-python3.x-Version.md diff --git a/content/zh/post/Ricardo/support-python3.x-Version.md b/content/zh/post/Ricardo/support-python3.x-Version.md new file mode 100644 index 00000000..677065cc --- /dev/null +++ b/content/zh/post/Ricardo/support-python3.x-Version.md @@ -0,0 +1,139 @@ ++++ +title = "兼容多版本Python的第三方库编译说明" +date = "2020-11-9" +tags = ["兼容多版本Python的第三方库编译说明"] +archives = "2020-11" +author = "Ricardo.Cui" +summary = "兼容多版本Python的第三方库编译说明" +img = "/zh/post/lijun/title/title.png" +times = "19:30" ++++ + + +### 概述 + +本文描述了openGauss数据库的第三方库,如何在CentOS系统上编译出支持多版本python环境的第三方库。 + +**硬件规格:** +CPU: Intel(R) Xeon(R) Gold 6266C CPU @ 3.00GHz 7核 +内存: 32G + +**软件规格:** +操作系统: CentOS Linux release 7.6.1810 (Core) +数据库: openGauss 1.0.1 +Python版本:3.7.7 + +--- + +### 编译步骤 + +若希望编译出的支持多版本安装的第三方库,只需在所需环境下单独编译CFFI模组,并将其放入openGauss-third_party_binartlibs//dependency/centos7.6_x86_64/install_tools目录下即可,下面为详细过程。 + +**1.环境准备** + +首先确定所用系统为CentOS x86_64, 接着安装编译所需组件: +>openSSL +openSSL-devel +libaio-devel +ncurses-devel +pam-devel +libffi-devel +python3-devel +libtool + +建议采用yum install *** 方式安装。 + +**2.编译安装Python3.X.X** +官网下载所需的Python3.X.X源代码并解压。进入解压出来的python目录用运行如下命令: +>`vi Modules/Setup.dist` + +搜索SSL并且取消注释如下代码: + +>`# Socket module helper for socket(2)` +`_socket socketmodule.c` +> +>`# Socket module helper for SSL support; you must comment out the other` +`# socket line above, and possibly edit the SSL variable:` +`#SSL=/usr/local/ssl` +`_ssl _ssl.c ` +` -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl` +` -L$(SSL)/lib -lssl -lcrypto` + +如果SSL不是在默认路径,则需修改SSL路径为安装目录。 + +编译安装python到指定目录: +>`./configure --prefix=/usr/local/python3.x.x/ --enable-shared` +`make && make install` + +安装成功后运行`python -V`命令查看python版本是否为所需版本,若不是请去/usr/bin目录修改python软链接使其指向正确的python安装目录。 + +**3.编译第三方库** +从社区下载的第三方编译源码openGauss-third_party, +进入openGauss-third_party/dependency/build,打开build_dependency.sh脚本,注释掉不需要编译的第三方组件: +>... +`function build_pylib()` +`{` +`# build_item six` +`# build_item pycparser` +` build_item cffi` +`# build_item bcrypt` +`# build_item idna` +`# build_item ipaddress` +`# build_item netifaces` +`# build_item pynacl` +`# build_item asn1crypto` +`# build_item cryptography` +`# build_item pyOpenSSL` +`# build_item paramiko` +`# build_item psutil` +`# build_item pyasn1` +` if [ -d $BUILD_SCRIPT_PATH/../install_comm ];then` +` rm -rf $BUILD_SCRIPT_PATH/../install_comm` +` fi` +`}` +... + +注释掉Main函数中的 +>... +`# build_first` +`# build_second` +` build_pylib` +... + +再进入openGauss-third_party/build文件夹下,打开build_all.sh脚本,在最下方注释掉以下几行: +>`# build_item buildtools` + `build_item dependency` +`# build_item platform` + +在build目录下运行脚本: +>`cd ..` +`sh build_all.sh` + +binarylibs会生成到openGauss-third_party同级目录下,名为binarylibs。如果部分组件构建失败,可以检查日志。 +将binarylibs拷贝至openGauss-third_party_binarylibs: +>`\cp -r binarylibs/ openGauss-third_party_binarylibs/` + +如果希望在binarylibs中支持多个python版本,则需在多个版本python中重复以上步骤,编译对应版本的cffi,并将编译出的文件,放入openGauss-third_party_binarylibs/dependency/centos7.6_x86_64/install_tools目录下 + +``` +drwxr-xr-x 2 root root 4096 Nov 3 15:24 bcrypt +drwxr-xr-x 2 root root 4096 Nov 3 15:24 cffi +-rw-r--r-- 1 root root 289 Nov 3 15:24 _cffi_backend.py +-rwxr-xr-x 1 root root 189816 Nov 3 15:24 _cffi_backend.so_UCS2_3.6 +-rwxr-xr-x 1 root root 189816 Nov 4 09:21 _cffi_backend.so_UCS2_3.7 +-rwxr-xr-x 1 root root 189816 Nov 3 15:24 _cffi_backend.so_UCS4_3.6 +-rwxr-xr-x 1 root root 189816 Nov 4 09:21 _cffi_backend.so_UCS4_3.7 +drwxr-xr-x 4 root root 4096 Nov 3 15:26 cryptography +drwxr-xr-x 4 root root 4096 Nov 3 15:26 nacl +drwxr-xr-x 2 root root 4096 Nov 3 15:25 netifaces +drwxr-xr-x 2 root root 4096 Nov 3 15:26 psutil +``` + + + + + + + + + -- Gitee From 2e2919d0c9901216d81c435b0b079ecaf2429ab8 Mon Sep 17 00:00:00 2001 From: "Ricardo.Cui" Date: Thu, 19 Nov 2020 16:47:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?CentOSd=E5=A4=9A=E7=89=88=E6=9C=ACpython?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E7=BC=96=E8=AF=91=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/zh/post/Ricardo/support-python3.x-Version.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/zh/post/Ricardo/support-python3.x-Version.md b/content/zh/post/Ricardo/support-python3.x-Version.md index 677065cc..1ad70ff1 100644 --- a/content/zh/post/Ricardo/support-python3.x-Version.md +++ b/content/zh/post/Ricardo/support-python3.x-Version.md @@ -1,6 +1,6 @@ +++ title = "兼容多版本Python的第三方库编译说明" -date = "2020-11-9" +date = "2020-11-09" tags = ["兼容多版本Python的第三方库编译说明"] archives = "2020-11" author = "Ricardo.Cui" @@ -12,7 +12,7 @@ times = "19:30" ### 概述 -本文描述了openGauss数据库的第三方库,如何在CentOS系统上编译出支持多版本python环境的第三方库。 +本文描述了如何在CentOS系统上编译出支持多版本python环境的openGauss-third_party第三方库。 **硬件规格:** CPU: Intel(R) Xeon(R) Gold 6266C CPU @ 3.00GHz 7核 -- Gitee