I’m reading and reading, but the information is very sparse. I’m trying to make some assumptions to find out how this really works and finally solve this:
- The stage-packages for my particular snap are put in the folder
stage
in my VM and the build-packages are just in their normal places in the VM (?). - How does snapcraft know missing stage-packages if they are only used during runtime (otherwise the snap would probably not succeed). I got an error before from a missing library without snapcraft giving me that hint during the build. Why is this different with libpsm?
- Where are these stage-packages missing? In $SNAPCRAFT_STAGE or $SNAPCRAFT_PRIME? And how is $SNAP related to these?
- What do I need to symlink? Files inside $SNAPCRAFT_STAGE, $SNAPCRAFT_PRIME or $SNAP (which I don’t know where to find)?
- Why is the
LD_LIBRARY_PATH
necessary when I need to symlink anyway? TheLD_LIBRARY_PATH
obviously doesn’t save me from the error message during the build.
In my snapcraft.yaml above, I had both libpsm_infinipath1
and libpsm_infinipath1-dev
also in the build packages. I removed them from the build-packages and have it only in the stage-packages now. The error I get now changed from usr/lib/x86_64-linux-gnu/libpsm_infinipath.so.1
to just libpsm_infinipath.so.1
.
And I found this hint at the very bottom of this page:
Layouts cannot replace an existing but incompatible filesystem object. This means, for example, that files cannot replace directories or symbolic links, files cannot replace a directory, and existing symbolic links cannot be redirected to a new target.