diy-layout-creator 的 Linux AppImage 构建环境搭建:WSL 与 AppImageTool 实战指南
桌面应用【免费下载链接】diy-layout-creatormulti platform circuit layout and schematic drawing tool项目地址https://gitcode.com/gh_mirrors/di/diy-layout-creator点击查看免费下载本篇指南基于 diy-layout-creator 仓库中的 WSL/AppImage 环境搭建说明讲解在 Windows 上通过 WSL 安装并验证 AppImage 构建依赖的完整流程并结合 diylc-swing 的 Maven 打包配置 剖析构建脚本背后的自动化调用链。读完本文后你可以独立完成linux-appimageProfile 的前置环境准备理解 AppImage 产物中 AppRun、内嵌 JRE 与启动脚本的组织方式并能对构建出的 AppImage 做结构级验证。为什么需要专门的 WSL/AppImage 构建环境DIY Layout CreatorDIYLC是一个用 Java/Swing 编写的多平台电路布局与原理图绘制工具其 Linux 发布形态之一是单文件 AppImage。AppImage 格式本身是一个自挂载的 ELF 可执行文件构建它必须运行appimagetool而该工具要求 Linux 环境依赖 FUSE 等能力。因此仓库为 Windows 开发者提供了一条标准路径用 WSL 里的 Ubuntu 22.04 作为构建环境由 Maven 构建脚本在package阶段自动调用 WSL 完成打包。setup_instructions.md 就是这条路径的环境准备文档文档中给出的安装脚本与仓库内的可执行脚本 setup_wsl_appimage.bat 一一对应。整个环境准备分为四个阶段检查/安装 WSL、确认 WSL 可运行、安装 Linux 依赖包、下载并验证 AppImageTool。阶段一检查并安装 WSL脚本的第一步是在 Windows 命令提示符下执行 WSL 版本探测:: Check if WSL is installed wsl --version nul 21 if %ERRORLEVEL% NEQ 0 ( echo Installing WSL... wsl --install -d Ubuntu22.04 echo WSL installed! Please restart your computer and re-run this script. exit /b )要点如下wsl --version探测失败ERRORLEVEL非 0时说明系统尚未启用 WSL脚本执行wsl --install -d Ubuntu22.04安装 WSL 并指定Ubuntu 22.04作为发行版。选择 22.04 并非随意仓库中配套的 Dockerfile 同样以ubuntu:22.04为基础镜像保持构建环境版本一致。WSL 首次安装后必须重启计算机再重新运行该脚本这是 Windows 侧wsl --install的固有要求。随后执行wsl --set-default Ubuntu将 Ubuntu 设为默认发行版保证后续不带发行版参数的wsl ...命令如wsl echo都能落到目标环境。阶段二确认 WSL 可运行安装完成后脚本用一个最简单的命令探测 WSL 是否真正可用:: Check if WSL is running wsl echo WSL is running... if %ERRORLEVEL% NEQ 0 ( echo ERROR: WSL is not running. Please restart your system and try again. exit /b )wsl echo成功返回说明 Linux 内核、虚拟化与发行版三者都已就绪。若此步失败脚本提示重启系统后重试——这是 WSL2 内核组件尚未完成初始化时的典型现象。阶段三在 WSL 内安装构建依赖环境准备的核心是以下依赖安装命令脚本中对wsl与sudo apt做了透传sudo apt update sudo apt install -y \ wget \ fuse \ libfuse2 \ ca-certificates \ xz-utils \ file \ appstream \ gpg \ libc6 \ binfmt-support \ tree各依赖在 AppImage 构建链中的角色依赖用途wget下载appimagetool的 AppImage 发行包fuse、libfuse2AppImage 运行时依赖 FUSE 自挂载AppImageTool 的 runtime 也基于 FUSEca-certificates保证https下载如 JRE、appimagetool证书校验正常xz-utilsAppImage runtime 涉及 xz 压缩处理file识别构建产物的 ELF 文件类型构建验证时会用到appstream校验*.metainfo.xmlAppStream 元数据是 AppImage 规范的一部分gpg签名相关能力AppImage 规范允许签名libc6基础 C 运行库binfmt-support二进制格式支持保障跨架构 runtime 的 binfmt 注册tree调试时查看 AppDir 目录结构脚本还额外执行了一次sudo apt install -y libfuse2从源码结构看这是对 FUSE 库的强调性安装确保libfuse2不因依赖解析顺序问题缺失——appimagetool的 runtime 是 AppImage 能自挂载的直接依赖缺它会导致工具“下载成功但执行失败”。阶段四下载并验证 AppImageTool# 在 WSL 内下载 AppImageTool 并赋予执行权限 wget -O ~/appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage chmod x ~/appimagetool # 验证安装 ~/appimagetool --version批处理版本中的对应写法在 Windows 侧透传进 WSLwsl bash -c wget -O ~/appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage chmod x ~/appimagetool wsl bash -c ~/appimagetool --version if %ERRORLEVEL% NEQ 0 ( echo ERROR: AppImageTool failed to execute. exit /b )这里有两个值得注意的细节下载的是continuous渠道的x86_64架构 AppImageTool工具自身也是 AppImage因此chmod x与 FUSE 环境是它能否运行的前提。--version校验失败时脚本会明确提示“检查 WSL 是否正常运行”——因为 Windows 下最常见的失败原因是 WSL 尚未完全启动而非网络问题。脚本最后一步是wsl打开一个交互式 shell让构建者人工确认环境可用。至此文档描述的环境准备全部完成。Maven 侧的自动化调用链linux-appimage Profile环境搭好后实际构建并不需要手动敲命令。diylc-swing/pom.xml 中定义了linux-appimageProfilemvn package -P linux-appimage会在package阶段依次执行三段 antrun 逻辑与前述环境准备文档形成闭环1. 下载并解压内嵌 JREdownload-extract-jre从 Adoptium Temurin 下载 Linux x64 的 JREProfile 中固定jdk.version为21.0.1110解压后把usr/lib/jre/bin下所有二进制chmod 755保证打进 AppImage 的 Java 可执行。2. 组装 AppDircreate-appdir按 AppImage 规范创建target/AppDir目录树并拷贝以下内容AppDir/ ├── AppRun # 入口脚本 ├── com.diy_fever.DIYLayoutCreator.desktop # 桌面入口 ├── com.diy_fever.DIYLayoutCreator.png # 图标 └── usr/ ├── bin/diylc.sh # 真正的启动脚本 ├── lib/diylc.jar # 应用主 jar ├── lib/jre/ # 内嵌 JRE ├── share/icons/hicolor/512x512/apps/ # 图标 └── share/metainfo/ # AppStream 元数据3. 调用 WSL 构建 AppImagebuild-appimage在 Windows 主机上运行时Profile 通过cmd.exe透传wsl bash -c执行一系列操作这正是 setup 文档所准备的环境在发挥作用wsl cp -r AppDir /tmp/AppDir # AppDir 拷入 WSL wsl bash -c sed -i s/\r$// ... # 修正 3 个脚本的 CRLF 行尾 wsl bash -c sudo apt update sudo apt install -y wget libfuse2 fuse wsl bash -c if [ ! -f ~/appimagetool ]; then wget -O ~/appimagetool ... chmod x ~/appimagetool; fi wsl bash -c cd /tmp ~/appimagetool /tmp/AppDir /tmp/DIYLayoutCreator-version-x86_64.AppImage wsl bash -c cp /tmp/输出 Windows 侧 target 目录其中sed -i s/\r$//对AppRun、usr/bin/diylc.sh和 desktop 文件做 CRLF→LF 转换这一步解释了为什么构建链路必须在 WSL 内完成Windows 文件系统上的脚本带 CRLF 行尾直接交给 Linux 的 shell 会报bad interpreter或语法错误。对 macOS 主机同一 Profile 走另一条分支把 AppDir 拷入 Docker 卷用appimagecrafters/appimage-builder容器内执行ARCHx86_64 appimagetool AppDir 输出与 appimage/Dockerfile 展示的镜像内构建流程ARCHx86_64 /usr/local/bin/appimagetool /build/AppDir /build/DIYLC-x86_64.AppImage一致。最后Profile 还会把产物打包为target/diylc-version-linux.zip方便分发。AppImage 内部AppRun 与 diylc.sh 如何启动应用理解环境准备文档之后再看构建产物内部的结构会更清晰。AppRun 只做一件事——定位并移交执行#!/bin/bash HERE$(dirname $(readlink -f $0)) exec $HERE/usr/bin/diylc.sh $真正的启动逻辑在 diylc.sh 中优先使用 AppImage 挂载后设置的$APPDIR环境变量定位内嵌 JRE$APPDIR/usr/lib/jre/bin/java找不到时回退到相对路径../lib/jre/bin/java当检测到运行目录匹配/tmp/.mount_*即正从挂载的 AppImage 运行时会把整个 JRE 复制到/tmp/diylc-jre-$$临时目录并chmod -R x执行权限退出时通过trap ... EXIT清理——这是对 FUSE 挂载点上执行权限不稳定的补偿方案最终以如下参数启动org.diylc.DIYLCStarter主类exec $JRE_PATH \ -Xms1024m \ -Xmx4096m \ -cp $(dirname $HERE)/lib/diylc.jar \ --add-opens java.base/java.utilALL-UNNAMED \ --add-opens java.base/java.langALL-UNNAMED \ --add-opens java.base/java.textALL-UNNAMED \ --add-opens java.desktop/java.awtALL-UNNAMED \ --add-opens java.desktop/java.awt.fontALL-UNNAMED \ --add-opens java.desktop/java.awt.geomALL-UNNAMED \ -Dorg.diylc.scriptRuntrue \ org.diylc.DIYLCStarter $其中-Xms1024m -Xmx4096m与 Linux 通用启动脚本 run.sh 保持一致--add-opens系列参数是为 Java 模块化强封装下 Swing 反射访问所必需-Dorg.diylc.scriptRuntrue则会被 DIYLCStarter.java 中的SCRIPT_RUN系统属性读取用于区分“脚本方式启动”场景。构建产物验证test-appimage.sh环境准备与构建完成后仓库提供了 test-appimage.sh 对产物做结构级检查注意脚本内引用的文件名硬编码为DIYLayoutCreator-5.1.0-x86_64.AppImage等旧版本号执行前需按当前 父 POM 的${project.version}调整路径。其验证逻辑包括检查 AppImage 是否存在并可执行打印大小与权限用file命令确认其为ELF 64-bit LSB executable——这正是依赖列表中安装file包的原因用dd bs8 count1读取文件头 8 字节检查 AppImage 魔数是否包含AI标识。另外appimage/com.diy_fever.DIYLayoutCreator.metainfo.xml 提供了 AppStream 元数据组件 idcom.diy_fever.DIYLayoutCreator、桌面入口映射等这也是依赖中appstream包的校验对象配套的 desktop 文件 声明了Graphics;Electronics分类。适用前提与实操要点适用前提Windows 10/11 支持 WSL2wsl --install -d Ubuntu22.04需要管理员权限首次安装后必须重启。构建产物固定为x86_64架构 AppImageProfile 中appimage.output.file为DIYLayoutCreator-${project.version}-x86_64.AppImage在 AppArmor 等对/tmp挂载有限制的发行版上运行 AppImage 时可能需要--appimage-extract-and-run方式解包运行这一点从diylc.sh的 JRE 拷贝补偿逻辑也可以侧面印证。手动与自动双通道setup 文档的脚本负责一次性人工准备 WSL 环境而 pom.xml 中构建流程还会在每次打包时幂等地再检查wget/libfuse2/fuse与~/appimagetool两者互为兜底。常见故障对照wsl echo失败 → 重启系统appimagetool --version失败 → 确认libfuse2已装、文件已chmod xLinux 侧脚本报bad interpreter→ 检查 CRLF 行尾是否已转换为 LF即sed -i s/\r$//步骤是否执行。综上这份 setup 文档虽然简短但它定义的是 DIYLC Linux 发布链路的关键前置环节WSL Ubuntu 22.04 AppImageTool 的三元环境。把它与linux-appimageProfile 的自动化调用链对照阅读就能完整掌握从环境准备、AppDir 组装到 AppImage 产物验证的整条构建流程。赞分享桌面应用【免费下载链接】diy-layout-creatormulti platform circuit layout and schematic drawing tool项目地址https://gitcode.com/gh_mirrors/di/diy-layout-creator点击查看免费下载相关推荐Anki Linux 开发环境搭建与源码构建实战指南Anki Linux 开发环境搭建与源码构建实战指南 本指南聚焦 Anki基于 Rust Python Qt 的开源间隔重复记忆卡牌软件在 Linu教育如何在QuestPDF中渲染图片与SVG动态图像生成与高清输出的8个技巧如何在QuestPDF中渲染图片与SVG动态图像生成与高清输出的8个技巧 QuestPDF 是一款现代化的 C PDF 文档生成库其流式 API 让你在生成后端CentOS-WSL终极指南在Windows上搭建企业级Linux环境CentOS WSL终极指南在Windows上搭建企业级Linux环境 CentOS WSL是一个通过GitHub Actions自动化将CentOS QCO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Nexent 前端组件与 UI 规范:基于 Ant Design 6 与 Tailwind CSS 4 的组件化实践

Nexent 前端组件与 UI 规范:基于 Ant Design 6 与 Tailwind CSS 4 的组件化实践

人工智能AI AgentAgent 编排低代码AI 技能RAG 【免费下载链接】nexent Nexent 是一个开源智能体SDK和平台,能够将描述流程的自然语言转化为完整的多模态服务 —— 无需编排,无需复杂拖拉拽。基于 MCP 工具生态系统构建,Nexent 提供灵活的模型…

2026/10/14 17:22:46 阅读更多 →
Velune听歌统计深度解析:10张图表揭示你的年度音乐品味(含Year in Review)

Velune听歌统计深度解析:10张图表揭示你的年度音乐品味(含Year in Review)

【免费下载链接】Velune A premium ad-free YouTube Music client for Android. Built with Kotlin & Jetpack Compose. 项目地址: https://gitcode.com/gh_mirrors/ve/Velune 点击查看 免费下载 Velune 是一款免费的无广告 YouTube Music 客户端(A…

2026/10/15 20:52:29 阅读更多 →
字符串的学习

字符串的学习

#字符串 python_string1 “Python” python_string2 ‘Python’ python_string3 ‘’‘Python’‘’ print(type(python_string1)) #java数组:下标/索引 #获取字符串中单个字符 agent_name“海洋垃圾分析智能体” #打印输出“分”字 print(str(agent_name[4])) #…

