Server@VPSでyum updateを叩くスクリプト

2021-06-22

概要

DTIのServer@VPSで、OSをCentOS 7を使用している場合に、「yum update」を叩くと以下のエラーになります。

Error: systemd conflicts with initscripts-9.49.17-1.el7.x86_64

initscripts」の不具合の関係でupdateが出来ない状態です。DTIに問い合わせましたが改善の見込もないみたいです。

自分が使用しいるパッケージだけアップデートすればセキュリティ上は問題が無いかも知れませんが、使っていないパッケージも「yum update」で一括でアップデートしたいと思い簡単なスクリプトを作りました。よければになれば使って下さい

再起動したら外部からアクセスできなくなる不具合があるので、/etc/yum.conf に「exclude=initscripts*」を追記はおこなって下さい。
また、このHPで記載した「initscripts」関係の記事のリンクも掲載しています

 

【initscriptsの不具合の関係の記事】

DTIのServer@VPSでの、yum updae用スクリプト

スクリプトの内容ですが、yum updateで一旦、アップデート対象を取得しパッケージ名してテキストファイルに吐き出しています。そのファイルを読み込んでyum updateを叩いていてます。

処理は2回に別けて作ってますが、1回できると思います

yum updateのパッケージ名を取得するスクリプト

1個のコマンドを叩いているだけなので、スクリプトで記述するまでも無いですが、以下のスクリプトでyum update対象のパッケージ名のみを取得しています

#!/bin/sh
FILE_DIR=/var/tmp/
yum update | grep Package | cut -f3 -d " " | cut -f1 -d "." | uniq > ${FILE_DIR}yum_update_list

上記のスクリプトを実行すると以下のようなパッケージ名のみが抜き出されたファイルが生成されます

$ cat /var/tmp/yum_update_list
acl
avahi
bind
curl
file
gcc

yum updateを実行するスクリプト

上記を実行後に以下のスクリプトを実行して、yum updateを実行します。スクリプトを実行すると「initscripts」の関係でエラーなるパッケージもあります。

#!/bin/sh
FILE_DIR=/var/tmp/

while read LIST; do
    yum -y update $LIST
done < ${FILE_DIR}yum_update_list

一個にまとめた場合の、Server@VPS用yum updateスクリプト

自分の場合は、updateされる前にエラーになるパッケージをupdate対象リストのファイルから削除したかったので2個に分けましたが、1個のパターンのスクリプトは以下となります

#!/bin/sh
FILE_DIR=/var/tmp/

# update対象のパッケージ名のファイル生成
yum update | grep Package | cut -f3 -d " " | cut -f1 -d "." | uniq > ${FILE_DIR}yum_update_list

# update対象のリストを読み込んで、yum updateを実行
FILE_DIR=/var/tmp/
while read LIST; do
    yum -y update $LIST
done < ${FILE_DIR}yum_update_list

アップデートでエラーになるパッケージ

今の段階で、yum updateを実行するとエラーとなるパッケージ名は以下のようなパッケージです

cyrus-sasl
cyrus-sasl-lib
kmod
kmod-libs
libblkid
libmount
libuuid
procps-ng
rpcbind
rsyslog
systemd
systemd-libs
systemd-sysv
util-linux
dracut
hardlink
kpartx

 

LinuxCentOS 7

Posted by admin