[software development] Anylinux-AppImages,号称能在“任何”linux上运行的appimage
Tofloor
poster avatar
kero990
deepin
4 hours ago
Author

这是最新新发现的一个好玩的项目,该项目致力于制作能够在“任何”linux上运行的appimage,包括非常古老的发行版(比如ubuntu12)以及基于 musl 的发行版。

https://github.com/pkgforge-dev/Anylinux-AppImages

官网给出了很多测试,比如这是在ubuntu12上使用qemu的测试

截图_选择区域_20260525094707.png

熟悉我的朋友应该知道,我长期给uos/V20适配软件,主要的工作就是适配glibc2.28,虽然开源社区有不少尝试绕过glibc限制的作法,但成功率不高,最终还是要回到基于旧系统编译和使用容器包两大类。

这个项目给出了第三类方案,打包glibc到appimage里。

其实之前跟很多朋友有过讨论,外挂glibc本身不是什么难题,难的是,glibc组件里有一个叫做动态链接器dynamic linker (ld-linux.so)的东西。我们在ldd一个程序时能够看到硬编码路径的 /lib/ld-linux-aarch64.so。因为路径是硬编码的,所以它只会去/lib下找,而不理会你外挂的glibc,不管你挂在哪。

虽然这个路径是可以被 patchelf --set-interpreter 修改,但最多只支持 ...这种相对路径,或者还是绝对路径,这意味着整个包的路径仍然需要固定,可移植性是很差的。

除此之外,传统appimage还依赖FUSE,而很多过旧的系统是没有FUSE的,你得自己编译它才有可能使用appimage。

更多原理的介绍可以看项目的FAQ

项目官方维护了超过300+的开源项目,列在首页的列表里,有相当部分是游戏和模拟器,包括一些较新的反编译游戏(注意这类游戏需要原版游戏资源才能运行)。

我对这些项目进行了标注,列出了相应的简介,看官方列表一头雾水的可以看看我的翻译。

https://www.yuque.com/kero990/zx73v0/egcccgc3ngs6wbf9?singleDoc

怎么说呢,实际上对于UOS/deepinV20这种保有量很大,但又几乎运行不了绝大多数开源软件release的系统是福音。

只需要在较新的系统比如arch,ubuntu26上制作这种appimage,就可以拿到任何系统用。

妈妈再也不用担心你在debian10编译不通过了。

另外项目本身就有解压回退机制,最终的保底就是将appimage解压到/tmp运行,所以你把它当做一个绿色包分发完全没任何问题。

感觉对于适配信创系统挠破了头的国产开发者是个不错的玩意。

Reply Favorite View the author
All Replies
avatar
伴你高飞
deepin
3 hours ago
#1

对老系统,是个不错的办法。

Reply View the author