Что такое yum эквивалент «apt-get update»?


86

Debian apt-get updateвыбирает и обновляет индекс пакета. Поскольку я привык к такому способу ведения дел, я был удивлен, обнаружив, что yum updateэто все делает и обновляет систему. Это заставило меня задуматься о том, как обновить индекс пакета без установки чего-либо.

Ответы:


90

Команда check-updateобновит индекс пакета и проверит наличие доступных обновлений:

yum check-update

3
Эта команда позволяет вам определить, доступны ли какие-либо обновления для ваших установленных пакетов . yumвозвращает список всех обновлений пакетов из всех репозиториев, если таковые имеются. apt-get updateобновить индексные файлы, но yum check-updateне делает.
Суббота,

Это не работает, если yumэто уже было выполнено недавно, см. Некоторые другие ответы для альтернатив ...
rogerdpack

29

Хотя yum check-updateбудет проверять обновления для установленных пакетов, если это нужно обновить, так же, как и большинство других команд.

Команда, которая строго эквивалентна, apt-get updateэто yum makecache... однако обычно не рекомендуется запускать ее напрямую, в yum.


1
Я не понимаю первое предложение. Вы можете перефразировать, может быть?
Чепанг

8
Это означает, что другие yumкоманды, например, yum upgradeбудут автоматически запускаться yum check-updateпри необходимости. Другими словами, yum upgradeэто в основном так же, как apt-get update; apt-get upgrade.
Микель

Спасибо! yum check-update не помог мне против 404 ошибок. Но вкуснятина yum помогает! Огромное спасибо!
Socketpair

В оригинале речь шла об автоматическом обновлении repodata для представления последней информации (apt-get чего-то не делает или, по крайней мере, не делал в 2011 году). После редактирования это теперь странно бессмысленно :(.
Джеймс Антилл

Почему не рекомендуется запускать yum makecache? Он указан на странице руководства и, кажется, работает как apt-get update... также обратите внимание, что yum check-updateне всегда выполняет обновление, см. Другие ответы, FWIW :)
rogerdpack

21

К сожалению, yum check-updateпо умолчанию не извлекает изменения из удаленных репозиториев до тех пор, пока не yum.confистечет параметр metadata_expire (по умолчанию 90m). Очевидно, его целью является «узнать, есть ли на вашей машине какие-либо обновления, которые необходимо было применить, не запуская его в интерактивном режиме», поэтому в основном это «проверить, могут ли какие-либо пакеты быть способными к обновлению», а не «обновить» список пакетов, на которые я мог бы обновить », как вы ожидал.

Так что, если вы запустите yum check-updateи получите это:

$ sudo yum check-update
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile

packagename      version     repo

Это означает, что check-update не выполняет обновление, как это apt-get updateделает.

Вы можете увидеть, сколько времени займет выполнение «автоматического обновления», которое выполняют все команды, выполнив следующее :yum repolist enabled -v

Работа вокруг:

сначала используйтеyum clean expire-cache (или yum clean all), затем любые будущие команды yum будут автоматически обновлять кэш «при запуске». , Поскольку будущие команды yum обновляют кэш, на практике это то же самое, что и apt-get update.

Или, я полагаю, измените параметр metadata_expire файла yum.conf на значение по умолчанию меньше 90 минут.

Или запустите yum makecache(из других ответов), который, кажется, удаляет кэш и сразу же вырывает свежие копии. Но, кажется, это займет больше времени, чем clean all(?) FWIW.


2
Не уверен, почему этот ответ томится внизу. Это кажется очевидным и простым ответом.
cbmanica

2

Это команда для обновления локального кэша, следовательно,

yum makecache

Похоже, это команда, которую вы ищете, согласно Работа с кешем Yum .

Обычно вам не нужно запускать эту команду напрямую, поскольку yum уже проверяет и обновляет метаданные на основе значения metadata_expire в yum.conf, по умолчанию это 6 часов.

Тем не менее, может быть как минимум один вариант использования, который находится в Ansible playbook, поскольку в Ansible playbook нет способа обновить кэш-память только без установки каких-либо пакетов (см. Проблемы Ansible 33461 и 40068 , которые, по-видимому, быть исправлено в версии 2.8, 46183 ). Для работы модуля Ansible yum требуется имя пакета для опции update_cache: yes. Таким образом, в качестве альтернативы «команда: yum makecache» может быть использована в playbook.

У dnf также есть команда makecache, хотя также возможно принудительно синхронизировать метаданные с ключом --refresh.


Этот существующий ответ уже упоминает yum makecache; возможно, вы могли бы расширить свой ответ, чтобы сделать его более полезным, например, объяснив, почему yum makecacheне рекомендуется, или каков его dnfэквивалент.
Стивен Китт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.