Hi,
This question is probably related to both Tumbleweed and Leap installation procedure.
I’m wondering which way is the best and standard model of installing Repositories in OpenSUSE tp avoid any conflict dependencies popup when using YaST to install an application.
During the installation process going to software and select all **packages **needed and install them directly.
OR,
Install all default packages and then either using YaST or Zypper to add all Repos from https://en.opensuse.org/Additional_package_repositories and using
zypper in -f --from <repo>
and update by
zypper dup
.
The reason for asking is that I have some issues with science applications and update them properly on Tumbleweed.
Many Thanks
Shahram
Most people will ever only add Packman to get their multi-media working. Some will maybe add a repos that they need for software from a spceial area of interest. But better avoid adding repos you do not realy need.
And when you want install two different packages that both require a third package as a dependency but of a different version, you will have a dependency conflict (this is an example, the situation might be more complex.). And then zyper/YaST will tell you so. The decission on what to do is then yours. And you may of course ask for help with that desission here The solution might be not to install one of those softwares. And of course trying to talk to the software maintainers (e.g. bug report) to upgrade their software may also be an option.
Thank you very much for your advice.
This is happening when adding different packages from different repos which seems to have different versions of software or dependencies.
I have raised a bug for one of them (octave) after the recent huge tumbleweed upgrade. some expert maintainer quickly fixed the issue.
However, I added some package from HPC repo and had some conflict with Scilab and others such as gtkwave and kicad as well as my virtualbox.
This caused me to completely delete Tumbleweed but have a feeling to back again and install it and was wondering what is the best way to avoid such a constant conflict issue comes up.
I am not a Tumbleweed user, thus I may be biased, but when you need so many packages from others, it might not be a good idea to use Tumblweed. As you experienced the maintainers have to watch the new TW snapshots very carefull and frequent to stay up-to-date with a rolling release.
With the stable Leap release you wont’ have that problem. At least not to such an extend. And when a new version of Leap is released, there is enough time overlap to first check if all the software packages you need from others are adapted.
That’s true. There is an issue for supporting my new hardware on Leap which I have raised a bug for that as well.
I’ll better to wait for final Leap 15.1 release with lots of backport which might solve my hardware issue.
I have added that repo here, but I usually leave it disabled and use the standard kernels. I would suggest you add that repo, install the newest kernel from there. And then you can decide whether to disable that repo and uninstall that kernel or to continue to use kernels from there.
Hi
The other option is just to ask the maintainer to push to Tumbleweed, then you don’t have to go adding all those pesky repositories. It may also just be a matter of asking for a Tumbleweed build target (it may be building against openSUSE Factory). Lastly, consider just download the rpm and creating a local ‘plain’ rpm directory and installing from there.
This is how I tackled Octave issue and the result was perfect in the end. However, it takes a bit of time and back and force for testing and check if all your previous design works fine.
But for using Tumbleweed this is probably the only way to work with.
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.