Pracuję na systemie wbudowanym i stworzyłem kilka RPM. W niektórych RPM występuje następujący problem.
Kiedy instaluję / aktualizuję wersję 2 RPM na wersji 1 lub instaluję wersję 1 RPM na wersji 2, instalacja daje kod wyjścia 0.
Jednak gdy instaluję dokładnie taką samą wersję RPM na istniejącej instalacji, zwraca kod wyjścia 1. Jednak większość innych RPM nie ma tego zachowania (kod wyjścia 1 podczas instalowania RPM na istniejąca instalacja)
Czy to z założenia? Istnieje skrypt niestandardowy, który wykrywa nieudane instalacje na podstawie kodu wyjścia, więc potrzebuję tej instalacji RPM, aby zwrócić 0. Używam następującego polecenia.
rpm -Uv --force <rpm-file>
Próbowałem wygenerować więcej pełnych dzienników, ale nie ma absolutnie żadnej różnicy między scenariuszami, w których zwraca 0, a scenariuszami zwracającymi 1.
źródło
Odpowiedzi:
Aby wymusić kod powrotu 0, możesz użyć tego hacka:
rpm -Uv --force <rpm-file> || true
Chociaż naprawdę powinieneś zapytać skrypt o zainstalowaną wersję (
rpm -q <package>
) i spróbować zainstalować tylko wtedy, gdy nie jesteś zadowolony z tego, co się tam dzieje.źródło