Ist das Extrahieren von Dateien bei% post bei der Installation eines RPM eine bewährte Methode?

410
Raúl García

Ich entwickle ein RPM, um eine Conda-Umgebung zu verteilen, und ich habe diese Lösung gefunden:

Ich konnte es schaffen. Hier ist meine .spec-Datei aus einer Stackexchange-Antwort.

Zusammenfassend: Ich entpacke die Abhängigkeiten und das Installationsskript in der Installationsphase und in% post führe ich das Skript aus, das Dateien unter / opt / miniconda erstellt. Aus diesem Grund muss ich die Schritte zum Bereinigen der Umgebung bei der Deinstallation manuell angeben und auch manuell überprüfen, ob alles ordnungsgemäß funktioniert.

Ist das eine gute Praxis? Ich möchte in der Lage sein, alles in der Installationsphase zu erledigen, damit die Installation abgebrochen werden kann, wenn etwas schief geht, aber ich konnte dies nicht erreichen.

-1

1 Antwort auf die Frage

0
msuchy

Es ist eine sehr schlechte Praxis.

Einige Hinweise:

Anstatt:

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 

Sie sollten entweder setzen

Requires: python >= 3.6.0 

Wenn System-Python für Sie ausreicht oder wenn Sie RPM mit Ihrem eigenen Python erstellen, dann etwa Folgendes:

Requires: miniconda-python >= 3.6.0 

Ähnlich für alle diese Module.

Mir scheint, dass Sie den Unterschied zwischen% install und% post nicht kennen. Lesen Sie daher bitte https://stackoverflow.com/questions/34631942/how-to-run-and-interact-with-ascript-from-within-an-rpm/34634718#34634718 Führen Sie alle Verschiebungen in% install durch und Sie brauchen% post part überhaupt nicht.

Die Maschine hat keinen Zugriff auf das Netzwerk, daher kann ich dort nicht Requires: python hinzufügen. Ich muss das Skript extrahieren und ausführen, das die Abhängigkeiten korrekt installiert. Es ist nicht eine Frage des Verschiebens einiger Dateien. Install.sh erstellt Dateien unter / opt / miniconda. Später überprüfe ich, ob alles mit diesen if-else-Anweisungen funktioniert. Raúl García vor 7 Jahren 0
Sie können das Skript ausführen, das die Abhängigkeiten in% install section installiert. Dann werden alle Abhängigkeiten im RPM-Paket gespeichert. Sie sollten wirklich ein RPM-Paket mit einem kleineren und einfacheren Paket erstellen, um sich mit dem Konzept vertraut zu machen. msuchy vor 7 Jahren 0