Рейтинг:2

Ошибка сегментации при установке Python 3.5: surepip

флаг in

У меня возникла ошибка сегментации при попытке установить Python 3.5 на Ubuntu 21.10.

$ guettli@p15:~$ pyenv установить 3.5.8

Загрузка Python-3.5.8.tar.xz...
-> https://www.python.org/ftp/python/3.5.8/Python-3.5.8.tar.xz
Установка Python-3.5.8...

ОШИБКА ПОСТРОЙКИ (Ubuntu 21.10 с использованием python-build 20180424)

Проверьте или очистите рабочее дерево в /tmp/python-build.20211119144903.305257.
Результаты записываются в /tmp/python-build.20211119144903.305257.log.

Последние 10 строк журнала:
если тест "xupgrade" != "xno" ; тогда \
    обновление корпуса в \
        обновить) surepip="--upgrade" ;; \
        установить|*) обеспечитьpip="" ;; \
    эсак; \
     ./python -E -m гарантипип \
        $ensurepip --root=/ ; \
фи
Ошибка сегментации (дамп ядра)

То же самое происходит, когда я устанавливаю Python-3.5.10.tar.xz (без pyenv). Что я могу сделать сейчас?

Версия: Убунту 21.10
Вывод настроить: https://pastebin.com/rie17s8Z
Вывод делать: https://pastebin.com/F3C4evR6
Вывод сделать установку: https://paste2.org/LKxHUYkM

С PYTHONFAULTHANDLER:

guettli@p15:~/Downloads/Python-3.5.10$ PYTHONFAULTHANDLER=1 LANG=C python3.5 -m surepip
Фатальная ошибка Python: ошибка сегментации

Текущий поток 0x00007fb703b40740 (сначала самый последний вызов):
  Файл "/usr/local/lib/python3.5/ctypes/__init__.py", строка 276 в _reset_cache
  Файл "/usr/local/lib/python3.5/ctypes/__init__.py", строка 541 в <module>
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap_external>", строка 697 в exec_module
  Файл "<frozen importlib._bootstrap>", строка 673 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/usr/local/lib/python3.5/uuid.py", строка 464 в <module>
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap_external>", строка 697 в exec_module
  Файл "<frozen importlib._bootstrap>", строка 673 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/tmp/tmppx73eqwt/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/requests/packages/urllib3/filepost.py", строка 4 в <module>
  Файл "<frozen importlib._bootstrap>", строка 634 в _load_backward_compatible
  Файл "<frozen importlib._bootstrap>", строка 664 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/tmp/tmppx73eqwt/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/requests/packages/urllib3/request.py", строка 7 в <module>
  Файл "<frozen importlib._bootstrap>", строка 634 в _load_backward_compatible
  Файл "<frozen importlib._bootstrap>", строка 664 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/tmp/tmppx73eqwt/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/requests/packages/urllib3/connectionpool.py", строка 41 в <module>
  Файл "<frozen importlib._bootstrap>", строка 634 в _load_backward_compatible
  Файл "<frozen importlib._bootstrap>", строка 664 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/tmp/tmppx73eqwt/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/requests/packages/urllib3/__init__.py", строка 8 в <module>
  Файл "<frozen importlib._bootstrap>", строка 634 в _load_backward_compatible
  Файл "<frozen importlib._bootstrap>", строка 664 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap>", строка 1015 в _handle_fromlist
  Файл "/tmp/tmppx73eqwt/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/requests/packages/__init__.py", строка 27 в <module>
  Файл "<frozen importlib._bootstrap>", строка 634 в _load_backward_compatible
  Файл "<frozen importlib._bootstrap>", строка 664 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap>", строка 943 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap>", строка 943 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/tmp/tmppx73eqwt/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/requests/__init__.py", строка 62 в <module>
  Файл "<frozen importlib._bootstrap>", строка 634 в _load_backward_compatible
  Файл "<frozen importlib._bootstrap>", строка 664 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap>", строка 943 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap>", строка 943 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "<frozen importlib._bootstrap>", строка 222 в _call_with_frames_removed
  Файл "<frozen importlib._bootstrap>", строка 943 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/tmp/tmppx73eqwt/pip-9.0.1-py2.py3-none-any.whl/pip/__init__.py", строка 21 в <module>
  Файл "<frozen importlib._bootstrap>", строка 634 в _load_backward_compatible
  Файл "<frozen importlib._bootstrap>", строка 664 в _load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 957 в _find_and_load_unlocked
  Файл "<frozen importlib._bootstrap>", строка 968 в _find_and_load
  Файл "/usr/local/lib/python3.5/ensurepip/__init__.py", строка 40 в _run_pip
  Файл "/usr/local/lib/python3.5/ensurepip/__init__.py", строка 116 в начальной загрузке
  Файл "/usr/local/lib/python3.5/ensurepip/__init__.py", строка 209 в _main
  Файл "/usr/local/lib/python3.5/ensurepip/__main__.py", строка 4 в <module>
  Файл "/usr/local/lib/python3.5/runpy.py", строка 85 в _run_code
  Файл "/usr/local/lib/python3.5/runpy.py", строка 193 в _run_module_as_main
