Generic Linux Installer not seeing file within its own folde

xabre
Posts: 45
Joined: Thu Mar 08, 2012 7:19 pm

Re: Generic Linux Installer not seeing file within its own f

Post by xabre »

No need to symlink libpcre, just install luazip5.1, lrexlib-pcre, lua51, lua51-filesystem, lua51-sql-sqlite, quazip, all are in official repoes or AUR. You can't use all libraries provided with generic installer (libyajl being the only exception) as they are compiled with older version of glibc than Arch has (you'll get "version `GLIBC_2.17' not found" errors, because Arch is using glibc 2.19).
But if you install packages from official repositories it complains about, thus use system libs instead of provided ones, it will work.

Small hint: pkgfile is a very handy tool for Arch to find which package contains some specific file when something complains about it missing.

User avatar
SlySven
Posts: 994
Joined: Mon Mar 04, 2013 3:40 pm
Location: Deepest Wiltshire, UK
Discord: SlySven#2703

Re: Generic Linux Installer not seeing file within its own f

Post by SlySven »

And if you want to find all the libraries that mudlet or any other executable will try to find when it starts up you might get some useful data from the ldd(1) command, this lists EVERY library it wants to use and if any are missing it will show up, for example on a development build I had to hand:

Code: Select all

stephen@Kirk:/media/spare/src/mudlet-dev/Mudlet2/verify/build-src-Desktop_Qt_5_2_1_GCC_32bit-Debug$ ldd ./mudlet
	linux-gate.so.1 =>  (0xb77db000)
	libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb7776000)
	liblua5.1.so.0 => /usr/lib/i386-linux-gnu/liblua5.1.so.0 (0xb7749000)
	libhunspell-1.3.so.0 => /usr/lib/i386-linux-gnu/libhunspell-1.3.so.0 (0xb76f3000)
	libyajl.so.2 => /usr/lib/i386-linux-gnu/libyajl.so.2 (0xb76e8000)
	libGLU.so.1 => /usr/lib/i386-linux-gnu/libGLU.so.1 (0xb7673000)
	libzip.so.2 => /usr/local/lib/libzip.so.2 (0xb765f000)
	libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7646000)
	libQt5OpenGL.so.5 => /media/spare/Qt/5.2.1/gcc/lib/libQt5OpenGL.so.5 (0xb75e3000)
	libQt5Multimedia.so.5 => /media/spare/Qt/5.2.1/gcc/lib/libQt5Multimedia.so.5 (0xb7507000)
	libQt5Widgets.so.5 => /media/spare/Qt/5.2.1/gcc/lib/libQt5Widgets.so.5 (0xb6eb8000)
	libQt5Network.so.5 => /media/spare/Qt/5.2.1/gcc/lib/libQt5Network.so.5 (0xb6d63000)
	libQt5Gui.so.5 => /media/spare/Qt/5.2.1/gcc/lib/libQt5Gui.so.5 (0xb68c8000)
	libQt5Core.so.5 => /media/spare/Qt/5.2.1/gcc/lib/libQt5Core.so.5 (0xb63fe000)
	libGL.so.1 => /usr/lib/i386-linux-gnu/libGL.so.1 (0xb63a4000)
	libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb638b000)
	libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb629f000)
	libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb6279000)
	libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb625b000)
	libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb60f7000)
	libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb60f3000)
	libpulse.so.0 => /usr/lib/i386-linux-gnu/libpulse.so.0 (0xb60a2000)
	libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xb6050000)
	libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb5f52000)
	libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb5e1a000)
	libicui18n.so.51 => /media/spare/Qt/5.2.1/gcc/lib/libicui18n.so.51 (0xb5bf8000)
	libicuuc.so.51 => /media/spare/Qt/5.2.1/gcc/lib/libicuuc.so.51 (0xb5a7f000)
	libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb5a7c000)
	librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xb5a72000)
	/lib/ld-linux.so.2 (0xb77dc000)
	libglapi.so.0 => /usr/lib/i386-linux-gnu/libglapi.so.0 (0xb5a5c000)
	libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb5a4a000)
	libXdamage.so.1 => /usr/lib/i386-linux-gnu/libXdamage.so.1 (0xb5a47000)
	libXfixes.so.3 => /usr/lib/i386-linux-gnu/libXfixes.so.3 (0xb5a41000)
	libX11-xcb.so.1 => /usr/lib/i386-linux-gnu/libX11-xcb.so.1 (0xb5a3e000)
	libxcb-glx.so.0 => /usr/lib/i386-linux-gnu/libxcb-glx.so.0 (0xb5a25000)
	libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb5a02000)
	libXxf86vm.so.1 => /usr/lib/i386-linux-gnu/libXxf86vm.so.1 (0xb59fc000)
	libdrm.so.2 => /usr/lib/i386-linux-gnu/libdrm.so.2 (0xb59ee000)
	libjson-c.so.2 => /lib/i386-linux-gnu/libjson-c.so.2 (0xb59e2000)
	libpulsecommon-4.0.so => /usr/lib/i386-linux-gnu/pulseaudio/libpulsecommon-4.0.so (0xb596f000)
	libdbus-1.so.3 => /lib/i386-linux-gnu/libdbus-1.so.3 (0xb5924000)
	libcap.so.2 => /lib/i386-linux-gnu/libcap.so.2 (0xb591f000)
	libffi.so.5 => /usr/lib/i386-linux-gnu/libffi.so.5 (0xb5916000)
	libicudata.so.51 => /media/spare/Qt/5.2.1/gcc/lib/libicudata.so.51 (0xb43cc000)
	libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb43c9000)
	libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb43c3000)
	libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xb43aa000)
	libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xb43a2000)
	libXtst.so.6 => /usr/lib/i386-linux-gnu/libXtst.so.6 (0xb439b000)
	libwrap.so.0 => /lib/i386-linux-gnu/libwrap.so.0 (0xb4391000)
	libsndfile.so.1 => /usr/lib/i386-linux-gnu/libsndfile.so.1 (0xb431d000)
	libasyncns.so.0 => /usr/lib/i386-linux-gnu/libasyncns.so.0 (0xb4317000)
	libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb4311000)
	libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xb430a000)
	libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xb42fb000)
	libnsl.so.1 => /lib/i386-linux-gnu/i686/cmov/libnsl.so.1 (0xb42e4000)
	libFLAC.so.8 => /usr/lib/i386-linux-gnu/libFLAC.so.8 (0xb4294000)
	libvorbisenc.so.2 => /usr/lib/i386-linux-gnu/libvorbisenc.so.2 (0xb411c000)
	libvorbis.so.0 => /usr/lib/i386-linux-gnu/libvorbis.so.0 (0xb40ef000)
	libogg.so.0 => /usr/lib/i386-linux-gnu/libogg.so.0 (0xb40e8000)
	libresolv.so.2 => /lib/i386-linux-gnu/i686/cmov/libresolv.so.2 (0xb40d4000)
stephen@Kirk:/media/spare/src/mudlet-dev/Mudlet2/verify/build-src-Desktop_Qt_5_2_1_GCC_32bit-Debug$ 
Don't worry about the linux-gate entry that's a special case, but you can see every other library file it wants...!

orik
Posts: 1
Joined: Sat Aug 23, 2014 5:36 am

Re: Generic Linux Installer not seeing file within its own f

Post by orik »

Hello Iktomi, Xabre and SlySven,

I have experienced the same problem Iktomi reported, and have successfully overcomed it.
So, I share my solution next:

Firstly, I work on a Debian distribution (wheezy). I can confirm it is a dependency problem, and a little step must be done after installing the dependencies pointed by Xabre ( luazip5.1, lrexlib-pcre, lua51, lua51-filesystem, lua51-sql-sqlite, quazip) .That is, in my case.

I only received the error:

Code: Select all

./mudlet: error while loading shared libraries: libquazip.so.0: cannot open shared object file: No such file or directory
which, as Xabre pointed out, is related to the quazip package.

Now, for Debian systems, quazip is only included in the unstable (sid) release at this point. So, you need to install it bare handed. You can obtain the source code from it's source forge webpage and the instructions for the project's webpage.

However, a pair of things must be considered:

1st. As explainded in the project's site, a fundamental dependency is to have Qt installed among with it's dev files (version 4 or 5). If you don't have this packages, be sure to install them first (Welcome to the dependency hell!)

2nd. You must set the installation path to /usr or /usr/local, depending of your ld.so conf file, check it by executing:

Code: Select all

cat /etc/ld.so.conf
Next, if the qt dependency is satisfied (an easy way to verify is simply to run the "qmake" command anywhere in a console), you should execute the following steps to install quazip:

Code: Select all

$ cd /wherever/quazip/source/is/quazip-x.y.z/quazip
$ qmake PREFIX=/usr
$ make
$ sudo make install
This will install quazip's shared libraries and include files in the /usr/lib and /usr/include directories respectively.

I found another step has to be taken for the current version of quazip. As SlySven pointed, ldd command allows you to check for shared libraries dependencies. And it so happens that Mudlet 2.1 looks a the shared library named libquazip.so.0 which is no longer existent in the current version of quazip.

At this point you should verify that the libquazip files were actually installed in the /usr/lib directory. This is easily done with

Code: Select all

$ ls /usr/lib | grep -e quazip
If you have followed me this far, you are just a step away. Now, we only need to create a symbolic link
(as pointed out here):

Code: Select all

$ cd /usr/lib
$ sudo ln -s libquazip.so.1 libquazip.so.0
And then you're done. You should be able to run either ./run-mudlet.sh or ./mudlet.sh without problems... That is, if you only missed the quazip library. In case you still have other problems, verify you have installed the dependencies pointed by Xabre.

I was able to correct the error following the exposed steps. Please let me know if this could solve your problem.

Good luck!
Orik 8-)

Post Reply