Как узнать последний номер релиза той же версии пакета в yum?

Вопрос или проблема

Как узнать последний номер релиза той же версии пакета в yum?

Я пытаюсь получить последний номер релиза пакета, а не последнюю версию из репозитория.

Например

yum --showduplicates list package

Установленные пакеты
package                    2.1.0-1 
Доступные пакеты
package                    2.1.0-1
package                    2.1.0-2
package                    3.1.0-1

Я хочу обновить существующий package до 2.1.0-2, а не до последнего 3.1.0-1. Команда yum update всегда пытается обновить до последнего 3.1.0-1. Я пишу скрипт, который проверяет, если номер релиза (в данном случае 2.1.0-2) выше, чем 2.1.0-1, и обновляет до этой версии.

Вам просто нужно указать версию, которую вы хотите установить:

sudo yum install package-2.1.0-2

Интересный вопрос 🙂

Первое, что нужно сделать, это получить базовую версию (без релиза) установленного пакета. Вы можете сделать это, запросив rpm:

VER=$(rpm -q --queryformat "%{VERSION}" foo)

Далее вы просто устанавливаете эту версию с установленным подстановочным знаком для релиза:

yum install foo-${VER}-*

Однострочное решение:

yum install foo-$(rpm -q --queryformat "%{VERSION}" foo)-*

Ответ или решение

Для того чтобы обновить пакет до последнего релиза той же версии, используя yum, а не до последней доступной версии, вы можете воспользоваться следующими шагами.

  1. Получение установленной версии пакета:
    Для начала, вам необходимо узнать установленную версию и релиз пакета. Это можно сделать с помощью команды rpm:

    установленная_версия=$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" имя_пакета)

    Эта команда вернет строку, содержащую версию и релиз, например 2.1.0-1.

  2. Определение версии без релиза:
    Чтобы извлечь только номер версии, без релиза, можно использовать:

    версия=$(echo $установленная_версия | cut -d'-' -f1)
  3. Поиск доступных релизов:
    Теперь, используя yum, вы можете получить список всех доступных релизов той же версии:

    yum --showduplicates list имя_пакета

    Пример вывода может выглядеть так:

    Установленные пакеты
    имя_пакета                 2.1.0-1 
    Доступные пакеты
    имя_пакета                 2.1.0-1
    имя_пакета                 2.1.0-2
    имя_пакета                 3.1.0-1
  4. Установка последнего релиза:
    Для установки последнего релиза той же версии можно использовать подстановку символов. Например, выполните следующую команду:

    yum install имя_пакета-${версия}-*

    Эта команда установит самый высокий релиз для указанной версии пакета.

  5. Объединение в одну команду (однострочник):
    Вы можете объединить все шаги в одну команду:

    yum install имя_пакета-$(rpm -q --queryformat "%{VERSION}" имя_пакета)-*

Эта однострочная команда автоматически обновит ваш пакет до последнего релиза той же версии, осуществляя необходимую проверку.

Пример скрипта

Если вы хотите создать скрипт, который будет автоматически проверять и обновлять пакеты, он может выглядеть следующим образом:

#!/bin/bash

пакет="имя_пакета"
установленная_версия=$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" $пакет)
версия=$(echo $установленная_версия | cut -d'-' -f1)

# Обновление до последнего релиза
yum install -y ${пакет}-${версия}-*

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...