SEARCH

Enter your search query in the box above ^, or use the forum search tool.

You are not logged in.

#1 2014-03-19 02:48:17

Alad
Software Satan
Registered: 2014-02-20
Posts: 1,512

LD_LIBRARY_PATH or running new applications in Waldorf

Some programs rely on a newer version of libc6 than what's in Waldorf/Debian Stable. libc6 is, in short:

Contains the standard libraries that are used by nearly all programs on the system. This package includes shared versions of the standard C library and the standard math library, as well as many others.

The usual way to go is recompile ("backport") the program. However this only works when the source code is available (not the case with proprietary software). Often the following is suggested:

  • Upgrade libc6 from testing/sid (if you don't pay attention and have mixed sources, this can happen automatically). This is dangerous practice as these aren't compatible, especially when the versions are wide apart - and per the above, nearly everything on your system relies on it. Plus, as debian is a tight-woven web of dependencies it will add conflicts.

  • Use an older (possibly bugged) version of the program, don't use it all, or dist-upgrade to testing/sid.


A way out is LD_LIBRARY_PATH. In short you load a newer version of libc6 for the program that needs it only.

====
UPDATE2: If a program using LLP opens the wrong child process, it may cause it to fail. See here and here for some examples.

UPDATE: To complicate matters, it seems you need a specific libc6. Steam (supported on ubuntu 12.04) eg works only with libc6 2.15 from ubuntu 12.04.
====


Let's take a common example, Steam. You can't even install the .deb:

gdebi steam.deb
Dependency is not satisfiable: libc6 (>= 2.15)

What we do is unpack the files

dpkg -X steam.deb steam && dpkg -e steam.deb steam/DEBIAN

and replace the dependency with a satisfiable one

sed -i 's/2.15/2.13/g' steam/DEBIAN/control

Then repackage it

dpkg -b steam steam-wheezy.deb

and install.

gdebi steam-wheezy.deb

(FYI: I also remove the Valve source entries)

If you try to run it it will update but not start because of libc6 < 2.15.

version `GLIBC_2.15' not found

Let's prepare the folder for the asked version of libc6 (replace i386 with amd64 if you're on a 64bit system).

sudo -i
mkdir /usr/local/ldlib && cd /usr/local/ldlib
wget http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.15-0ubuntu10.5_i386.deb
dpkg -X libc6_2.15-0ubuntu10.5_i386.deb .
cp -r lib/* .  && rm -r etc usr lib
exit

On a 32bit system you'll have a i386-linux-gnu folder, on 64 bit x86_64-linux-gnu.

Now let's make a wrapper script.

#!/bin/bash
LD_LIBRARY_PATH=/usr/local/ldlib/i386-linux-gnu:/usr/lib /usr/games/steam "$@"

make it exectuable (chmod +x) and put it eg in your ~/bin folder. You can find the path with

which steam

What this does is load the new libc6 from the ldlib folder (before the system's) for the application you specify. The "$@" means it will pass on all arguments to the original program.

(for steam you also need en_us locales)

That's it, replace steam with your favorite program that happens to need a newer libc.

Last edited by Alad (2014-05-23 22:12:28)

Offline

Help fund CrunchBang, donate to the project!

#2 2014-03-19 03:24:29

Ak_0
#! Member
Registered: 2011-05-14
Posts: 83

Re: LD_LIBRARY_PATH or running new applications in Waldorf

nice post, I have the debian-steam version which worked but this is seems to be a  good workaround. I just have one question though, how does steam know to look inside the ~/bin folder for the wrapper?

Last edited by Ak_0 (2014-03-19 03:26:14)


Вкру́те и вяз перело́мишь - In affect you can break even an elm.
Всё гениальное просто. - Genius is simplicity.

Offline

#3 2014-03-19 12:08:53

Snap
#! Die Hard
Registered: 2013-10-22
Posts: 567

Re: LD_LIBRARY_PATH or running new applications in Waldorf

Thanks for putting it together, Alad.

Thumbsup!

Offline

#4 2014-03-19 14:51:34

Alad
Software Satan
Registered: 2014-02-20
Posts: 1,512

Re: LD_LIBRARY_PATH or running new applications in Waldorf

Thanks guys.

I just have one question though, how does steam know to look inside the ~/bin folder for the wrapper?

Files in ~/bin are the first in your PATH (check with echo $PATH); ie if you call the script "steam" and launch "steam" from somewhere, it will launch the script in ~/bin and not the actual "steam" file in /usr/bin.

Offline

#5 2014-07-10 04:55:23

alaskan-hippie
#! CrunchBanger
Registered: 2011-03-24
Posts: 105

Re: LD_LIBRARY_PATH or running new applications in Waldorf

I tried this with the latest opera 24, and used the jessie libc6 (2.19) deb. Everything went according to plan, up to this:

$ opera
Inconsistency detected by ld.so: dl-close.c: 743: _dl_close: Assertion `map->l_init_called' failed!

So I tried it with the libc6 from ubuntu (2.15) and got this:

$ opera
 /usr/lib/x86_64-linux-gnu/opera-developer/opera_sandbox: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib/x86_64-linux-gnu/opera-developer/opera_sandbox)

