3

I have spent all day trying various things and made no progress whatsoever.

I am compiling an rpm package for my application (MyApp.rpm), for RHEL6 64-bit, which requires a third party, 32-bit driver package called aksusbd.rpm. Now, aksusbd.rpm in turn requires compatibility mode, provided on RHEL6 by glibc.i686.rpm.

So somewhere in my spec file for MyApp.rpm I have:

MyApp.spec

Requires: glibc(x86-32) 
Requires: aksusbd >= 1.14

What it does during installation (yum install MyApp) is, installs aksusbd first, which fails with no 32-bit compatibility installed. Then just to tease me, immediately after installs glibc. So when its all over I can type

yum install aksusbd 

and it works this time because glibc is now installed.

How on earth do I teach it to do better than this!

(growl)

Ali
  • 1,462
  • 2
  • 17
  • 32
  • Related: http://unix.stackexchange.com/questions/52455/64bit-rpm-can-not-resolve-32bit-dependencies – Ali Jun 04 '13 at 09:02

4 Answers4

2

You can follow Aaron's suggestion and tweak the third party RPM you have with rpmrebuild. It allows you to modify the requires spec of the RPM package:

rpmrebuild --package -n --edit-requires <your third party rpm package>

It's a hack but just for the requires tags in the RPM I would not be concerned.

Bernhard
  • 8,583
  • 4
  • 41
  • 42
0

First off I'd suggest putting the requires on the same line. Just separate them with a comma, they should then go in the order you've specified. If it doesn't and you're on RPM version 4.3 or below, you can use the PreReq tag as specified in the rpm.org docs about half way down the page.

If neither of those solutions works, or you are on a version of RPM greater than or equal to 4.4 I would imagine something else is going on that is causing a problem. I'd start by creating a new spec for some 'fake' project that specifically targets the issue of glibc not being installed before aksusbd. If that works we know it's something with your MyApp.spec, if it doesn't work then I'd suggest reviewing the naming convention of glibc, perhaps there is some kind of issue with how it's interpreting your (x86-32).

Forrest
  • 1,370
  • 9
  • 20
  • You could add some code to the %pre section to perform a check for that specific glibc, and then if it's not installed run a yum install on it, then aksusbd. It would be very ghetto, but it might do as a workaround. – Forrest Jun 04 '13 at 17:09
0

Sounds like the aksusbd RPM is what needs to be fixed - they need a Requires or Requires(pre) set. File a bug with the driver vendor.

Aaron D. Marasco
  • 6,506
  • 3
  • 26
  • 39
  • 1
    Not an option, we gotta release coming up. Besides the driver is for multiple linux distros and only on RHEL it has this issue. On SLES it installs fine. I'm guessing each distro has a different package that would provide 32-bit compatibility, and the driver vendor cannot account for all. The beautiful world of linux distros. – Ali Jun 04 '13 at 08:50
0

I had exactly the same problem (and same in YUM groups). If Forrest suggestion to put requires in same line works for you, please let us know. Otherwise, you can try to add an RPM that only requires aksusbd and add it to requires list. If YUM installs dependencies in an Alpha-beta order, name it something between aksusbd and glibc and it might work.

Eran Ben-Natan
  • 2,515
  • 2
  • 16
  • 19