:::: MENU ::::

yum updateで重複するパッケージのエラーで更新できない


CentOS7上にて、yum updateを行った際に、「〜の複製です」とduplicateエラーにて更新出来ない状況に陥ったので、いろんな解決方法を試してみた。

# yum update

....
yum-utils-1.1.31-42.el7.noarch は yum-utils-1.1.31-40.el7.noarch の複製です
zsh-5.0.2-28.el7.x86_64 は zsh-5.0.2-25.el7_3.1.x86_64 の複製です

package-clenupで直す

  • package-clenupがない場合は、yum-utilsをインストール
# yum install yum-utils
  • 重複するパッケージを削除
# package-cleanup --dupes

package-cleanupで直らない場合

# LANG=C
# yum check duplicates | awk '/is a duplicate/ {print $6}' > /tmp/yum.dupes
# cat /tmp/yum.dupes
....
1:yelp-3.14.2-1.el7.x86_64
1:yelp-libs-3.14.2-1.el7.x86_64
yelp-xsl-3.14.0-1.el7.noarch
yum-plugin-fastestmirror-1.1.31-40.el7.noarch
yum-utils-1.1.31-40.el7.noarch
zsh-5.0.2-25.el7_3.1.x86_64
# yum remove `cat /tmp/DUPES`

別な方法

How to remove duplicate packages from a failed yum transaction (when yum-complete-transaction fails to complete)

# yum-complete-transaction
# tar cjf /tmp/rpm_db.tar.bz2 /var/lib/{rpm,yum}
# yum check &> /tmp/yumcheck
# grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep -v "\:" > /tmp/duplicaterpms
# grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep ":" | awk -F':' '{ print $NF }' >> /tmp/duplicaterpms
# for i in $(cat /tmp/duplicaterpms)
do
rpm -e --justdb --nodeps $i
done

これで直った!


So, what do you think ?