2026/10/14 17:22:46 阅读更多 →

最新新闻

算法导论英文原版第三版PDF:从伪代码到红黑树实现与复杂度分析

算法导论英文原版第三版PDF:从伪代码到红黑树实现与复杂度分析

简介:《算法导论》英文原版教材(第三版)PDF,面向计算机专业学生、算法学习者与求职备考人群,用于系统建立算法设计与分析的知识体系。全书共34章,从算法在计算中的角色讲起,依次覆盖插入排序、分…

2026/10/15 20:56:57 阅读更多 →
Win7 64位下USB转串口驱动安装指南:CH340/CP210x/FTDI/PL2303排错全收录

Win7 64位下USB转串口驱动安装指南:CH340/CP210x/FTDI/PL2303排错全收录

简介:这是一份专为 Windows 7 64 位系统准备的 USB 转串口驱动资源,适用于需要通过 USB 接口连接老式串行设备(如工业控制、GPS、调制解调器等)的用户,解决现代电脑缺少物理串口导致设备无法识别的问题。压缩包共含 25…

2026/10/15 20:56:57 阅读更多 →
光伏功率预测系统用户手册V1.0.1实战指南:数据链路、模型调优与考核避坑

光伏功率预测系统用户手册V1.0.1实战指南:数据链路、模型调优与考核避坑

