Bump version to allow AppImageLauncher to continue working
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 技术栈
- c
调研方向
首先检查当前 type-2 runtimes 对 TARGET_APPIMAGE 的处理方式以及 runtime specification。为静态 runtimes 定义可靠的机制,将其纳入 specification,并提升 runtime version,使第三方工具能够发现该功能,同时不破坏现有兼容性。
由索引模型根据 Issue 内容生成。
描述
The current AppImageLauncher process of bypassing binfmt_misc involves extracting the runtime from the AppImage in question into a memory buffer, patching out the magic bytes and launching it from there with an LD_PRELOADed library. As you can imagine, we need to tell this patched runtime where the real binary is to be able to mount the FUSE filesystem correctly.
This library is a bit of a hack. It hooks some functions we know the runtime uses (read: the old type 1 and the type 2 one that AppImageKit features) and that way it can reliably fix all kinds of function calls that point to the AppImage.
This has worked exceptionally well over the last few years. However, with a static runtime, i.e., a static binary, there is no LD_PRELOAD feature that could be used.
For upcoming runtimes, we could specify some kind of other method that can be used to reliably tell the runtime where the real binary is. In fact, the current type-2 runtime already features a TARGET_APPIMAGE environment variable (which AppImageLauncher used prior to version 1!), which could be improved a bit. However, AppImageLauncher needs to know that this feature exists for sure.
My suggestion: let's make TARGET_APPIMAGE or a similar approach that works in the scenario I described part of the runtime's specification. Any spec-complying runtime needs to expose such a feature. Also, let's bump the runtime version so that it is easy to discover that the feature is there for third-party tools. Last but not least, we won't break any compatibility by retrospectively changing the specification.
Side note: of course, I'd rather avoid this annoying workaround. However, it's the best and most reliable way I came up with so far to bypass binfmt_misc. They do not have a feature built-in that could be used and as far as I can see have no interest in improving this. Also, it would take years for such a feature to reach end users anyway, since this is a kernel level problem.
- 主要语言
- C
- 星标
- 75
- 派生
- 38
- 平均合并
- 3 小时 31 分钟
- 30 天内合并 PR
- 1
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
AppImage/type2-runtime 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 48/100
AppImage/type2-runtime#153 ·
-
fusermount3 get's skipped if not setuid, which breaks new fuse implementations可能已有人在做 @probonopd 于 25 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 68/100
AppImage/type2-runtime#150 · 4 条评论 ·
-
Some apps can break unless it is run extracted可能已有人在做 @probonopd 于 13 天前认领。 未关闭bug
难度 4/5 3-5 天 新手友好度 35/100
AppImage/type2-runtime#144 · 2 条评论 ·
-
Tagged Releases未关闭
难度 4/5 3-5 天 新手友好度 25/100
AppImage/type2-runtime#140 · 17 条评论 · 3 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 35/100
AppImage/type2-runtime#133 · 11 条评论 · 1 个 reaction ·
查看 AppImage/type2-runtime 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 80/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 85/100
libsdl-org/SDL#16530 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100
FriendsofECCE/ECCE#336 · 1 条评论 ·
-
难度 1/5 1 小时以内 新手友好度 85/100
fw876/helloworld#2067 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
immortalwrt/immortalwrt#2501 ·