3.2.2 Режим обновления (upgrade)

Опция -U работает и в случае установки, и в случае обновления пакета. Когда проявляют себя потребности шагнуть в сторону от просто инсталляции, утилита rpm начинает проявлять свою недюжинную силу. Команда rpm -U весьма мощна и производит при установке/обновлении ряд комплексных нетривиальных операций, о которых администратору можно не задумываться, так как он использует единственный ключ.

Например, следующая последовательность команд показывает процесс обновления приложения синхронизации данных с Palm PDA:

# rpm -q jpilot

jpilot-0.97-1

# rpm -U jpilot-0.99.2-8.i386.rpm

# rpm -q jpilot

jpilot-0.99.2-8

Обратите внимание, старая версия пакета больше не существует в системе, так как команда rpm -U удалила старый пакет.

3.2.2.1 Опции обновления

Для обновления пакетов в командной строке можно указать более, чем один пакет. Кроме того, опции установки можно указывать и при обновлении.
Здесь есть особенности, например, опция --noscripts сработает только в отношении нового пакета, но, если не было задано иное, при установке прежнего пакета скрипты отработали.

При обновлении можно задать опцию --repackage. Она определит следующие события: утилита выявит все файлы, которые будут удалены при обновлении и создаст из них rpm-пакет. Кроме того, производится архивирование старого пакета, что позволяет откатить состояние системы назад, если новый пакет неработоспособен.

Синтаксис с использованием --repackage:

# rpm -U --repackage jpilot-0.99.2-8.i386.rpm

В соответствии с соглашением об именовании для большинства пакетов справедливо следующее: имена пакетов (старых и обновленных) совпадают с точностью до версии и номера сборки. Но некоторые производители нарушают данное соглашение. Например, Java programming developer's kit (JDK) для версии 1.3 использовал имя jdk-1.3.1_01.i386.rpm, для версии 1.4 - имя j2sdk-1_4_0_01-fcs-linux-i386.rpm. Администратору приходится держать в голове подобные различия.

3.2.2.2 Умные обновления

В процессе обновления пакетов rpm выступает во всем своем блеске. Утилита не только обновляет пакет одной командой, но и использует некоторые встроенные возможности для выполнения расширенных операций.

При обновлении rpm проходит все файлы пакета, формируя для каждого файла дайджест MD5. Эти контрольные значения хранятся для трех версий файла: версии файла из старого пакета, версии файла из нового пакета и версии файла, который находится на диске. rpm хранит эти три версии для работы с такими специальными случаями, как файлы конфигурации. Такой подход позволяет сохранить конфигурации настроенных сервисов и при их обновлении. Раздел 10 описывает, каким образом можно пометить файлы, как файлы конфигурации.

Если файл на диске идентичен файлу в новом пакете, rpm просто перезаписывает его поверх файла на диске. Если это файлы конфигурации и файл на диске не отличается от файла в новом пакете, rpm оставляет старый файл. Но если файл на диске отличается от оригинальной версии файла, и файл на диске отличается от своей новой версии, rpm перезапишет файл новой версии поверх, что будет гарантировать работоспособность конфигурации с новой версией пакета. Модифицированные файлы конфигурации будут сохранены в их локациях в виде архивных копий с расширением .rpmsave. Если же в пакете использована опция %config(noreplace) для конкретного файла, новый файл записывается рядом с расширением .rpmnew.

Далее - Обновление в режиме freshen
Назад - Режим установки
Содержание