Yum эквивалент rpm –nopreun

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

У меня есть проблемный RPM, который удаляет файлы установки при обновлении. Я хочу выполнить yum update pkg-name, но не хочу запускать секцию %preun. Это возможно с помощью yum? Если да, то какой флаг?

Я установил плагин yum-downloadonly:

# yum install yum-downloadonly

А затем я указал ему скачать пакет в /opt:

# yum update pkg-name -y --downloadonly --downloaddir=/opt

Опция -y означает “Предположить да”

Затем я выполнил rpm -i --nopreun /opt/pkgname

Не с yum, но вы можете скачать rpm и попробовать запустить
rpm с опцией “--noscripts“.

ИЗМЕНЕНИЕ: по вашему комментарию, существует также переключатель --nopreun для команды rpm

С помощью yum нет, но вы можете использовать yumdownloader для получения пакета и всех зависимостей (доступно в пакете yum-utils), а затем вручную запустить rpm.

Попробуйте

yum --setopt=tsflags=noscripts remove $pkgname

Это не выполнит никаких скриптов.

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

Для ответа на вопрос о том, существует ли эквивалент флага --nopreun из команды rpm при использовании yum, важно рассмотреть специфику работы этих инструментов управления пакетами в системах на основе RPM.

Понимание контекста

При обновлении пакета с помощью yum, программа по умолчанию выполняет скрипты, связанные с установкой и удалением пакетов, такие как %pre, %post, %preun и %postun. Это может быть проблемой, если в скрипте %preun присутствуют команды, которые, например, удаляют важные установки или данные, что может привести к непредсказуемым последствиям при апгрейде.

Решение проблемы с yum

На данный момент функциональность yum, которая позволила бы полностью пропустить выполнение определённых скриптов, включая preun, не предусмотрена. Однако вы можете использовать комбинированный подход, включающий загрузку пакета без установки скриптов, если ваш основной приоритет заключается в обновлении пакета без выполнения его скриптов.

Применение команды yumdownloader

Для начала, стоит упомянуть о том, что вы можете воспользоваться yumdownloader, который является частью пакета yum-utils. Эта утилита позволяет загружать пакеты без их установки. Пример использования:

yum install yum-utils
yumdownloader pkg-name

После загрузки RPM-файла вы можете использовать команду rpm с флагом --nopreun.

Установка RPM с --nopreun

Сначала скачайте нужный пакет, а затем установите его с использованием rpm:

rpm -i --nopreun ./pkgname.rpm

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

Альтернативные варианты

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

  1. Флаги tsflags: Например, можно установить флаг --setopt=tsflags=noscripts. Это не совсем то же самое, что и --nopreun, но позволит избежать выполнения всех скриптов:

    yum --setopt=tsflags=noscripts update pkg-name
  2. Использование yum для удаления: Если ваш пакет необходимо удалить перед обновлением, и вы хотите, чтобы все скрипты были проигнорированы, используйте:

    yum --setopt=tsflags=noscripts remove pkg-name

Заключение

Таким образом, в текущей реализации yum нет прямого эквивалента команды rpm --nopreun, который позволял бы избежать выполнения предшествующих скриптов при обновлении пакетов. Однако использовать yumdownloader для предварительной загрузки пакета, а затем установить его через rpm, или работать с флагами, как описано выше, может стать отличной альтернативой. Эти методы помогут избежать нежелательных последствий, связанных с выполнением скриптов, и позволят более контролируемо подходить к управлению пакетами в вашей системе.

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

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