pyenv:构建失败(Fedora34使用python构建20180424)

pyenv:构建失败(Fedora34使用python构建20180424),python,fedora,pyenv,Python,Fedora,Pyenv,我需要帮助通过pyenv安装python $ pyenv -v pyenv 1.2.27 我尝试安装3.6.8版 $ pyenv install 3.6.8 我出错了 正在下载Python-3.6.8.tar.xz。。。 ->正在安装Python-3.6.8。。。 /home/dn121283mvp1/.pyenv/plugins/python build/bin/python build:line 1804:355307分段错误(堆芯转储)“$PYTHON_BIN”-s-m ensurep

我需要帮助通过pyenv安装python

$ pyenv -v
pyenv 1.2.27
我尝试安装3.6.8版

$ pyenv install 3.6.8
我出错了

正在下载Python-3.6.8.tar.xz。。。 ->正在安装Python-3.6.8。。。 /home/dn121283mvp1/.pyenv/plugins/python build/bin/python build:line 1804:355307分段错误(堆芯转储)“$PYTHON_BIN”-s-m ensurepip${ensurepip_opts}>/dev/null 2>&1从安装pip . /home/dn121283mvp1/.pyenv/plugins/python build/bin/python build:line 1785:355338分段错误(内核转储)${PYTHON_BIN}“-s “${get\u pip}”${get\u pip\u OPTS}1>&4 2>&1错误:无法安装pip 通过get-pip.py

构建失败(Fedora34使用python构建20180424)

现场检查或清理工作树 /tmp/python-build.20210506064823.343245结果记录到 /tmp/python-build.20210506064823.343245.log

最后10行日志:安装|*)ensurepip=“”;\esac;\/python -E-m ensurepip\$ensurepip--root=/;\fi查找链接:/tmp/tmp4a3uh2fu收集设置工具收集pip安装 收集的软件包:setuptools,pip已成功安装pip-18.1 设置工具-40.6.2


我需要3.6.8版才能安装

您可以将补丁传递给pyenv以修复此问题

我在这里发布了一个解决方案

您需要修补一些Python 3.6对象分配代码以使用16字节对齐。这似乎在Python3.7中得到了修复

在将补丁提供给pyenv之前,必须调整补丁以不使用父目录名
a
b

在Python3.6.8上测试,因为这正是我所需要的

$ cat alignment.patch
--- Include/objimpl.h
+++ Include/objimpl.h
@@ -250,7 +250,7 @@
         union _gc_head *gc_prev;
         Py_ssize_t gc_refs;
     } gc;
-    double dummy;  /* force worst-case alignment */
+    long double dummy;  /* force worst-case alignment */
 } PyGC_Head;

 extern PyGC_Head *_PyGC_generation0;
--- Objects/obmalloc.c
+++ Objects/obmalloc.c
@@ -643,8 +643,8 @@
  *
  * You shouldn't change this unless you know what you are doing.
  */
-#define ALIGNMENT               8               /* must be 2^N */
-#define ALIGNMENT_SHIFT         3
+#define ALIGNMENT               16               /* must be 2^N */
+#define ALIGNMENT_SHIFT         4

 /* Return the number of bytes in size class I, as a uint. */
 #define INDEX2SIZE(I) (((uint)(I) + 1) << ALIGNMENT_SHIFT)
$ pyenv install --patch 3.6.8 < alignment.patch
Downloading Python-3.6.8.tar.xz...
-> https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
Installing Python-3.6.8...
patching file Include/objimpl.h
Hunk #1 succeeded at 255 (offset 5 lines).
patching file Objects/obmalloc.c
Hunk #1 succeeded at 650 (offset 7 lines).
Installed Python-3.6.8 to /home/asdf/.pyenv/versions/3.6.8