Как RPM определяет более новый пакет
Я взял Apache httpd 2.2.3 SRPM и извлек файл.spec. Из этого я заменил 2.2.3 на 2.2.14 и удалил Serial
тег из specfile (как rpmbuild
жаловался на серийный тег - я полагаю, это устарело). Скачал архив httpd и собрал (rpmbuild
) без ошибок (к моему удивлению).
После запуска rpm --upgrade
Version
тег явно позже. Я установил Release
Однако до 1.
Я пытался просмотреть Google, чтобы узнать, как rpm
определяет, какая самая новая версия (не повезло). От rpm -qi
У меня есть следующие команды для установки по умолчанию 2.2.3:
Имя: httpd Перемещения: (не перемещаемая) Версия: 2.2.3 Поставщик: CentOS Релиз: 31.el5.centos Дата сборки: чт 3 сен 2009 10:43:06 BST Дата установки: Пн 26 Окт 2009 10:27:12 GMT Сборка Хост: builder16.centos.org Группа: Системная среда / Демоны Источник RPM: httpd-2.2.3-31.el5.centos.src.rpm Размер: 3254910 Лицензия: Apache Software License Подпись: DSA/SHA1, вс 20 сентября 2009 г., 04:53:42 BST, идентификационный номер ключа a8a447dce8562897 URL: http://httpd.apache.org/ Описание: HTTP-сервер Apache
Из моей сборки 2.2.14 у меня есть:
Имя: httpd Перемещения: (не перемещаемая) Версия: 2.2.14 Поставщик: Apache Software Foundation Релиз: 1 Дата сборки: пн 16 ноя 2009 11:40:41 GMT Дата установки: Пн 16 Ноя 2009 11:44:38 GMT Сборка Хост: build01.local Группа: Системная среда / Демоны Источник RPM: httpd-2.2.14-1.src.rpm Размер: 5101686 Лицензия: Apache License, версия 2.0 Подпись: (нет) URL: http://httpd.apache.org/ Описание: HTTP-сервер Apache
Итак, вопрос в том, как rpm
определить, какой самый последний RPM для целей обновления?
1 ответ
Серийный тег устарел и был заменен тегом эпохи.
Я не знаю, как работал последовательный тег, но сравнение версий с тегом эпохи имеет эпоху, предшествующую версии перед сравнением.
Я предполагаю, что нечто подобное было сделано с серийным.
Я предполагаю, что к порядковому значению также был добавлен префикс, так что вы сравниваете версии следующим образом:
<serial>-<version>-<release>
Если серийное значение было> 1 в оригинале, я предполагаю, что его значение по умолчанию равно 1, когда не указано.
Вы можете всегда использовать rpm --force
заставить обновление до определенного RPM