yum update失敗 AmazonLinux 201409から201609に更新に失敗したときの解決法

投稿者: | 2017年1月25日

AmazonLinuxのアップデートをした際に下記のようにエラーが発生しました。

$ sudo yum update
  読み込んだプラグイン:priorities, update-motd, upgrade-helper
  amzn-main/latest                                                                                                                                               | 2.1 kB     00:00
  amzn-updates/latest                                                                                                                                            | 2.3 kB     00:00
  10 packages excluded due to repository priority protections
  依存性の解決をしています
  --> トランザクションの確認を実行しています。
  (省略)
  --> 依存性解決を終了しました。
  エラー: パッケージ: python26-botocore-1.4.74-1.60.amzn1.noarch (amzn-updates)
               要求: python26-jmespath = 0.9.0
              インストール中: python26-jmespath-0.7.1-1.9.amzn1.noarch (amzn-main)
                  python26-jmespath = 0.7.1-1.9.amzn1
  エラー: パッケージ: aws-cli-1.11.17-1.43.amzn1.noarch (amzn-updates)
               要求: python27-futures >= 2.2.0
  エラー: パッケージ: 1:java-1.7.0-openjdk-1.7.0.121-2.6.8.1.69.amzn1.x86_64 (amzn-updates)
               要求: nss(x86-64) >= 3.21.0
              削除中: nss-3.16.2-7.57.amzn1.x86_64 (@amzn-updates)
                  nss(x86-64) = 3.16.2-7.57.amzn1
              次のものにより更新された: : nss-3.19.1-5.73.amzn1.x86_64 (amzn-main)
                  nss(x86-64) = 3.19.1-5.73.amzn1
  エラー: パッケージ: aws-cli-1.11.17-1.43.amzn1.noarch (amzn-updates)
               要求: python27-rsa >= 3.1.2-4.7
              利用可能: python27-rsa-3.1.2-4.6.amzn1.noarch (amzn-main)
                  python27-rsa = 3.1.2-4.6.amzn1
  エラー: パッケージ: python27-botocore-1.4.74-1.60.amzn1.noarch (amzn-updates)
               要求: python27-jmespath = 0.9.0
              利用可能: python27-jmespath-0.7.1-1.9.amzn1.noarch (amzn-main)
                  python27-jmespath = 0.7.1-1.9.amzn1
  エラー: パッケージ: libcurl-7.47.1-9.66.amzn1.x86_64 (amzn-updates)
               要求: nss(x86-64) >= 3.21.0
              削除中: nss-3.16.2-7.57.amzn1.x86_64 (@amzn-updates)
                  nss(x86-64) = 3.16.2-7.57.amzn1
              次のものにより更新された: : nss-3.19.1-5.73.amzn1.x86_64 (amzn-main)
                  nss(x86-64) = 3.19.1-5.73.amzn1
  エラー: パッケージ: initscripts-9.03.49-1.35.amzn1.x86_64 (amzn-updates)
               要求: sysvinit >= 2.87-6
              インストール: sysvinit-2.87-5.dsf.14.amzn1.x86_64 (installed)
                  sysvinit = 2.87-5.dsf.14.amzn1
  エラー: パッケージ: aws-cli-1.11.17-1.43.amzn1.noarch (amzn-updates)
               要求: python27-jmespath = 0.9.0
              利用可能: python27-jmespath-0.7.1-1.9.amzn1.noarch (amzn-main)
                  python27-jmespath = 0.7.1-1.9.amzn1
   問題を回避するために --skip-broken を用いることができます。
   これらを試行できます: rpm -Va --nofiles --nodigest

アップデートパッケージの依存関係がうまくできていません。
調査を進めるとそもそもとしてアップデート予定のAmazonLinux自体のバージョン古いものとなっていました。
ログインするときにバージョンアップ可能なOSが表示されます。
最新は「2016.09」のはずですが「2015.09」となっていました。

$ ssh servername
  Last login: Tue Nov 29 12:47:40 2016 from ip-10-253-40-45.ap-northeast-1.compute.internal
       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|
  https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
  65 package(s) needed for security, out of 217 available
  Run "sudo yum update" to apply all updates.
  Amazon Linux version 2015.09 is available.

この状態を解決する方法はyumの設定を変更することです。
yum.confを開き、「releasever」の項目を書き換えます。
デフォルトでは「latest」となっていますので最新のバージョンを指定するようにします。

$ vi /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=system-release
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
deltarpm=0
# by default the yum configuration will point to the latest release
# of Amazon Linux AMI. If you prefer not to automatically move to
# new releases, comment out this line.
#releasever=latest
releasever=2016.09
#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

これでもう一度ログインしなおすと下記のようにアップデート可能なOSバージョンが更新されます。

$ ssh servername
Last login: Tue Nov 29 13:07:41 2016 from ip-10-252-40-48.ap-northeast-1.compute.internal
       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
74 package(s) needed for security, out of 219 available
Run "sudo yum update" to apply all updates.
Amazon Linux version 2016.09 is available.

この状態でyum updateを実施したところパッケージの依存関係が解決でき、完了することができました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA