-1

Я создаю RPM для распространения среды conda, и я придумал это решение:

Я был в состоянии сделать это. Вот мой файл .spec из ответа Stackexchange.

Подводя итог: я использую фазу установки, чтобы просто распаковать зависимости и скрипт установки, и в% post я запускаю этот скрипт, который создает файлы в /opt /miniconda. В связи с этим мне нужно вручную указать шаги по очистке среды при удалении, а также вручную проверить, все ли работает правильно.

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

1 ответ1

0

Это очень плохая практика.

Несколько указателей:

Вместо:

if [ -f /opt/miniconda/bin/python ]; then
    echo "Python is there!"
    echo "Checking version..."

    python_version="$(/opt/miniconda/bin/python --version)"
    if [[ "3.6.0" =~ "$python_version" ]]; then

Вы должны поставить либо

Requires: python >= 3.6.0

Если вам достаточно системного Python или вы создаете RPM со своим собственным Python, то что-то вроде:

Requires: miniconda-python >= 3.6.0

Аналогично для всех этих модулей.

Мне кажется, что вы не знаете разницу между% install и% post. Поэтому, пожалуйста, прочитайте https://stackoverflow.com/questions/34631942/how-to-run-and-interact-with-a-script-from-within-an-rpm/34634718#34634718 Выполните всю часть перемещения в% install и вам не нужно% post part вообще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .