Architecture woes with libusb-static

I’ve been trying to debug a problem with my Dell Alienware m18x ((I’m actually not a gamer.  The m18x was the one of the few options out there that offered support for 32GB of memory in a laptop.  Sure, the battery lasts for less than an hour, but it’s handy for virtualization demos.)).  In order to play with the cool back-lighting, you need install alienfx-lite, which requires userspace access to USB.  That’s what libusb comes in… or at least, it should.

So far with f19, I haven’t been able to get alienfx-lite to work.  But I haven’t really devoted any time to fixing it either.  Every so often I’ll hack on it a bit, which is why I installed the other libusb packages.

# yum search libusb
updates/19/x86_64/pkgtags | 475 kB 00:00:00
======================= N/S matched: libusb =======================
Loaded plugins: langpacks, refresh-packagekit
libusb-devel.i686 : Development files for libusb
libusb-devel.x86_64 : Development files for libusb
libusb-static.i686 : Static development files for libusb
libusb-static.x86_64 : Static development files for libusb
libusbx-devel.i686 : Development files for libusbx
libusbx-devel.x86_64 : Development files for libusbx
libusbx-devel-doc.noarch : Development files for libusbx
libgusb.i686 : GLib wrapper around libusb1
libgusb.x86_64 : GLib wrapper around libusb1
libusb.i686 : A library which allows userspace access to USB devices
libusb.x86_64 : A library which allows userspace access to USB devices
libusbx.i686 : Library for accessing USB devices
libusbx.x86_64 : Library for accessing USB devices
mingw32-libusbx.noarch : MinGW library which allows userspace access to USB devices
mingw32-libusbx-static.noarch : MinGW static library which allows userspace access to USB devices
mingw64-libusbx.noarch : MinGW library which allows userspace access to USB devices
mingw64-libusbx-static.noarch : MinGW static library which allows userspace access to USB devices
pyusb.noarch : Python bindings for libusb


Name and summary matches only, use "search all" for everything.

So I went ahead an installed libusb-static and libusbx. It didn’t actually help, but I went back to work on other stuff and forgot to remove those packages.

This morning I noticed that I had a bunch of updates that needed to be installed.  But after a yum update I saw that it wanted to install a zillion i686 packages.

Having forgotten about my extra libusb packages, I had to troubleshoot what was going on.  You can exclude architectures in /etc/yum.conf, but that seemed silly.  Luckily, yum has a nice verbose option that saved the day.

# yum update -v | grep i686
TSINFO: Marking 1:libusb-devel-0.1.4-1.fc19.i686 as install for 1:libusb-static-0.1.4-1.fc19.x86_64
---> Package libusb-devel.i686 1:0.1.4-1.fc19 will be installed
...

A quick rpm -e libusb-static fixed the problem, and I was able to update.

So what’s up with libusb-static?  Let’s check out the spec.

# yumdownloader --source libusb-static
Loaded plugins: langpacks, refresh-packagekit
Enabling updates-source repository
Enabling rpmfusion-nonfree-updates-source repository
Enabling rpmfusion-nonfree-source repository
Enabling rpmfusion-free-updates-source repository
Enabling fedora-source repository
Enabling rpmfusion-free-source repository
libusb-0.1.5-2.fc19.src.rpm | 286 kB 00:00:01

Huh. Looks like source rpm for libusb must build libusb-static.

# rpm2cpio libusb-0.1.5-2.fc19.src.rpm | cpio -i libusb.spec
567 blocks

In looking through the spec file, I noticed the comment:

* Sun Aug 04 2013 Hans de Goede - 0.1.5-1
- Update to 0.1.5 (#965414)
- Drop unused -static subpackage

Interesting. So there is no libusb-static as of libusb 0.1.5-1. So what I think was happening is that yum couldn’t find another libusb-static to resolve the dependency that I created when I manually installed libusb-static earlier, so it fell back on the i686 architecture.

I’m not entirely satisfied with this explanation, so I might dig a little more. But as far as an example of how to troubleshoot unwanted architectures getting installed by yum for apparently no reason, it seemed like it was worth blogging about.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s