眼睛👀:原来如此。
脑子🧠:你确定你懂了?
眼睛👀:原来如此。
脑子🧠:你确定你懂了?
不错,帖子来的很及时。
补充下 command 那里似乎可以 以 [echo, -e, hello world] 的这种形式使用多个参数。
不错,帖子来的很及时。
补充下 command 那里似乎可以 以 [echo, -e, hello world] 的这种形式使用多个参数。
学到了XD
出现gnome-sudoku: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /opt/apps/gitlab.gnome.gnome-sudoku.linyaps/files/lib/libadwaita-1.so.0)
怎么解决?
出现gnome-sudoku: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /opt/apps/gitlab.gnome.gnome-sudoku.linyaps/files/lib/libadwaita-1.so.0)
怎么解决?
催玲珑更新org.deepin.foundation XD
额,
libc.so.6 libm.so.b 这些基础lib支持能随便替换吗?很危险吧
ChatGPT若随意替换lib基础,明显不怀好意。
ChatGPT若随意替换lib基础,明显不怀好意。
容器内有什么问题?
出现gnome-sudoku: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /opt/apps/gitlab.gnome.gnome-sudoku.linyaps/files/lib/libadwaita-1.so.0)
怎么解决?
find -type f ! -name '*.yaml' ! -name '*.layer' ! -name 'linglong' -exec cp --parents '{}' $PREFIX \;
一定要这样写吗
还是说可以手动放好
出现gnome-sudoku: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /opt/apps/gitlab.gnome.gnome-sudoku.linyaps/files/lib/libadwaita-1.so.0)
怎么解决?
你的这个不是自己编译的吧,直接复制的二进制?
教程写的通俗易懂,非常棒
find -type f ! -name '*.yaml' ! -name '*.layer' ! -name 'linglong' -exec cp --parents '{}' $PREFIX \;
一定要这样写吗
还是说可以手动放好
可以手动放,我这样只是方便点全部复制过去
容器内有什么问题?
bwrap容器替换时,用cplib自然没问题,上下文误会了。
官方文档要玲珑1.5.0
我的是1.4.0 怎么升级
官方文档要玲珑1.5.0
我的是1.4.0 怎么升级
deepin23加内测源更新
deepin23加内测源更新
我现在是V23RC 加了内测的
玲珑版本还是1.4.0
我现在是V23RC 加了内测的
玲珑版本还是1.4.0
dpkg -l |grep linglong
那个1.5版本是linglong-builder的不是ll-cli
执行这个看看
那应该没问题
Popular Ranking
ChangePopular Events
More
以htop为例,实现一个简单的玲珑应用Demo
先创建一个linglong.yaml配置文件用于构建容器:
linglong.yaml:
version: "1" package: id: demo.htop.linyaps #ID name: demo.htop #包名 version: 3.3.0.0 #版本号 kind: app #应用类型 description: | 描述:这是一个Demo command: - RUN #执行你的二进制文件,建议自己创建一个RUN文件方便给应用配置环境变量 base: org.deepin.foundation/23.0.0 #runtime: org.deepin.Runtime/23.0.1 #该应用用不到qt库所以可以注释掉减少体积 build: | #把除了yaml、layer、linglong的其它文件复制到玲珑容器内部 cp -av $(ls -A | grep -vE '\.yaml$|Makefile$|.deb$|ld-test$|missing_lib.list$|\.layer$|^linglong$|^tmp$') $PREFIX; #将要执行的二进制文件放到本文件同级的bin目录下 #将二进制文件依赖的库放到本文件同级的lib目录下
然后我们再创建2个目录分别是bin和lib,现在目录结构如下
其中bin目录里面放我们要构建的二进制文件htop,lib目录里面放二进制文件所依赖的库文件,现在目录结构如下:
htop是哪里来的:
#假设当前目录为demo,即yaml配置文件所在的目录
cp /usr/bin/htop bin #复制系统的htop到demo/bin/目录
RUN文件:
#!/bin/bash export TERM=xterm-256color #设置所需的环境变量 htop #启动程序 #为什么创建RUN而不是执行在yaml里面启动htop? #因为yaml里面的command:只支持一个参数,这样就没办法配置环境变量,所以写个RUN文件作为桥梁。
lib目录里面的库文件:
这两个是htop所需要的库。
我们试试删除它用来看看会发生什么
#开始构建 ll-builder build
#尝试运行 ll-builder run
哦豁,报错了。提示找不到"
libnl-3.so.200
"库现在怎么办?
#由于我们本地安装了htop说明本地已经具备了运行的库文件 #那么我们可以利用dpkg -S 查询这个库 dpkg -S libnl-3.so.200
然后我们复制到demo的lib目录
cp /lib/x86_64-linux-gnu/libnl-3.so.200 lib
现在结构如下,然后我们用这个方法把缺失的另一个库也补全,最终结果就是开始的那张图

现在我们尝试构建成玲珑包并运行看看
ll-builder build #开始构建 ll-builder run #尝试运行,确定运行正常我们就可以导出玲珑包了 ll-builder export #导出玲珑包
最终runtime.layer结尾的就是我们需要的玲珑包
看看最终运行效果:
本Demo源码下载:demo.zip
解压后在demo目录打开终端执行下面命令测试构建和运行
ll-builder build && ll-builder export && ll-builder run
小工具cplib,由ChatGPT编写,作用是读取二进制所依赖的库并复制到指定位置。
用法:
#用法:cplib 二进制文件位置 复制到目标位置 ./cplib bin/htop lib
cplib.zip