Am construit fișierul rpm al aplicației folosind fpm.
Acolo am setat python3 ca dependență, așa că se instalează automat înainte de rpm-ul principal.
Dar instalează 3.7. Pentru a-l înlocui cu 3.8, trebuie să verificăm versiunea sistemului de operare înainte dacă este centos sau awslinux și, pe baza acesteia, trebuie să instalăm un anumit rpm.
Deci, am păstrat aceste blocuri condiționate în scriptul preinst și am trecut la parametrul --before-install.
Dar, se blochează în timpul instalării rpm.
Deci, când verific cu modul verbose.Am descoperit că nu funcționează cu preinst.
Motivul, instalarea ptyhon nu poate aplica blocarea și continua instalarea, deoarece projectn a obținut deja blocarea.
RPM: eroare: nu se poate crea blocarea tranzacției pe /var/lib/rpm/.rpm.lock (Resursa indisponibilă temporar)
Eroare: Nu s-a putut executa tranzacția.
+ ecou „centos este detectat”
centos este detectat
+ sudo yum install -yq python38
RPM: eroare: nu se poate crea blocarea tranzacției pe /var/lib/rpm/.rpm.lock (Resursa indisponibilă temporar)
Eroare: Nu s-a putut executa tranzacția.
Orice sugestii pe care le puteți oferi
Pentru a fi mai specific, vă rugăm să găsiți detalii mai jos.
Instrumentul folosit pentru a crea rpm: fpm
Trebuie să instalez python3.8 ca dependență de rpm-ul aplicației.
Dacă am setat asta ca dependență folosind -d python3, instalează versiunea 3.7 pe amazon linux și 3.6 pe centos 8.
Pentru a utiliza versiunea 3.8, mai sunt câțiva pași care trebuie efectuati înainte de a instala pachetul.
Deci, am eliminat python3 din secțiunea de dependență și am adăugat în --before-install ca script shell.
Acesta este scriptul shell pe care l-am păstrat acolo.
#!/bin/bash
echo „Începe preinst”
echo „Verificarea versiunii sistemului de operare”
DISTRO=$(cat /etc/*-release | grep -w NUME | cut -d= -f2 | tr -d '"' | tr '[:upper:]' '[:lower:]')
if [[ "$DISTRO" =~ "centos linux" ]]; atunci
ecou "centos este detectat"
sudo yum install -yq python38
elif [[ "$DISTRO" =~ "amazon linux" ]]; atunci
echo „a fost detectat Amazon Linux”
sudo yum install -yq amazon-linux-extras
sudo amazon-linux-extras activează python 3.8
sudo yum install -yq python3.8
elif [[ "$DISTRO" =~ "ubuntu" ]]; atunci
ecou "ubuntu detectat"
sudo apt install pyhton3 -yq
altfel
echo „Nici centos, nici amazon linux 2”
fi
Declanșează scriptul, dar se blochează la instalarea python din scriptul shell.
RPM: eroare: nu se poate crea blocarea tranzacției pe /var/lib/rpm/.rpm.lock (Resursa indisponibilă temporar)
Eroare: Nu s-a putut executa tranzacția.
+ ecou „centos este detectat”
centos este detectat
+ sudo yum install -yq python38
RPM: eroare: nu se poate crea blocarea tranzacției pe /var/lib/rpm/.rpm.lock (Resursa indisponibilă temporar)
Eroare: Nu s-a putut executa tranzacția.
Ceva sugestii despre cum să remediați acest lucru?
Cerința mea este să instalez python3.8 ca parte a produsului nostru rpm și ca dependență.