简介:这份《国能日新光伏功率预测系统用户使用手册V1.0.1》面向光伏电站运维人员、电力调度从业者及新能源相关专业学习者,系统讲解北京国能日新光伏电场功率预报管理系统的操作与配置方法。手册围绕人机界面、接口与数据库三部分展开,涵盖用…

2026/10/15 20:56:57 阅读更多 →
Erupt 对接 Elasticsearch 数据源全解析:注解驱动索引绑定、查询下推与完整 CRUD 实现

Erupt 对接 Elasticsearch 数据源全解析:注解驱动索引绑定、查询下推与完整 CRUD 实现

后端低代码AI 应用人工智能AI Agent认证鉴权RAG 【免费下载链接】erupt 🚀 通用数据管理框架,VORM 对象视图模型,注解驱动低代码开发 项目地址: https://gitcode.com/erupts/erupt 点击查看 免费下载 erupt-data-es 是 Erupt 通用…

2026/10/15 20:56:57 阅读更多 →
从零构建VST 3插件:CMake工程、参数管理与避坑实战

从零构建VST 3插件:CMake工程、参数管理与避坑实战

简介:这是一份VST 3插件开发SDK资源包,面向音频插件开发者、音乐软件工程师及具备一定C基础的学习者,帮助其在Windows、macOS、Linux和iOS平台上构建音效、乐器和音频处理工具。SDK遵循VST 3模块化架构,插件与宿主经由音频处理器、…

2026/10/15 20:56:57 阅读更多 →
NDIS小端口驱动开发实战:从Miniport注册到NBL收发路径详解

NDIS小端口驱动开发实战:从Miniport注册到NBL收发路径详解

简介:这是一份面向Windows内核网络驱动开发者的NDIS 6.0小端口驱动实例源码,针对Realtek 8111/8168/8169/8110等PCI千兆以太网控制器编写。由于DDK中可参考的miniport示例仅有E100BEX,学习NDIS 6.0网卡驱动的资料相当稀缺,本资源正…

2026/10/15 20:55:56 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →