You are not logged in.

#1 2015-05-29 13:45:39

garyamort
Member
Registered: 2014-06-05
Posts: 6

How to avoid specific library links?

I frequently run into issues starting applications were the problem is solely due to upgrading a library AND was completely irrelevant.

As an example, I upgraded libboost on my system from 1.57 to 1.58 using the official packages:
error while loading shared libraries: libboost_iostreams.so.1.57.0: cannot open shared object file: No such file or directory

Checking my lib directory, sure enough there exists 2 entrees for this library:
libboost_iostreams.so.1.58.0
libboost_iostreams.so@ -> libboost_iostreams.so.1.58.0

Most of the time, the program will execute with either version of the library, there were no changes which affected it.
For example, if I create a symlink in /usr/lib such as:
libboost_iostreams.1.57.0@ -> libboost_iostreams.so the program will execute without any errors[assuming
this was the only library]

Is there a compile time option I can add to makepkg so that instead of linking to the version specific file, it links to the generic file entry?

Offline

#2 2015-05-29 13:47:52

tomk
Forum Fellow
From: Ireland
Registered: 2004-07-21
Posts: 9,839

Re: How to avoid specific library links?

No. You should not be upgrading individual libraries like that - partial upgrades are unsuppoted in Arch.

Run pacman -Syu to upgrade your system.

Offline

#3 2015-05-29 13:54:53

Raynman
Member
Registered: 2011-10-22
Posts: 1,539

Re: How to avoid specific library links?

tomk wrote:

Run pacman -Syu to upgrade your system.

The problem description seems a little incomplete, but OP might be more concerned with packages that live outside any of the repos known to pacman.

Offline

#4 2015-05-29 14:12:07

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,586

Re: How to avoid specific library links?

garyamort wrote:

Is there a compile time option I can add to makepkg so that instead of linking to the version specific file, it links to the generic file entry?

No, because it's a really bad thing to do. The filename (and soname) changes because the ABI changed. The libboost_iostreams.1.57.0 symlink you mention is a horrible mistake that WILL get you into trouble.

Online

#5 2015-05-29 16:03:58

garyamort
Member
Registered: 2014-06-05
Posts: 6

Re: How to avoid specific library links?

Raynman wrote:
tomk wrote:

Run pacman -Syu to upgrade your system.

The problem description seems a little incomplete, but OP might be more concerned with packages that live outside any of the repos known to pacman.

In this particular case it was for wesnoth-devel - which is from the aur.  However I have run into the same issue with other apps. including apps from the the main repository.

Generally it occurs with either games or utilities[by utilities I mean things like usbview or usbutils].

For apps like that, I don't particular care if they break due to having to add this kind of hack - it has no effect on my underlying system.  Quit often I don't want to upgrade those tools because I actively do not want the features that have been added or I installed the app for a specific feature which was removed.  If they segfault...then I'll work around it.

It happens a lot with packages related to usb and bluetooth - early tools have more knobs to fiddle with when trying to set up stupid stuff.  Stupid example here is setting up a fake 3d glasses server on my desktop to play around with making the screen larger then it really is[take a 1680 wide screen and make it 2500 wide by swapping the viewpoint in sync with the 3d glasses shutters.   That one just comes to mind because I was fiddling with that recently...till I discovered that going outside the arch repo and installing bluez from git was more useful.


It's a real pain dealing for apps with a gui, since the app silently dies when there are library issues and then I have to figure out the command from the desktop file, open a terminal, run it manually...figure out if upgrading it will break my use case, and if so then monkeypatch all those lib files to get it to run[and hopefully remember to get rid of those symbolic links when I'm done]

Offline

#6 2015-05-29 16:08:05

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,586

Re: How to avoid specific library links?

You're operating it a totally unsupported manner. tomk already gave you the answer,  you update everything or nothing.

The real problem here is that you're doing all of this with very little knowledge of library ABIs and dynamic linking. If you really want to run this way, you need to do more reading.

Last edited by Scimmia (2015-05-29 16:09:18)

Online

#7 2015-05-29 16:29:06

WorMzy
Forum Moderator
From: Scotland
Registered: 2010-06-16
Posts: 11,882
Website

Re: How to avoid specific library links?

Moving to Newbie Corner.


Sakura:-
Mobo: MSI MAG X570S TORPEDO MAX // Processor: AMD Ryzen 9 5950X @4.9GHz // GFX: AMD Radeon RX 5700 XT // RAM: 32GB (4x 8GB) Corsair DDR4 (@ 3000MHz) // Storage: 1x 3TB HDD, 6x 1TB SSD, 2x 120GB SSD, 1x 275GB M2 SSD

Making lemonade from lemons since 2015.

Offline

#8 2015-05-29 16:45:44

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 21,754

Re: How to avoid specific library links?

Hint: If you have AUR packages broken as a result of this, you simply have to rebuild them. But yeah follow everyone's advice and go read up on libraries, ABI and dynamic linking

Offline

Board footer

Powered by FluxBB