Linux: команда rpm -Uvh / rpms / * не работает должным образом

Я хотел обновить некоторые RPM в моей системе на базе Redhat / Linux. Некоторые пакеты RPM могут уже существовать, некоторые должны быть установлены недавно, а некоторые необходимо обновить до более высокой версии с помощью команды обновления RPM.

Например :

 I have placed rpms to be installed in folder <rpms>
      /rpms/X-1.rpm (This is already installed in system)
      /rpms/Y-1.rpm (This is NOT present in system. This is NEW)
      /rpms/Z-2.rpm (This is need to be upgraded to higher version available, 
                     Z-1.rpm is installed in system)
      /rpms/Q-1.rpm (This is already installed in system)

Я запускаю команду ниже в файле оболочки (.sh)

$rpm -Uvh /rpms/*

Это показано ниже после выполнения

Preparing...            ################################### [100%]
    package X-1 is already installed
    package Q-1 is already installed

Но он не устанавливает Y-1 и не может перейти на Z-2.

Пожалуйста, дайте мне знать, что нужно сделать с командой -Uvh, чтобы она работала? Какое было бы наилучшее решение для вышеуказанного сценария?

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

larsks 01.11.2018 15:34

да, yum (или даже dnf, если он доступен) было бы лучше, если вы все еще хотите использовать rpm, вы можете попробовать добавить --replacepkgs, он переустановит уже существующие пакеты presnet, но, по крайней мере, не будет игнорировать два других

OznOg 01.11.2018 15:46

Я не вижу причин, по которым люди отстают, чтобы закрыть вопрос. Пожалуйста, не следуйте за толпой, чтобы закрыть вопрос. -Uvh команда пропускает установку, и я не нахожу объяснений ни в одном документе RedHat. Поэтому я пришел сюда.

Oomph Fortuity 02.11.2018 07:52

@larsks Но команда rpm должна обновить все rpm, упомянутые в каталоге, но она пропускает новые и обновленные rpm. Он просто находит существующие. Думаю, что проблема с командой rpm.

Oomph Fortuity 02.11.2018 09:04

@OomphFortuity: я бы ожидал, что команда будет работать, но разве нет другого выхода? обычно rpm должен указывать причину, по которой он не устанавливает эти пакеты.

Chris Maes 02.11.2018 11:19

Вариант --replacepkgs - это то, что вы ищете (но я бы просто переместил rpms, которые уже установлены, из папки rpms/)

David C. Rankin 05.11.2018 08:48

Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что ваш вопрос не связан с «программированием», он больше подходит для сайтов StackExchange Суперпользователь или Unix и Linux.

David C. Rankin 05.11.2018 08:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
1 377
1

Ответы 1

rpm отказывается запускать неправильно заданную (потому что два запрошенных пакета уже установлены) команду и, следовательно, пропускает возможные установки / обновления.

Вы ожидаете, что rpm интуитивно поймет, что вы имели в виду под командой.

По сути, нет способа точно определить, что было задумано, по скорости вращения.

Вы хотели переустановить уже установленные (и, возможно, измененные / поврежденные) пакеты или нет? (Используйте --force или --reinstall, чтобы переустановить уже установленные пакеты).

Вы хотели обновить только уже установленные пакеты, игнорируя удаленные пакеты? (Используйте --freshen.)

Вы хотите, чтобы rpm предполагал, что пакеты в списке аргументов --upgrade будут установлены, даже если нет предыдущей версии для обновления (как запрошено)?

Поведение «Делай то, что я имею в виду» (DWIM) не может быть реализовано для всеобщего удовлетворения. RPM придерживается консервативного подхода и завершает работу, не устанавливая Y-1 и не обновляя Z-2, базовый союз ничего не делает и возвращает код ошибки.

Другие вопросы по теме