LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - General (https://www.linuxquestions.org/questions/linux-general-1/)
-   -   Xerces dependency problem (https://www.linuxquestions.org/questions/linux-general-1/xerces-dependency-problem-827938/)

narcist 08-23-2010 03:03 AM

Xerces dependency problem
 
Hello,
I'm trying to get an application running but it fails because of dependency problems. The application binary requires some shared libraries that are not installed on my distribution (by the way, I'm using openSuSe 11.3 x86), instead i have newer versions installed. So I made a link for every library, naming it accordingly to the required dependency. The application also came with a Xerces-c-2.7.0-11.i586.rpm, but when I try to install it:

error: Failed dependencies:
libicudata.so.34 is needed by Xerces-c-2.7.0-11.i586
libicuuc.so.34 is needed by Xerces-c-2.7.0-11.i586

Both files exist in the /lib and /usr/lib directories, but the rpm installer can't find them. So I installed the rpm with --nodeps.
Now, when I run the application all dependencies are resolved, but it gives errors like:
undefined symbol: u_toupper_3_4 (/usr/lib/libxerces-c.so.27)
Again, Xerces causes problems. Does anybody have an idea how I could solve this?

narcist 08-23-2010 07:46 AM

Well, one problem solved.
I managed to install another version of Xerces, but now the application binary doesn't run because it has unresolved symbols. Among the symbols are even glibc functions like malloc or fopen.
The question is: can I solve the problem without recompiling and linking the main binary? Note that I don't have the source code, so rebuilding the binary is not an option.

knudfl 08-23-2010 07:56 AM

Welcome to LQ. .. .. :) ..

Please open a terminal window, and do 1: su enter-password
2: zypper in xerces-c
.. which will install version ' 3.01 '.

Or use the 'Package Manager' (Yast) for package install.
The most basic 5,000 packages are available.

Another 6,000 packages are in the Packman repo :
http://en.opensuse.org/Additional_pa...tories#Packman

http://en.opensuse.org/Additional_package_repositories
..

narcist 08-24-2010 01:34 AM

Quote:

Originally Posted by knudfl (Post 4075026)
Welcome to LQ. .. .. :) ..

Please open a terminal window, and do 1: su enter-password
2: zypper in xerces-c
.. which will install version ' 3.01 '.

Or use the 'Package Manager' (Yast) for package install.
The most basic 5,000 packages are available.

Another 6,000 packages are in the Packman repo :
http://en.opensuse.org/Additional_pa...tories#Packman

http://en.opensuse.org/Additional_package_repositories
..

Thanks for the reply. I already installed xerces version 3, and I think this is the problem. My application binary needs xerces 2.7, an as far as I know version 3.01 is not backward compatible with 2.7, because they have different major version numbers. Anyway, I'm gonna try installing xerces 2.7 again.

Valery Reznic 08-24-2010 11:06 PM

Quote:

Originally Posted by narcist (Post 4075804)
Thanks for the reply. I already installed xerces version 3, and I think this is the problem. My application binary needs xerces 2.7, an as far as I know version 3.01 is not backward compatible with 2.7, because they have different major version numbers. Anyway, I'm gonna try installing xerces 2.7 again.

Basically, you have to options:
1. try to find some version of xerces that will satisfy your application in questions and not break anything in your system.

It's what you are doing and find out it's a bit tricky.

2. run your application in some kind of "isolated environment"
What isolated environment can be ?
- Use LD_LIBRARY_PATH to specify different xerces for only this application
- Run application in chroot-ed environment
- Run this application in the virtual machine.
- Install in the virtual machine distribution your application is supposed to run on.
Then use statifier (http://statifier.sf.net) or Ermine (http://magicErmine.com) to convert this application into self-containing executable, that can be copied and used to virtually any Linux box.


All times are GMT -5. The time now is 07:14 PM.