抛弃RPM/DEB,迎接AppImage

以前,Linux. 因为发行版众多,给不同的发型版适配打包,非常麻烦。

同样一套代码,在不同的发行版上编译出来以后,调用的动态连接库不一样,于是得分别编译。而不同的发行版上面,使用的打包工具,也是千差万别,需要分别打包,手动编写各种spec、debs等等。

现在有了AppImage.,这种状况一下子就改观了许多。

AppImage文件的使用

AppImage文件,是一个包含了所有依赖的二进制包。我们下载了一个AppImage以后,只需要两步,就可以让程序运行起来。

假如我们下载了一个apvlv.AppImage程序。那么第一步,我们只需要给这个文件增加可执行权限:

chmod +x apvlv.AppImage

第二步,执行:

./apvlv.AppImage

不用root权限,不用安装其它依赖。只需要一个AppImage,就是这么简单。

难怪Linus大神都情不自禁地说:“这简直太酷了。”

AppImage的创建

如果我们是一个开发者,如何给用户创建AppImage呢?

也很简单,使用appimage-builder就好。

部署appimage-builder环境

先安装appimagetool:

sudo wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool

如此,就直接下载了一个可以直接使用的appimagetool,加上可执行权限就可以使用了。

或者,也可以从Docker里取一个:

cd /opt/; sudo chmod +x appimagetool; sed -i ‘s|AI\x02|\x00\x00\x00|’ appimagetool; sudo ./appimagetool --appimage-extract
sudo mv /opt/squashfs-root /opt/appimagetool.AppDir
sudo ln -s /opt/appimagetool.AppDir/AppRun /usr/local/bin/appimagetool

先使用pip安装appimage-builder:

pip install appimage-builder

安装必须的patchelf二进制文件,比如Fedora中使用:

sudo dnf install patchelf

生成AppImage包

先创建一个AppDir目录:

mkdir AppDir

执行appbuilder --generate:

appbuilder --generate

例如,现在生成一个apvlv的AppImage,期间会运行apvlv程序,以便对程序调用进行分析。

~/$ appimage-builder --generate
INFO:Generator:Searching AppDir
? ID [Eg: com.example.app]: apvlv
? Application Name: apvlv
? Icon: application-vnd.appimage
? Executable path relative to AppDir [usr/bin/app]: /usr/bin/apvlv
? Arguments [Default: $@]: $@
? Version [Eg: 1.0.0]: 0.4.1
? Update Information [Default: guess]: guess
? Architecture: x86_64
INFO:AppRuntimeAnalyser:/usr/bin/strace -f -E LD_LIBRARY_PATH= -e trace=openat --status=successful /usr/bin/apvlv $@
INFO:AppRuntimeAnalyser:Reading PT_INTERP from executables
INFO:Generator:Recipe generation completed.

此时,在当前目录下,生成了AppImageBuilder.yml。

然后,生成AppImage,中途可能需要连网下载一些依赖文件:

appimage-builder --recipe AppImageBuilder.yml

如果不进行测试,还可以加上–skip-tests选项。

appimage-builder --recipe AppImageBuilder.yml --skip-tests

一个可以分发给用户,让用户只需要直接执行就可以的apvlv-0.4.1-x86_64.AppImage就制作完成了。

如果需要对最终生成的AppImage进行微调,可以使用–skip-appimage来阻止最后的AppImage生成,进入AppDir目录进行更改,然后再生成最终的AppImage。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值