How do I get yum to notice that a dependency is already met?

Issues related to applications and software problems
TheOtherDave
Posts: 4
Joined: 2018/01/02 18:37:50

How do I get yum to notice that a dependency is already met?

Postby TheOtherDave » 2018/03/12 18:27:13

Hi everyone, I'm trying to "sudo yum install devtoolset-6*", and yum wants to install boost 1.53 as a dependency. The trouble is, some other software we use requires boost 1.61, so installing 1.53 is a deal-breaker. How do I convince yum that the dependency is met so that the other software's requirements remain met?

User avatar
TrevorH
Forum Moderator
Posts: 22596
Joined: 2009/09/24 10:40:56
Location: Brighton, UK

Re: How do I get yum to notice that a dependency is already met?

Postby TrevorH » 2018/03/12 19:11:38

CentOS ships boost 1.53 as part of the base/updates repos and will always ship that version. We do not ship boost 1.61 and nor does any other reputable repo that I can find.

Your problem is not that devtoolset-6 requires boost 1.53 as many other CentOS packages will do so too. It's the version we provide and everything that needs boost is built against it. Your problem is the opposite - your other app is built against a non-CentOS boost.

You may be able to bypass this (until the next thing you want to install requires our boost) by not installing the package that requires it. The devtoolset-6 package is a meta-package and just pulls in all the other devtoolset-6-* packages. Don't install that, install the others by name instead.

---> Package devtoolset-6-dyninst.x86_64 0:9.2.0-4.el7 will be installed
--> Processing Dependency: libboost_thread-mt.so.1.53.0()(64bit) for package: devtoolset-6-dyninst-9.2.0-4.el7.x86_64
--> Processing Dependency: libboost_system-mt.so.1.53.0()(64bit) for package: devtoolset-6-dyninst-9.2.0-4.el7.x86_64


So, omit devtoolset-6-dyninst and anything that requires it and you should be OK. Like yum install devtoolset-6-binutils devtoolset-6-dwz devtoolset-6-elfutils devtoolset-6-elfutils-libelf devtoolset-6-elfutils-libs devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-gcc-gfortran devtoolset-6-gdb devtoolset-6-libstdc++-devel devtoolset-6-libquadmath-devel devtoolset-6-ltrace devtoolset-6-make devtoolset-6-memstomp devtoolset-6-oprofile devtoolset-6-runtime devtoolset-6-strace devtoolset-6-toolchain devtoolset-6-valgrind
CentOS 5 died in March 2017 - migrate NOW!
Full time Geek, part time moderator. Use the FAQ Luke

TheOtherDave
Posts: 4
Joined: 2018/01/02 18:37:50

Re: How do I get yum to notice that a dependency is already met?

Postby TheOtherDave » 2018/03/13 13:08:14

Great, thanks!

So, AFAIK, the only parts of devtoolset-6 I actually need are g++ and gcc. I'd figured things might get strange without the rest of it... is that not the case?

Would it be possible to only install the various .so files from 1.53? AFAIK, unlike header files, the .so files have version #s tacked on the end and can peacefully coexist with their more recent 1.61 brethren.

User avatar
TrevorH
Forum Moderator
Posts: 22596
Joined: 2009/09/24 10:40:56
Location: Brighton, UK

Re: How do I get yum to notice that a dependency is already met?

Postby TrevorH » 2018/03/13 14:06:52

It sounds like your boost 1.61 is broken. Where did you get it from?
CentOS 5 died in March 2017 - migrate NOW!
Full time Geek, part time moderator. Use the FAQ Luke

TheOtherDave
Posts: 4
Joined: 2018/01/02 18:37:50

Re: How do I get yum to notice that a dependency is already met?

Postby TheOtherDave » 2018/03/13 16:20:48

We compiled it from source (sorry I don't recall if it was just downloaded, or checked out the from their git repo), and installed into `/usr/local'.

Now that I look, though, the path to its headers does contain the version: `/usr/local/include/boost-1_61/boost'.

Odd, I could've sworn I told it to leave that part out because it was causing too many problems with other bits of software looking in`/usr/local/include/boost', and either erroring-out after not finding anything, or, worse, looking in `/usr/include/boost' (which would've been 1.53 instead of 1.61).

Doubly odd, since I don't recall needing the "boost-1_61" part when I sym-linked all the boost files in `/usr/local/' to wherever yum would have put them if it had installed boost (`/usr/include/boost' -> `/usr/local/include/boost-1_61/boost', `/usr/lib/libboost_atomic-mt.a' -> `/usr/local/lib/libboost_atomic-mt.a', etc).

User avatar
TrevorH
Forum Moderator
Posts: 22596
Joined: 2009/09/24 10:40:56
Location: Brighton, UK

Re: How do I get yum to notice that a dependency is already met?

Postby TrevorH » 2018/03/13 16:44:53

Oh, so you didn't even package your newer boost. Yum won't know anything about unpackaged things which is why we never recommend using source installs.
CentOS 5 died in March 2017 - migrate NOW!
Full time Geek, part time moderator. Use the FAQ Luke

TheOtherDave
Posts: 4
Joined: 2018/01/02 18:37:50

Re: How do I get yum to notice that a dependency is already met?

Postby TheOtherDave » 2018/03/13 17:31:23

Correct. I'm aware that it's possible to create your own .rpm files, but I haven't looked too far into it because a) I'm not sure it'd gain me anything at this point, and b) the process seemed daunting. Did I merely stumble upon a poorly-written guide?

User avatar
TrevorH
Forum Moderator
Posts: 22596
Joined: 2009/09/24 10:40:56
Location: Brighton, UK

Re: How do I get yum to notice that a dependency is already met?

Postby TrevorH » 2018/03/13 18:06:22

It's not that complicated, especially if you get the SRPM for a previous version and amend it for yours. Use mock to do the builds. The problem that you're encountering here is that yum only knows about packages, it has no clue about source installs so as far as its concerned, you don't have boost installed at all.
CentOS 5 died in March 2017 - migrate NOW!
Full time Geek, part time moderator. Use the FAQ Luke