I'm not sure what this means. Any ideas?

Last edited by alaskan-hippie (2014-07-10 05:00:45)

Offline

#6 2014-07-10 06:20:21

Alad
Software Satan
Registered: 2014-02-20
Posts: 1,512

Re: LD_LIBRARY_PATH or running new applications in Waldorf

Unfortunately browsers are REALLY complicated. In the first post I link to a script that wraps Chrome for CentOS - you could try to adapt it for Opera. As Opera is proprietary, that's the only solution I see besides dist-upgrading.

Offline

#7 2014-07-10 09:01:46

alaskan-hippie
#! CrunchBanger
Registered: 2011-03-24
Posts: 105

Re: LD_LIBRARY_PATH or running new applications in Waldorf

That's what I was afraid of. I'll take a look through that script in a few hours when I have more rev in my engine. If I get it working, I'll make a new post and link to it HERE or in it's own reply so it get's people's attention.

Last edited by alaskan-hippie (2014-07-10 09:02:11)

Offline

#8 2014-12-04 21:08:07

iak92
New Member
Registered: 2014-12-04
Posts: 2

Re: LD_LIBRARY_PATH or running new applications in Waldorf

Hey,
I've installed steam with this guide and I can start it. But if I install any Games under Steam they won't start.
When I start Steam it says that libc.so.6 is missing and if I want to continue. I hit Enter and it starts. If I want to start a Game e.g. Beat Hazard following shows up:

Game update: AppID 49600 "Beat Hazard", ProcID 15735, IP 0.0.0.0:0
ERROR: ld.so: object '/home/kai/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
/bin/sh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/kai/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so)
/bin/sh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/kai/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6)
/bin/sh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/kai/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libXext.so.6)
/bin/sh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/kai/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libgcc_s.so.1)
/bin/sh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/kai/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libX11.so.6)
/bin/sh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /home/kai/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libX11.so.6)
/bin/sh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/kai/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libxcb.so.1)
Game removed: AppID 49600 "Beat Hazard", ProcID 15735 

I've tried the trick with the xdg-open script but it didn't work.

Offline

#9 2014-12-04 21:22:51

Alad
Software Satan
Registered: 2014-02-20
Posts: 1,512

Offline

#10 2014-12-06 17:08:56

iak92
New Member
Registered: 2014-12-04
Posts: 2

Re: LD_LIBRARY_PATH or running new applications in Waldorf

Hey,
The trick with the launchscript doesn't work for me.

Sadly the script doesn't work because theres no libc6_2.15-0ubuntu10.5* on the security server. Any ideas for this one? Should I take the version with 10.9? Or can I get the 10.5 version somewhere else?

Last edited by iak92 (2014-12-06 17:09:15)

Offline

#11 2014-12-07 00:16:18

Alad
Software Satan
Registered: 2014-02-20
Posts: 1,512

Re: LD_LIBRARY_PATH or running new applications in Waldorf

^ 10.9 should work fine.

Offline

#12 2015-01-27 18:56:11

quinnuendo
Member
Registered: 2014-10-15
Posts: 13

Re: LD_LIBRARY_PATH or running new applications in Waldorf

For anyone interested, this can also be applied to Grim Fandango Remastered that is freshly out. I already have steam installed using the GhostSquad57 method, so I just used the "steam-debian" script as a base, and changed it to run Grim Fandango.

I have the GOG version, so I just put a script called "ld-preload.sh" (though you can call it whatever) in the root folder of the game and set it have this inside itself:

#!/bin/sh

# If you use non-english locales and Steam doesn't launch, try "LC_ALL=C ./ld-preload"
# Thanks to GitHub user rulet for pointing this out.

LD_LIBRARY_PATH=\
/usr/lib/steam/i386-linux-gnu/\
:/usr/lib/steam/x86_64-linux-gnu/\
:/usr/lib\
:/usr/lib32\
:/usr/lib/i386-linux-gnu/nvidia/current/ ./start.sh "$@"

This should work just fine on Waldorf and any other distro based of Debian Wheezy.
I haven't played the game much yet, but it started up fine and I messed a bit with the options.

I thought it might be interesting to some people, so I added it to this thread, since I didn't think it's for a new thread.

Offline

#13 2015-04-22 03:40:46

nuentoter
New Member
Registered: 2015-04-22
Posts: 1

Re: LD_LIBRARY_PATH or running new applications in Waldorf

ok so tried this today and 404 error, checked out the containing folder and it seems only 10.11 and 10.12 are available should these work? i'm guessing so but would rather check

Offline

#14 2015-04-22 05:06:23

ohnonot
...again
Registered: 2012-05-22
Posts: 2,205

Re: LD_LIBRARY_PATH or running new applications in Waldorf

iak92 & alaskan-hippie,
both your error messages state that the program is looking for glib 2.14, and alad's howto installs 2.15.
and it seems that debian stable uses 2.13?

Offline

Board footer

Powered by FluxBB

Copyright © 2012 CrunchBang Linux.
Proudly powered by Debian. Hosted by Linode.
Debian is a registered trademark of Software in the Public Interest, Inc.
Server: acrobat

Debian Logo