2009-06-15 1 views
2

У меня есть пакет rpm, который уже установлен в системе. Я хочу заменить старый пакет новым пакетом с другим именем пакета. «Rpm -Uvh [имя пакета]» должно быть достаточно, чтобы заменить старый пакет на новый.

После ряда исследований в сети я обнаружил, что «Obsoletes» используется для устаревания старого пакета и замены его новым пакетом с другим именем. Я использовал «Obsoletes» в своем файле спецификации rpm, но когда я пытаюсь перейти с старого пакета,% preun старого пакета вызывается с помощью $ 1 = 0, который, как я ожидал, будет равен $ 1 = 1.

Please исправьте меня, если я ошибаюсь. Есть ли лучшее решение для этой проблемы?

Благодаря

ответ

1

Есть ли лучшее решение этой проблемы?

rpm -e --nopreun <old-package> && rpm -i <new-package>

можно выборочно включать и отключать определенные сценарии с --no<scriptname>, или вы можете отключить все скрипты с --noscripts.

убедитесь, что вы проверяете различные сценарии, связанные с новым пакетом; , возможно, вам придется отключить некоторые из них.

-steve

p.s. это, вероятно, будет вопрос лучше размещен на ServerFault. :)

1

Мое понимание вашей проблемы является то, что старый пакет делает что-то в своем сценарии% preun, что вы хотели бы, чтобы это не делать (например, удаление учетной записи пользователя или что-то подобное), не так ли?

Один из способов обойти это может заключаться в создании промежуточной версии dmm версии N + 1 старого пакета, которая не содержит файлов, обновляется до этого и затем обновляется до вашего последнего нового пакета.

+1

Да, вы правы, но я не могу распространять фиктивный пакет для пользователей. Ответственный сценарий% preun отвечает за остановку демона и удаление записей из «chkconfig». Есть ли другой способ обновления до нового пакета с другим именем пакета, а% preun scriptlet старого пакета не выполняется или не выполняется с помощью $ 1 = 1. – Supratik