此篇教程适合将deb, appimage, 打包好的二进制包转为如意玲珑包
官方有ll-pica转制工具,但一直觉得不好用,所以一直都是手动打包
手动打包也很简单, 下面以打包appimage的微信为例
第一次写, 不好地方请见谅, 欢迎大家补充纠正
基础工作目录: baselinglong.zip
首先创建玲珑的基本工作目录, 如图所示 bin/AppRun.sh: 软件的启动文件,文件名自定义 lib: 依赖库目录 share/applications: desktop文件目录 share/icons: 图标目录
获取对应的软件包,并解压 appimage包命令行解压: chmod +x xxx.appiamge ./xxx.appimage --appimage-extract deb包命令行解压: dpkg-deb -x xxx.deb ./
appimage包解压后会获得一个 squashfs-root 目录, 将这个目录放到步骤一的基本工作目录里, 我习惯性的都会将这个目录重命名为软件名
修改调整好 linglong.yaml, desktop文件就可以打包了 ll-builder build ll-builder export --layer
package: id: com.tencent.wechat.linyaps #软件包的唯一标识, 建议最后以linyaps结尾 name: 微信 #软件名 version: 4.0.0.23 #软件版本号, 但是这个版本号必须要四位, 即0.0.0.0的结构 kind: app description: | #软件描述,建议一句话就可以 微信 base: org.deepin.base/23.1.0 #所需的基础库 runtime: org.deepin.runtime.dtk/23.1.0 #所需的runtime, 可选的, 我打的包很少用到这个 command: - /opt/apps/com.tencent.wechat.linyaps/files/bin/AppRun.sh #启动命令 build: | SOURCES="linglong/sources" #固定的 export PATH=$PATH:/usr/libexec/linglong/builder/helper #固定的 #install_dep $SOURCES $PREFIX #这是使用ll-pica adep安装依赖时才会用到 #install -d $PREFIX/lib #下面4行cp都是将基础工作目录复制到玲珑容器的对应目录里 # $PREFIX = /opt/apps/com.tencent.wechat.linyaps/files/ cp -r bin/ $PREFIX cp -r wechat/ $PREFIX cp -r share/ $PREFIX cp -r lib/ $PREFIX
appimage包一般很少缺依赖,如果发生了缺依赖的情况 官方工具ll-pica adep好像不如最开始好用 所以我都是手动从宿主机里复制出来,放到基础工作目录的lib里 以/usr/lib/x86_64-linux-gnu/libnotify.so.4.0.0依赖为例 具体文件叫libnotify.so.4.0.0但是软件里需要的名是libnotify.so.4 这种情况可以在工作目录的lib里给这个依赖创建个软连接 ln -s libnotify.so.4.0.0 libnotify.so.4 如果系统没有这个依赖, 可以到debian官网去搜索下载对应的deb包, 然后解压放进去
Exec=AppRun.sh #这个配置就是基础工作目录bin/AppRun.sh 这个文件名, 因为最终玲珑容器里的PATH会包含这个bin目录所以可以找到对应的文件 Icon=wechat #不要加图标文件的后缀, 推荐用png格式
#!/bin/bash /opt/apps/com.tencent.wechat.linyaps/files/wechat/AppRun "$@" # appiamge包解压后一般都有一个AppRun文件,大部分是shell文件 # 可能会遇到打包完成后, 安装了点图标软件不启动的状况 # 大概率就是 AppRun 里的 APPDIR="$(dirname "$(readlink -f "$0")")" 在玲珑里有问题 # 这时候直接 APPDIR="/opt/pps/com.tencent.wechat.linyaps/files/wechat" 即可 # $APPDIR变量也可能叫别的名字 # 如果是其他类型的包或者二进制文件, 可以直接指定为对应的二进制文件
怎么从源代码开始打包,求大佬教程
打包的时候对与文件的权限或者所有者有要求吗?
没有,正常权限就可以
这几天预计会出一个系列进阶文档, 可以期待下
Popular Events
此篇教程适合将deb, appimage, 打包好的二进制包转为如意玲珑包
官方有ll-pica转制工具,但一直觉得不好用,所以一直都是手动打包
手动打包也很简单, 下面以打包appimage的微信为例
第一次写, 不好地方请见谅, 欢迎大家补充纠正
基础工作目录: baselinglong.zip
首先创建玲珑的基本工作目录, 如图所示
bin/AppRun.sh: 软件的启动文件,文件名自定义
lib: 依赖库目录
share/applications: desktop文件目录
share/icons: 图标目录
获取对应的软件包,并解压
appimage包命令行解压: chmod +x xxx.appiamge ./xxx.appimage --appimage-extract
deb包命令行解压: dpkg-deb -x xxx.deb ./
appimage包解压后会获得一个 squashfs-root 目录, 将这个目录放到步骤一的基本工作目录里, 我习惯性的都会将这个目录重命名为软件名
修改调整好 linglong.yaml, desktop文件就可以打包了
ll-builder build
ll-builder export --layer
linglong.yaml关键配置
缺依赖
appimage包一般很少缺依赖,如果发生了缺依赖的情况
官方工具ll-pica adep好像不如最开始好用
所以我都是手动从宿主机里复制出来,放到基础工作目录的lib里
以/usr/lib/x86_64-linux-gnu/libnotify.so.4.0.0依赖为例
具体文件叫libnotify.so.4.0.0但是软件里需要的名是libnotify.so.4
这种情况可以在工作目录的lib里给这个依赖创建个软连接
ln -s libnotify.so.4.0.0 libnotify.so.4
如果系统没有这个依赖, 可以到debian官网去搜索下载对应的deb包, 然后解压放进去
desktop文件关键配置
Exec=AppRun.sh #这个配置就是基础工作目录bin/AppRun.sh 这个文件名, 因为最终玲珑容器里的PATH会包含这个bin目录所以可以找到对应的文件
Icon=wechat #不要加图标文件的后缀, 推荐用png格式
bin/AppRun.sh