-
-
Notifications
You must be signed in to change notification settings - Fork 563
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
--appimage-extract-and-run #841
Comments
In an effort to keep the number of options and the complexity low I'd say |
@probonopd as pointed out above, this doesn't work in many cases. This doesn't add any noteworthy complexity, rather it forces us to refactor the runtime a bit, and greatly improve its code quality and structure. The alternative is to provide some sort of shell script that automates this. But that doesn't make any sense. Aren't we user oriented? Users request this feature, after all. |
I think your main point is that instead of |
No. The point is that we should provide an easy, automated and reliable way to execute AppImages in Docker containers without needing the user to understand the problem and solve it using some script magic. |
What I want to avoid is "normal users" getting used to the idea that extracting an AppImage in order to run it is the normal/an accepted way of doing things. We are not |
That's a really vague guess from your end. I mean, "by default" this option is not used. A user would have to type a really long parameter to use it. The benefits of this parameter outweigh the disadvantages greatly. |
I'd be OK with it as long as it is not documented in |
Okay, well, I think that if you explicitly state it should only be used in case FUSE doesn't work, it could also be included in the help text. But in any case, I'll start working on this then. I already started to improve the code flow in the runtime a bit, but I'm still struggling to understand some |
So, I finally understand what that "extra parameter" in My question is: do we really need that? In my opinion, it'd make more sense to allow overriding the default |
Sure! Do you really want to extract the whole AppImage just to get e.g., the desktop file(s)? |
I will restore the original behavior then. |
I'm finally done with this feature. It was a bit more work than expected, but I could fix some things in the runtime and other parts of our source code. Also, I found a nice and working (verified) MD5 implementation which I included into our repository. This will allow us to remove the dependency on OpenSSL in libappimage (used for MD5 calculations during desktop integration). Pattern matching has been restored. I actually documented this now, to avoid further confusion about the feature. We're getting closer to a point where we could unit test the runtime. |
Great job, thank you very much @TheAssassin |
It looks like |
Not advertising it is a bad idea, stop being a nanny. I had to google for like 1 hour to find this solution. Why I had to do that? You should mention about it if FUSE fails or don't exist. |
@ahmedtds are you running in a Docker container? Or what else is the reason you cannot use FUSE? |
How is this relevant? The issue is that the option isn't documented anywhere outside this issue tracker, mostly because of your opposition in the comments here. Simply adding this option to the help text and, more importantly, https://docs.appimage.org will resolve @ahmedtds's concerns. |
Btw, I am not against documenting it on docs.appimage.org if it is clearly explained that this is for Docker, Podman etc. and is not the genereally recommended "normal" way for running AppImages on (broken) desktops. Personally I am not using Docker, Podman etc. but it seems like people have issues using |
@probonopd not only docker, but also flatpak. |
FWIW, this is now documented, with both the command line argument and the environment variable. It's on the troubleshooting section: https://docs.appimage.org/user-guide/troubleshooting/fuse.html#fallback-if-fuse-can-t-be-made-working This issue appears much sooner in a DDG search, though, so I hope the link is useful. ;) |
I just found this option, its been weeks I had problem because some extension I use need to patch the appImage on runtime.
|
Please open an issue in the new repository: https://github.com/AppImage/type2-runtime |
Docker is a very popular environment for building software, and also AppImages.
Due to our use of FUSE, AppImages don't directly run in Docker, which requires a simple but annoying workaround for every AppImage: the AppImage is called with
--appimage-extract
, and then, instead of the AppImage,squashfs-root/AppRun
is called. This is normally just another line that needs to be added, but can get quite complex the more AppImages are involved, because then thesquashfs-root
directories need to be renamed, etc.This is something that could be automated by us by adding a new option to the AppImage runtime:
--appimage-extract-and-run
. When this flag is used, the AppImage's contents should be extracted into a temporary directory with a predictable name (i.e., some value that depends on the AppImage file), theAppRun
entry point should be called with the other parameters passed, and then the files should be cleaned up again.In order to avoid having to re-extract all files on subsequent runs, we should introduce an environment variable
NO_CLEANUP
that, if set, should prevent the cleanup code from running. This is also what the predictable directory names are needed for.This flag wouldn't only help our users, but also help us in our own Docker based build scripts.
The text was updated successfully, but these errors were encountered: