Как перечислить пакеты, требующие обновления, в формате для `yum update-to`

Как мне получить разделенный пробелами список пакетов с ожидающими обновлениями в CentOS7 в формате, который требуется для передачи в качестве аргумента yum update-to ?

Я хочу обновить все пакеты на своем производственном сервере под управлением CentOS7. Прежде чем обновлять их при производстве, я хочу обновить их при постановке и убедиться, что изменения не нарушают работу наших серверных приложений. После проверки мы запланируем заявку на изменение для производства и запустим ту же команду / vetted yum update-to (в отличие от потенциально недетерминированного и неидемпотентного yum update ) команда) на производстве позже.

Поэтому я пытаюсь [a] определить все пакеты, для которых доступно обновление на моем сервере, и [b] подготовить команду, используя yum update-to , в котором будут перечислены именно пакеты и их версии, подлежащие обновлению.

Вот пример необходимого синтаксиса команды yum update-to :

yum update-to dbus-1.10.24-13.el7_6 dbus-libs-1.10.24-13.el7_6 java-1.8.0-openjdk-1.8.0.242.b08-1.el7 java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7 tzdata-java-2019c-1.el7 unzip-6.0-21.el7

Проблема в том, что yum update --assumeno и yum list updates выводят список пакетов в совершенно отличном формате, чем ожидает yum update-to .

Вот пример вышеизложенного. вывод команд, относящийся к пакетам в приведенном выше примере:

[root@cent7 ~]# yum update --assumeno | grep -E 'dbus|java|unzip'
---> Package dbus.x86_64 1:1.6.12-17.el7 will be updated
---> Package dbus.x86_64 1:1.10.24-13.el7_6 will be an update
---> Package dbus-libs.x86_64 1:1.6.12-17.el7 will be updated
---> Package dbus-libs.x86_64 1:1.10.24-13.el7_6 will be an update
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.181-3.b13.el7_5 will be updated
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.242.b08-1.el7 will be an update
--> Processing Dependency: gtk2(x86-64) for package: 1:java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.181-3.b13.el7_5 will be updated
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.242.b08-1.el7 will be an update
--> Processing Dependency: pcsc-lite-libs(x86-64) for package: 1:java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
--> Processing Dependency: cups-libs(x86-64) for package: 1:java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
---> Package tzdata-java.noarch 0:2017b-1.el7 will be updated
---> Package tzdata-java.noarch 0:2019c-1.el7 will be an update
---> Package unzip.x86_64 0:6.0-16.el7 will be updated
---> Package unzip.x86_64 0:6.0-21.el7 will be an update
 dbus                     x86_64 1:1.10.24-13.el7_6              base     245 k
 dbus-libs                x86_64 1:1.10.24-13.el7_6              base     169 k
 java-1.8.0-openjdk       x86_64 1:1.8.0.242.b08-1.el7           base     293 k
 java-1.8.0-openjdk-headless
 tzdata-java              noarch 2019c-1.el7                     base     187 k
 unzip                    x86_64 6.0-21.el7                      base     171 k
[root@cent7 ~]# 
[root@cent7 ~]# yum list updates | grep -E 'dbus|java|unzip'
dbus.x86_64                           1:1.10.24-13.el7_6                base    
dbus-libs.x86_64                      1:1.10.24-13.el7_6                base    
java-1.8.0-openjdk.x86_64             1:1.8.0.242.b08-1.el7             base    
java-1.8.0-openjdk-headless.x86_64    1:1.8.0.242.b08-1.el7             base    
tzdata-java.noarch                    2019c-1.el7                       base    
unzip.x86_64                          6.0-21.el7                        base    
[root@cent7 ~]# 

Как мне получить перевод вывода пакетов и их версий из yum update --assumeno или yum list updates в формат, который принимается yum update-to ?

0
задан 27 April 2020 в 22:43
1 ответ

Это решение с sed и awk работает:

[root@cent7 ~]# pkgs=`yum -q list updates 2>&1 | tail -n+2 | awk '{print $1 "|" $2}' | sed 's/\.[^.]*|\(.*\:\)*/-/' | tr "\n" " "`
[root@cent7 ~]# echo "yum update-to $pkgs"
yum update-to dbus-1.10.24-13.el7_6 dbus-libs-1.10.24-13.el7_6 java-1.8.0-openjdk-1.8.0.242.b08-1.el7 java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7 tzdata-java-2019c-1.el7 unzip-6.0-21.el7 
[root@cent7 ~]# 

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

0
ответ дан 27 April 2020 в 19:43

Теги

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