Quote Originally Posted by tsu2 View Post
Your question is a common one that has been asked for many decades, and in the Windows world has been dubbed "DLL Hell." It's an unavoidable problem and we have similar problems in Linux. And, there is no possible way to avoid conflict decisions if your system is constantly upgraded (highly recommended) or complex (something you can avoid).

Before there were virtualization and current management built into common component systems that experience this problem, people installed different configurations on different physical machines.

Today, we have virtualization and it's my preferred way to isolate different environments and setups from each other on a single machine.
Some subsystems like Python and Ruby have their own management that allow installing multiple versions side by side and then invoking a specified version to run different applications, Python has virtualenv and Ruby has RVM and RBENV..

In recent years, applications have been built into Linux containers with all/most of their dependencies, making use of a feature that has existed in the Linux OS for decades. More technical folk will use Docker or maybe LXC, End Users might use something like AppImage or Snap. There are no set rules for what is built into a container so you might find anything from minimal apps which are still fully dependent on the OS to provide practically everything to including a stub of an OS so the container is completely portable between distros.

You can also install subsystems like the scientific package collection Anaconda/Miniconda which installs its own version of all dependencies and prepends it to the system path so that regular OS components are never used if it can be provided by Conda. This seems to work OK on openSUSE, but of course does not address conflicts with other things that may be installed in your system.

All of the above should suggest to you that it's better to set up many single purpose machines (physical or virtual) rather than lots of complex applications running on the same machine to avoid conflicts. And, depending on your specific needs it might be easier to settle on a single or few solutions to separate your app environments rather than have to keep track of a multitude. This is why my personal preference is Virtualization although it also means using more disk space.

Thank you very much for your great advice and informative reply.
Making many single purpose machine is a great idea and honestly when I set my machine that was all I wanted to do, and I am heavily using Anaconda for my python work. Although I have no problem with my machine performance, using KVM with OpenGL sometimes after updating Tumbleweed comes to an issue. It is the same scenario for Virtualbox.
However, containers and a separate system for some related application are excellent. I'm even thinking to use Kubic for this purpose or maybe Docker.

Many Thanks