Linux打包appimage方法
本文档以REHL/Rock/Fedora为示范系统打包形式为electronweb的形式一、环境准备1.1 安装依赖sudo dnf update -y sudo dnf install -y epel-release sudo dnf config-manager --set-enabled crb # Rocky 10 sudo dnf groupinstall -y Development Tools sudo dnf install -y wget fuse npm nodejs注意~~webkit2gtk3~~ — Electron 自带 Chromium不需要系统 WebKit~~usermod -a -G fuse~~ — Rocky 10/Fedora 42 的 fuse 用户组不存在且 /dev/fuse 已允许普通用户访问1.2 下载打包工具mkdir -p ~/appimage-tools cd ~/appimage-tools wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage chmod x appimagetool-x86_64.AppImage工具用途参数​appimagetool将 AppDir 打包成 AppImage直接跟 AppDir 路径linuxdeploy自动分析依赖并打包--appdir / --output注意appimagetool --appdir xxx — 不支持会报 未找到匹配的参数sudo ./appimagetool ... — sudo 会重置环境导致相对路径失效或权限混乱二、生成 Electron 应用2.1 安装 Nativefiersudo npm install -g nativefier2.2 生成应用APPNAMEMyApp # 只能用字母/数字/下划线不能用连字符 -URLhttps://example.com nativefier --name $APPNAME $URL生成后会得到目录MyApp-linux-x64/注意APP_NAMEAPP-NAME — bash 变量名含连字符会被解析为减法运算导致路径错乱APPNAMEAppName 或 APPNAMEApp_Name本人使用的标准是AppName_Web_Appimage不过在该文档中为了方便书写并未沿用这一标准而是使用MyApp三、构建 AppDir3.1 目录结构mkdir -p MyApp.AppDir/usr/bin cp -r MyApp-linux-x64/* MyApp.AppDir/usr/bin/3.2 创建 AppRuncat MyApp.AppDir/AppRun EOF #!/bin/bash exec $(dirname $(readlink -f $0))/usr/bin/MyApp $ EOF chmod x MyApp.AppDir/AppRun或者更简单的直接vim MyApp.AppDir/AppRun编辑就OK了注意Windows 换行符CRLF— 会导致 Exec format error用 EOF单引号防止变量展开确保纯文本写入如果 AppDir 里的程序能跑但 AppImage 不能跑99% 是 AppRun 问题3.3 创建 .desktop 文件cat MyApp.AppDir/MyApp.desktop EOF [Desktop Entry] NameMyApp ExecMyApp Iconmyapp TypeApplication CategoriesNetwork; EOF同理你可以选择vim MyApp.AppDir/MyApp.desktop注意TypeApplicatio — 拼写错误必须是 Application缺少 [Desktop Entry] — 所有字段必须在该组下前面不能有空行或注释外的内容Icon/path/to/icon.png — 不能写路径只能写纯图标名Iconmyapp 但文件名是 MyApp.png — 大小写必须完全一致3.4 放置图标可选可不选图标必须放在 AppDir 根目录且与 .desktop 中的 Icon 同名找到 Nativefier 生成的图标find MyApp.AppDir/usr/bin -name .ico -o -name .png复制到根目录重命名与 Icon 字段一致cp MyApp.AppDir/usr/bin/icon.ico MyApp.AppDir/myapp.png注意图标放在 usr/bin/ 里 — appimagetool 只在 AppDir 根目录查找Iconmyapp 但文件叫 myapp.ico — 扩展名必须是 .png / .svg / .xpm如果没有图标可用系统通用图标如 Iconapplications-internet四、打包4.1 执行打包ARCHx86_64 ./appimage-tools/appimagetool-x86_64.AppImage \ --appimage-extract-and-run \ MyApp.AppDir注意上述三行内容需要同时保持原样布局的输入进终端未设置 ARCH — 会报错 More than one architectures were found...打包时目录权限混乱之前用过 sudo— mksquashfs 报 Permission denied解决sudo chown -R $USER:$USER . 后再打包磁盘满或 /tmp 满 — mksquashfs 静默失败生成只有 2MB 的空壳文件解决df -h /tmp 确认空间充足4.2 验证打包结果ls -lh MyApp-x86_64.AppImage #正常应当显示-rwxr-xr-x注意必须大于 80MBElectron 壳的体积。如果只有 1-5MB说明打包失败squashfs 镜像未写入。五、运行与分发5.1 本地运行chmod x MyApp-x86_64.AppImage ./MyApp-x86_64.AppImage5.2 FUSE 问题Fedora 42 / 部分发行版如果报错 Cannot mount AppImage, please check your FUSE setup./MyApp-x86_64.AppImage --appimage-extract-and-run注意Fedora 42 默认 fuse3旧版 AppImageKit 可能不兼容--appimage-extract-and-run 可绕过 FUSE直接解压运行之后发给别人或者自己使用即可至于appdir及其内容就可以删掉了六、兼容性注意事项6.1 glibc 陷阱打包系统glibc 版本兼容目标Rocky 10 / Fedora 422.39只能在新系统运行Rocky 9 / Ubuntu 22.042.34兼容面较广Rocky 8 / Ubuntu 20.042.28兼容面最广注意在新系统打包的 AppImage 无法在旧系统运行GLIBC_2.XX not foundglibc 向后兼容不向前兼容核心原则变量名不要连字符.desktop 格式严格组头、拼写、Icon 纯名字图标放 AppDir 根目录打包不要 sudo验证文件必须 50MB分发前在目标系统测试

