Most snap packages are under a sandboxing model that might subtly interfere with a user’s regular workflow. This means that the ROOT snap cannot just access a user’s camera or microphone for example, since this makes little sense for ROOT. However, one notable feature is that ROOT is limited to accessing files in the users home directory (aside from over the network). Furthermore, the snap will be prevented from accessing hidden files/folders in the top level of the home directory itself, such as $HOME/.ssh.
Case closed then. Will go with the binary. Thanks again for the link.
There’s a very hidden copy of CMake and GCC in the snap which means you might be able to compile third party libraries, but I’ve no idea of Ceres in particular as to whether it’s viable. In theory though, you might be able to run root-framework.cmake in Ceres git repository alongside then root-framework.make; and then either root-framework.run executableName or running root with import directories configured if doing it interactively.
I generally don’t recommend people actually use it however. There’s a few very specific situations it comes in handy (E.G I know one user who uses these hidden wrappers to teach ROOT at the undergraduate level by making executables with gcc rather than the interpretter) but for the most part its a bad user experience that probably would cause more confusion than benefit if it was more publically known.
Unfortunately, direct access to the system paths would break the snap in general cases because whilst it would actually be possible to put the system include paths in the sandbox, the result would end up being mismatches between versions and other ABI compatibility concerns. Essentially the snap is designed around a bundling everything and the kitchen sink approach, and struggles when the libraries aren’t actually available.
Ultimately I do think that official binary builds would be more appropriate to your needs (and likely the Conda package too), but it’s actually quite easy to build snaps and you could potentially build your own version of ROOT with Ceres already in it. I’ve an example of using ROOT alongside Geant4, QT, and a few others, to build the Gate snap which actually works just fine for that program!
Building snaps in general on traditional Linux machines is quite easy, instructions for Ubuntu would just be:
Thanks a lot for all the info. Building a customized ROOT snap will probably come in handy in a different project i am going to work on. At the moment I have a lot of prototyping stuff that requires pulling in all kinds of libraries. The ROOT binary is then obviously the way to go here. Thanks again for the very helpful post. Cheers