yum установить пакет без обновления других пакетов или ошибка…?

10

Есть ли способ указать yumустановить пакет, выбрав версию этого пакета, которая будет удовлетворена установленными в настоящее время зависимостями?

Например, если я устанавливаю пакет pecl, и в настоящее время я установил, php-5.4.11но php-5.4.14доступен более новый . Вместо того, чтобы устанавливать новый пакет (и обновлять все пакеты php до 5.4.14), я просто хочу, чтобы он выбрал более старую версию пакета, который я просил установить, не обновляя все остальные (или потерпел неудачу, если это невозможно).

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

Что-то вроде:

yum install php-pecl-xxxx --no-updates
Клинт Жрец
источник

Ответы:

10

Временное решение:

Используйте -Cфлаг:

sudo yum install foobar -C

Постоянное решение:

Используйте metadata_expireфлаг в вашем yum.conf для управления этим.

Редактировать /etc/yum.confи установить

metadata_expire=15d

Вы можете использовать d, h или m для настройки времени в днях, часах или минутах .

Бонус: вот документация:

metadata_expire - Время (в секундах), после которого метаданные истекают. Таким образом, если текущие загруженные метаданные меньше, чем это много секунд, yum не будет обновлять метаданные для хранилища. Если вы обнаружите, что yum загружает информацию об обновлениях не так часто, как вам хотелось бы, уменьшите значение этой опции. Вы также можете изменить стандартное использование секунд на дни, часы или минуты, добавив объявление, h или m соответственно. По умолчанию используется 6 часов, чтобы комплимент yum-updatesd работал раз в час. Также возможно использовать слово «никогда», что означает, что метаданные никогда не истекают. Обратите внимание, что при использовании файла metalink металинк всегда должен быть новее метаданных для хранилища, из-за проверки, поэтому этот тайм-аут также применяется к файлу metalink. Также обратите внимание, что «never» не отменяет «yum clean expire-cache»

Шубхам Чаудхари
источник
0

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

Аазим Паркар
источник
0

В yum-utilsупаковке есть инструмент под названием yumdownloader. Вы можете использовать его для загрузки из репозиториев без установки. Все стандартные переключатели вроде --disablerepoприменяются. Смотрите man-страницу для более подробной информации.

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

SLM
источник
1
Это часть системы автоматической установки пакетов, проблема в том, что мы не хотим, чтобы yum «установил последнюю версию» и «обновил все, что нужно». Мы действительно просто хотим установить версию пакета, совместимую с уже установленной. В основном это опция установки или установки xxx -no-updates.
Клинт Прист
0

Если старая версия пакета все еще находится в ваших репозиториях yum, вы можете просто запустить ее, yum install packagename-version-release.archи она установит более старую версию, не пытаясь обновить ее до последней версии. Вам нужно будет использовать полное имя, версию, релиз и арку, если в вашем репозитории yum есть несколько версий и архитектур. Вы можете получить всю эту информацию, запустив yum list available 'packagename*'поиск всех пакетов, начинающихся с 'packagename'. Если вам удалось обновить ваши пакеты и вы хотите перейти на более раннюю версию, вы можете запустить yum downgrade packagename1 packagename2. Вам нужно будет включить список всех пакетов, которые вы хотите понизить, так как это, вероятно, будет включать много зависимостей.

Если более старого выпуска нет в вашем репозитории yum, просто скачайте его с того места, где вы нашли старый пакет, и установите его вместе с ним yum install /path/to/package.rpm, хотя я бы предостерег от установки пакетов из ненадежных источников.

jsbillings
источник
Но было бы гораздо полезнее, если yumбы можно было просто выбрать последнюю доступную совместимую версию.
forcefsck
Может, но упаковщик должен определить соответствующие требования.
Jsbillings
Иногда требования покрываются более старой упаковкой, но yum настаивает на выборе только самой последней. Например. в случае, описанном выше, yum должен иметь возможность автоматически выбирать php-pecl-5.4.11, если система имеет версию, заблокированную для php-5.4.11. Это может быть проблемой для автоматизации.
Forcefsck
Yum будет обновляться только до последней версии, если нет никаких зависимостей от старой версии. В приведенном выше случае требование версии никогда не требовалось пакетом pecl. Yum не может прочитать ваши мысли и выбрать произвольную версию, если вы не укажете, какая версия требуется, или заблокировав пакеты pecl и php.
Jsbillings
В частности, для этого примера, при условии, что php не может быть обновлен (либо заблокирован по версии, либо нет новых пакетов, доступных в репозиториях), yum может выбрать последнюю версию pecl, которая не потребует обновления php. Это не совсем чтение мыслей, я думаю, что apt-get это уже делает. Опять же, это проблема для автоматизации, когда вам нужно установить дополнительный пакет, не обновляя половину своей системы, и вам нужно быть достаточно умным, чтобы обработать запрос, т. Е. Если существует несколько версий, выберите последнюю версию, совместимую с уже установленными пакетами. что по какой-либо причине не может быть обновлено.
forcefsck