On 23/02/07, Mikkel L. Ellertson <mikkel@xxxxxxxxxxxxxxxx> wrote:
Dotan Cohen wrote: > I don't mind adding /opt and /opt/bin to my path. One question, > though. If I have foo-0.8 (for example) installed and package bar want > foo-0.7, how can I set it up so that only bar will use foo-0.7. I'd > leave the system's foo-0.8 as it is, and unpack the foo-0.7 tarball > into /opt. Then, I'd install bar, but how do I tell bar to use the foo > in /opt? > > While this is a purely hypothetical situation at the moment, I'm > interested as I've had problems of this sort in the past. I'm trying > to learn _before_ I find myself stuck. > It is hard to give a general answer to this, because it depends on what f00-0.7 is. If it is a program that bar runs, then you have to change bar's configuration to point to the correct location. (Programs like k3b, mplayer-gui, etc.) If it is a library, it is possible to have more then one version of a library installed. The linker will normally like to the version the program was compiled ageist. It gets tougher when it is a minor version change, because minor version changes are supposed to be backwards compatible. You should also take a look at the man page for the ld.so command. There are some environment variables you can set to control where it looks for libraries. You can write a shell script named bar that is in your path, and not have bar in your path. Then when you run bar, the script sets LD_LIBRARY_PATH and then runs bar with its full path name. This works well if the bar script is in /usr/local/bin, and bar is in /opt/bar.
I see. I did not realize that it is possible to have more than one version of a library installed. Actually, I thought quite the opposite, what with the mess of Dag/FreshRPMs/friends vs. Livna/Extras. But now at least I have the keywords to google. Thank you. Dotan Cohen http://what-is-what.com/what_is/copyleft.html http://uldu.com