Мы создали rpm-файл приложения, используя fpm.
Там мы установили python3 в качестве зависимости, поэтому он устанавливается автоматически перед основным rpm.
Но это установка 3.7. Чтобы заменить это на 3.8, нам нужно проверить версию ОС, прежде чем это будет Centos или awslinux, и на основе этого нам нужно установить определенный rpm.
Итак, я сохранил эти условные блоки в скрипте preinst и передал в параметр --before-install.
Но он застревает во время установки rpm.
Итак, когда я проверяю подробный режим.Я обнаружил, что это не работает с preinst.
Причина в том, что ptyhon install не может применить блокировку и продолжить установку, поскольку проект уже заблокировал ее.
RPM: ошибка: невозможно создать блокировку транзакции в /var/lib/rpm/.rpm.lock (ресурс временно недоступен)
Ошибка: Не удалось запустить транзакцию.
+ echo 'Обнаружен Centos'
Centos обнаружен
+ sudo yum установить -yq python38
RPM: ошибка: невозможно создать блокировку транзакции в /var/lib/rpm/.rpm.lock (ресурс временно недоступен)
Ошибка: Не удалось запустить транзакцию.
Любые предложения, которые вы можете предоставить
Чтобы быть более конкретным, пожалуйста, найдите подробности ниже.
Инструмент, используемый для создания rpm: футов в минуту
Мне нужно установить python3.8 в качестве зависимости от rpm приложения.
Если я установлю это как зависимость, используя -d python3, будет установлена версия 3.7 на amazon linux и 3.6 на centos 8.
Чтобы использовать версию 3.8, перед установкой пакета необходимо выполнить еще несколько шагов.
Итак, я удалил python3 из раздела зависимостей и добавил --before-install в качестве сценария оболочки.
Это сценарий оболочки, который я хранил там.
#!/бин/баш
echo "Начало подготовки"
echo "Проверка версии ОС"
DISTRO=$(cat /etc/*-release | grep -w NAME | cut -d= -f2 | tr -d '"' | tr '[:upper:]' '[:lower:]')
если [[ "$DISTRO" =~ "centos linux" ]]; тогда
эхо "Обнаружен Centos"
установить судо-юм -yq python38
elif [[ "$DISTRO" =~ "amazon linux" ]]; тогда
echo "обнаружен amazon linux"
sudo yum установить -yq amazon-linux-extras
sudo amazon-linux-extras включить python3.8
установить судо-юм -yq python3.8
elif [[ "$DISTRO" =~ "ubuntu" ]]; тогда
эхо "обнаружена Ubuntu"
sudo apt установить pyhton3 -yq
еще
echo "Ни centos, ни amazon linux 2"
фи
Он запускает скрипт, но зависает при установке python из сценария оболочки.
RPM: ошибка: невозможно создать блокировку транзакции в /var/lib/rpm/.rpm.lock (ресурс временно недоступен)
Ошибка: Не удалось запустить транзакцию.
+ echo 'Обнаружен Centos'
Centos обнаружен
+ sudo yum установить -yq python38
RPM: ошибка: невозможно создать блокировку транзакции в /var/lib/rpm/.rpm.lock (ресурс временно недоступен)
Ошибка: Не удалось запустить транзакцию.
Любые предложения о том, как это исправить?
Мое требование - установить python3.8 как часть нашего продукта rpm, а также как зависимость.