Ошибка сегментации (дамп ядра)
user535733 avatar
флаг cn
Что говорит журнал?
guettli avatar
флаг in
@ user535733 в приведенном выше выводе вы видите последние десять строк вывода. В строках выше этих десяти строк нет ничего уместного.
user535733 avatar
флаг cn
@guetti, действительно. Но возникает вопрос *почему сценарий оболочки выводится в ваш журнал?* Посмотрите на более чем последние 10 строк.
флаг in
Есть ли что-то уникальное в вашей установке? Я установил 3.5.10 (через `.tar.xz`) на 20.04 и установку 21.04 на виртуальной машине без жалоб. Не уверен, что может помешать вам установить эту конкретную версию...
Carles Mateo avatar
флаг cn
Я подозреваю, что некоторые зависимости для сборки этой версии Python несовместимы с Ubuntu 21.10. Вам нужна версия 3.5.8? Нельзя ли использовать более современную версию, например 3.8? Я бы попробовал, если бы он работал в контейнере Docker с Ubuntu 20.04 LTS.
guettli avatar
флаг in
@CarlesMateo та же ошибка возникает, если я использую Python 3.5.10. К сожалению, для этого случая мне нужен Python 3.5.
флаг ru
возможно, вы захотите знать, что современный Django не работает должным образом на Python 3.5, поэтому, если вы застряли на старом django, в котором много дыр в безопасности, у вас здесь более серьезная проблема.
abu-ahmed al-khatiri avatar
флаг in
я установил 3.5.8 через .tar.xz без жалоб. возможно, вам нужно `echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'экспорт PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc`
guettli avatar
флаг in
@ abu-ahmedal-khatiri вы делали это в Ubuntu 21.10?
abu-ahmed al-khatiri avatar
флаг in
@guettli я 20.04
Рейтинг:4
флаг in

Я нашел решение здесь: https://giters.com/pyenv/pyenv/issues/1889

Шаг 1: создайте файл segfault.patch:

--- Включить/objimpl.h
+++ Включить/objimpl.h
@@ -250,7 +250,7 @@
         объединение _gc_head *gc_prev;
         Py_ssize_t gc_refs;
     } ГК;
- двойной манекен; /* принудительное выравнивание в худшем случае */
+ длинный двойной манекен; /* принудительное выравнивание в худшем случае */
 } PyGC_Head;

 внешний PyGC_Head *_PyGC_generation0;
--- Объекты/obmalloc.c
+++ Объекты/obmalloc.c
@@ -643,8 +643,8 @@
  *
  * Вы не должны изменять это, если не знаете, что делаете.
  */
-#define ВЫРАВНИВАНИЕ 8 /* должно быть 2^N */
-#определить ALIGNMENT_SHIFT 3
+#define ВЫРАВНИВАНИЕ 16 /* должно быть 2^N */
+#определить ALIGNMENT_SHIFT 4

 /* Возвращаем количество байтов в классе размера I в виде uint. */
 #define INDEX2SIZE(I) (((uint)(I) + 1) << ALIGNMENT_SHIFT)

Шаг 2: примените патч:

user@host:Python-3.5.10$ patch -p0 < segfault.patch

Шаг 3: сделайте && sudo make install

abu-ahmed al-khatiri avatar
флаг in
я уже на Импише. Я попробовал, проголосовал за отличный ответ.
Рейтинг:1
флаг cn

Я попробовал это и получил ту же ошибку; тоже пробовал 3.5.10 лучший в этой линейке релизов и все так же. Я предположил, что это проблема с pyenv, и попробовал 2.2.0, но результат тот же. Поэтому я загрузил Python 3.5.8 и приступил к установке вручную (в каталоге установки см. Python документы) с:

./configure --with-pydebug --enable-optimizations --with-lto

делать

Но в делать питон зациклился на тестировании дистрибутива. Поэтому совет: не используйте никакие параметры с ./настроить. Затем запустите:

делать

судо сделать установить или же sudo сделать altinstall

В этой сборке 3.5.8 есть более одной проблемы, из которых основная причина, по которой pyenv не работает, связана с этим:

/home/<me>/Python-3.5.8/Modules/nismodule.c:17:10: фатальная ошибка: rpc/rpc.h: Нет такого файла или каталога 17 | #include <rpc/rpc.h>

Затем используйте Pycharm для создания проекта или просто используйте venv или virtulenv.

guettli avatar
флаг in
Спасибо, что воспроизвели. К сожалению, я все равно получаю seg-fault, даже если я использую только что извлеченные исходники и не предоставляю никаких параметров для `настройки`. Это происходит и во время `sudo make altinstall`.
mike mcleod avatar
флаг cn
@guettli, не могли бы вы дать больше информации: что именно вы сделали и что вышло? Возможно, в сборке 3.5.8 есть фатальная ошибка, но я все еще могу создать исполняемый файл.
guettli avatar
флаг in
Вы сказали, что можете воспроизвести ошибку. Хороший. Я не делаю ничего особенного. Просто распакуйте, настройте, сделайте, sudo make install. Я загрузил логи каждого шага в вопрос.
Рейтинг:1
флаг pk

Миниконда

Я предлагаю установить miniconda для управления вашей виртуальной средой и установить нужную версию Python во вновь созданную среду.

На мой взгляд, это достойные решения, не такие раздутые, как анаконда, и вы все равно можете использовать pip, поэзию или любое другое программное обеспечение для управления пакетами, которое вам нравится.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.