Thursday, October 12, 2017

Dependency errors with yum update - libgpod

I tried to do a 'yum update' one day, a couple weeks had gone by so there was a big list of packages available. I know I can use yum-cron, but I like to be more in control and do it myself. Of course I used to do the same thing with Windows and eventually caved and let it update whenever, but for now I want to do it myself. :)  

Anyway, I was getting dependency errors on libgpod, which I don't need since I don't have Apple devices - it allows connections to an iPod. The following was the output:

yum update

[snip]

Errors:
Error: Package: libgpod-0.8.3-14.el7.x86_64 (@epel)
           Requires: libplist.so.1()(64bit)
           Removing: libplist-1.10-4.el7.x86_64 (@anaconda/7.2)
               libplist.so.1()(64bit)
           Updated By: libplist-1.12-3.el7.x86_64 (ol7_latest)
              ~libplist.so.3()(64bit)
Error: Package: libgpod-0.8.3-14.el7.x86_64 (@epel)
           Requires: libimobiledevice.so.4()(64bit)
           Removing: libimobiledevice-1.1.5-6.el7.x86_64 (@anaconda/7.2)
               libimobiledevice.so.4()(64bit)
           Updated By: libimobiledevice-1.2.0-1.el7.x86_64 (ol7_latest)
              ~libimobiledevice.so.6()(64bit)
Error: Package: libgpod-0.8.3-14.el7.x86_64 (@epel)
           Requires: libusbmuxd.so.2()(64bit)
           Removing: usbmuxd-1.0.8-11.el7.x86_64 (@anaconda/7.2)
               libusbmuxd.so.2()(64bit)
           Obsoleted By: usbmuxd-1.1.0-1.el7.x86_64 (ol7_latest)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

I poked into it a bit, but in the end there was no working around the root of the problem. I tried the two options suggested:

yum update --skip-broken

Well this worked, but just avoids the issue and leaves the problem for next time.

rpm -Va --nofiles --nodigest

This will verify installed packages to check for anything wrong, the --nofiles and --nodigest refers to ignoring file attributes and digest problems. This didn't help in my case - nothing useful was discovered.

In the end, I removed the problem package:

rpm -e --nodeps --allmatches libgpod
yum update

The options are to ignore dependencies, and to remove all versions of the package.

Voila.  Now if I had an iPod, it would've meant actually resolving the root problem. Not too sure exactly what it is, but I suspect the libgpod package would have to be rebuilt in epel due to some issue with its dependencies.

Addendum: you may want to also exclude the package from epel repositories. You can add: 

exclude=libgpod*

to the file:

/etc/yum.repos.d/epel.repo