Обновление Yum только в том случае, если пакеты старше

Необходимо добавить переключатель --excludeв начало команды, см. это . Это решение работает на моем компьютере с openSUSE, других дистрибутивов у меня сейчас нет.

host:/tmp # find test*
test1
test1/file1
test1/__pycache__
test1/__pycache__/file1-py
test1/include
test1/include/file1-incl
test2
test2/__pycache__
test2/__pycache__/file2-py
test2/include
test2/include/file2-incl
test2/file2

host: # tar --exclude='__pycache__' -cv test* -f testtar.tar
test1/
test1/file1
test1/include/
test1/include/file1-incl
test2/
test2/include/
test2/include/file2-incl
test2/file2

0
07.07.2020, 15:28
1 ответ

У меня была еще одна проблема: я хотел, чтобы рабочие серверы обновляли пакеты позже, чем рабочие серверы и серверы разработки.

Если возможно, я бы выбрал инструмент управления исправлениями, такой как Foreman Katello и несколько локальных репозиториев yum.

Мое решение далеко не красивое, но оно работает:

repoquery -a --pkgnarrow=updates --qf="%{name}-%{epoch}:%{version}-%{release}.%{arch} %{filetime}" |
awk -v daysago=$(date --date="7 days ago" +%s) '$NF < daysago' |
cut -f1 -d" " |
xargs yum update --assumeyes

Пояснение:

  • repoqueryПеречисляет обновления и добавляет информацию о времени файла в конце, разделенном пробелом
  • awkПоследний раздел фильтров для даты старше семи дней (изменить в соответствии с вашими потребностями)
  • cutРазделить по пробелам и удалить последнюю часть (фактически пробелы и отметку времени)
  • xargs -r yum updateВставить список в команду yum update. При желании вы также можете фильтровать обновления безопасности здесь с помощью --security.
0
18.03.2021, 23:22

Теги

Похожие вопросы