-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Also use libfuse3, fusermount3 in addition to libfuse2, fusermount #168
Comments
|
As an alternative, there is also the option of statically linking (and possibly implementing the required parts of Yes, it would add some (~3 MB?) overhead to each AppImage. But the result would be much more robust and future-proof. For AppImages that bundle all dependency libraries (currently the exception rather than the rule; another ~10 MB overhead), the result would be almost immune to userland breaking changes, almost only relying on the kernel, which is fortunately very stable when it comes to the userland interface. Maybe that is the way to go. Wdyt? |
As I said on Twitter, the fusermount binary is setuid. If you want to ship your own copy, you'll need root access to set the file permissions. |
Ouch. That's a bummer! |
It is:
So if we want AppImages to run without the need for the end user to have root rights (which we want), then it seems like whatever we do we will not get around using So it seems like statically linking libfuse2 or libfuse3 is not sufficient to ensure that things work on systems that come with a random libfuse version. |
Highly relevant discussion: |
Seems like go-fuse can work with both
Now, there should be a guarantee that it will continue to work with Next step: Rebuild https://github.com/orivej/static-appimage/ with a recent https://github.com/hanwen/go-fuse/ version that includes the above, then test on systems with (only) libfuse2 and on systems with (only) libfuse3. If it works, we could use this approach. |
Another question: If we statically link the current runtime, maybe using musl libc, will it require What does @TheAssassin, @azubieta: What do you think about statically linking the AppImage runtime using musl libc? |
Random thought, can we make a composite elf that ships two runtimes one for fuse2 and other for fuse3 ? The current AppRun has 25 Kb so this solution should be about 50 Kb. |
I've experimented a bit with static runtimes built in Alpine Linux with musl libc. Still need to sort some things out. But a promising start. |
Closing in favor of |
https://github.com/AppImage/libappimage/blob/1c2510ad2f385787e8fa5fdf88c0098f69095366/src/patches/squashfuse_dlopen.h#L24
Ubuntu 22.04 x64 (arriving next month -- note 22.04, not 20.04) does not ship
libfuse.so.2
anymore but onlylibfuse.so.3
(upstream launchpad ticket; distribution policies may prevent them from shipping both by default indefinitely because fuse2 appears no longer actively maintaned by upstream). I think Fedora is doing the same. As a result, AppImages cannot run on Ubuntu 22.04 out of the box:Hence, we should also try to
dlopen()
that one.Like we are already doing for another library in the AppImageKit runtime:
https://github.com/AppImage/AppImageKit/blob/8bbf694455d00f48d835f56afaa1dabcd9178ba6/src/notify.c#L28-L45
Actually it may be a bit more involved than this, since the symbols inside libfuse may have changed in an incompatible way?
References:
@TheAssassin, @azubieta since I was never quite involved in the libappimage codebase, maybe one of you could have a look into this? I'd appreciate this very much, since having AppImages run out of the box on all supported mainstream distributions is quite important.
The text was updated successfully, but these errors were encountered: