LINUX.ORG.RU

anaconda: боль и унижение

 , , , ,


0

2

По ряду причин, имеет место машина с древним центосом, где нет возможности обновить это или как то сделать комфортней. Ну ок, безуспешно пытаюсь заставить код хотя бы собраться на этой машине. Загнал все зависимости в FetchContent, ок, выкачивает, хоть чуть чуть легче. Но вот пайтон всё равно приходится иметь внешний — и это боль... Ok, создаём окружение:

conda create -n build_ltp python=3.10
Устанавливаем всё что нужно
conda install -c conda-forge cmake gxx gcc python-devtools
И конечно вручную прописываем переменные окружения, потому что автоматически подхватить то что нужно это не достаточно инновационно
export CMAKE_C_COMPILER=gcc && export CMAKE_CXX_COMPILER=g++ && export CMAKE_MAKE_PROGRAM=/usr/bin/make
ага, и мейк в придачу, ага, потмоу что по умолчанию там будет какой то кривой gmake. Ну и конечно, по итогу коптелятор не найдёт хедеров:
Could NOT find Python3 (missing: Development Development.Module Development.Embed)
А почему?
anaconda3/envs/ltp_build/include/python3.10/python3.10
Ага, два раза, BECAUSE REASONS.

Посему вопрос, если ли какие ни будь альтернативы, которые <<просто работают>>. Без всей вот этой мутотни, что бы был просто более-менее современный компилтор, хедеры где надо и даже не пыталось лезть и использовать что то из системы?

$cast AntonI

★★★★★

Последнее исправление: thunar (всего исправлений: 4)

А докер случайно не для этого делали? Или это другое и докер не может в такое?

ЗЫ

Софт на старом энтерпрайзе не разворачивал, мне тут просто интересно.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от Shadow

Так ему не охота сборочную среду поднимать с нуля, хочется воспользоваться чьими нибудь наработками. А у себя локально в виртуалке или на сервере это дело десятое

cobold ★★★★★
()
Ответ на: комментарий от peregrine

А чем здесь докер поможет? Берешь базовый образ от нужной версии центоси и дальше точно так же через анаконду сетапишь нужный питон и прочие сборочные зависимости, так же подсовываешь в нужные места нужные переменные окружения и аргументы командной строки. Сам сборочный пайплайн докер ему не построит

cobold ★★★★★
()
Ответ на: комментарий от cobold

А чем здесь докер поможет?

Без всей вот этой мутотни, что бы был просто более-менее современный компилтор, хедеры где надо и даже не пыталось лезть и использовать что то из системы?

докер тут как раз решает его проблему. Как соберешь, так и будет работать. Другой вопрос, что до конца не ясно что автор вообще пытается делать таким образом.

v9lij ★★★★★
()
Ответ на: комментарий от v9lij

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

cobold ★★★★★
()

Посему вопрос, если ли какие ни будь альтернативы, которые «просто работают»

Сначала вы создаете окружение build_ltp а в конце смотрите на ltp_build окружение (anaconda3/envs/ltp_build/include/python3.10/python3.10)

Выберите какое-то одно окружение с третьим питоном:

conda activate build_ltp

И попробуйте собрать заново, предварительно сделав clean_all. Если необходимо, укажите полный путь к конкретному интерпретатору python c помощью -DPython_EXECUTABLE=....

Obezyan
()

И конечно вручную прописываем переменные окружения, потому что автоматически подхватить то что нужно это не достаточно инновационно

Вот тут точно ошибка какая-то. Нужна корректная подгрузка переменных окружения через всякие activate или source команды.

EXL ★★★★★
()

С ..дцатого раза таки удалось сбрать. Итак, при создании нового окружения ему обязательно надо указывать текущую версию пайтона, по умолчанию он создаёт вообще 3.6, а если вручную указать отличную от основной — то будет беда с хедерами. Как их кошерно устанавливать так и не понял, ну хоть с родными анакондавскими собрало...

И конечно эта феерия с make/gmake. Обязательно надо указывать -DCMAKE_MAKE_PROGRAM=/usr/bin/make, иначе оно стучится в gmake и не ругается и не работает. При том что gmake это симлинк на make. Как такого поведения добились — загадка века. Впрочем, это, видимо, так называемая норма для rh-based дистрибутивов. Вот и хочется от этой нормы держаться подальше в виртуальном окружении.

thunar ★★★★★
() автор топика
Последнее исправление: thunar (всего исправлений: 2)