相关新闻

嵌入式学习第十三天报告:从void指针深入理解C语言内存与指针

嵌入式学习第十三天报告:从void指针深入理解C语言内存与指针

1. void指针:通用内存操作工具 1.1 void指针的基本概念 void指针(void *)是C语言中一种特殊的指针类型,它不指向任何具体的数据类型。void指针的主要特点是: 通用性:可以指向任意类型的数据灵活性&#xff…

2026/9/26 14:57:32 阅读更多 →
ToastFish:让摸鱼时间变成英语提升的黄金时刻

ToastFish:让摸鱼时间变成英语提升的黄金时刻

ToastFish:让摸鱼时间变成英语提升的黄金时刻 【免费下载链接】ToastFish 一个利用摸鱼时间背单词的软件。 项目地址: https://gitcode.com/GitHub_Trending/to/ToastFish 你是否曾有过这样的体验?工作间隙刷手机、开会发呆、等待文件传输时&…

2026/10/15 21:22:36 阅读更多 →
AI代码审计实战:从静态扫描到智能安全护航的研发流程变革

AI代码审计实战:从静态扫描到智能安全护航的研发流程变革

1. 项目概述:当AI成为代码的“安检员”最近在团队内部搞了个有意思的实践,我们称之为“AI驱动的代码安全卫士”。核心就是拿华为云CodeArts的“代码智能审计助手”这个工具,深度折腾了一番,把它从一个“静态规则扫描器”用成了我们…

2026/10/15 5:47:15 阅读更多 →

最新新闻

CTF新手题easychallenge:Python脚本加密与逆向思路全解析

CTF新手题easychallenge:Python脚本加密与逆向思路全解析

前两天在攻防世界的 CRYPTO 新手练习区刷题,刷到 easychallenge 这一道,名字起得特别诚实,但实战起来也不能说完全 easy。它不考复杂的数学公式,也不考高深的密码算法,更像是给你一段加密脚本,让你自己把它…

2026/10/15 21:22:32 阅读更多 →
ESP8266接OLED:从选型接线到点亮显示全教程

ESP8266接OLED:从选型接线到点亮显示全教程

你有没有过这种体验:ESP8266串口打印出来的数据堆了一屏,盯着串口监视器看得眼花缭乱,明明传感器读出了26.5℃,却没法让这个数字变成一眼能看懂的"画面"。我第一次做物联网小项目时就被这个问题卡了很久。后来接上一块0…

2026/10/15 21:22:32 阅读更多 →
嵌入式C++单链表实战:内存可控的类型擦除链表设计

嵌入式C++单链表实战:内存可控的类型擦除链表设计

1. 这不是教科书里的“单链表”,而是你明天就能抄进项目的实战结构 单链表——这三个字一出来,很多人脑子里立刻浮现出黑板上画的箭头、节点、next指针,还有老师念叨的“头结点不存数据”“遍历时间复杂度O(n)”……但现实里,我带…

2026/10/15 21:22:32 阅读更多 →
ESP8266驱动OLED屏入门:接线、配置与点亮指南

ESP8266驱动OLED屏入门:接线、配置与点亮指南

1. OLED屏与ESP8266的适配思路 手头正好有一块0.96寸的OLED屏,一直想做个小玩意儿,就顺手用ESP8266驱动了起来。先说结论:这对于入门嵌入式显示来说,是很典型也很有意思的组合——OLED功耗低、自发光、显示效果好,ESP8…

2026/10/15 21:22:32 阅读更多 →
ESP8266驱动OLED屏:从选型到点亮,玩转中文显示与动画

ESP8266驱动OLED屏:从选型到点亮,玩转中文显示与动画

做嵌入式小项目时,最烦的不是代码跑不起来,而是跑起来之后什么都看不见。传感器数据全堆在串口里,手机又懒得开,这时候给 ESP8266 配上一块 OLED 屏幕,整个项目立刻“活”了。这篇文章是 OLED 在 ESP8266 中应用系列的…

2026/10/15 21:22:32 阅读更多 →
YOLOv10【第十一章:生成式 AI 与自动标注篇·第1节】生成式 AI 如何赋能 YOLOv10:数据、标签、推理三条路线

YOLOv10【第十一章:生成式 AI 与自动标注篇·第1节】生成式 AI 如何赋能 YOLOv10:数据、标签、推理三条路线

🏆 本文收录于 《YOLOv10实战:从入门到深度优化》 专栏。 该专栏系统复现并深度梳理全网主流 YOLOv10 改进方法与工程实战案例,覆盖分类、目标检测、实例分割、多目标追踪、关键点检测、旋转目标检测等多个方向,坚持 持续更新 + 深度解析 + 工程验证。 专栏将围绕 YOLOv10…

2026/10/15 21:21:31 阅读更多 →

日新闻

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 阅读更多 →