3 步把 LocalSend 打成 AppImage:免安装、免 root 的 Linux 打包指南 3 步把 LocalSend 打成 AppImage免安装、免 root 的 Linux 打包指南【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend朋友用 Ubuntu同事用 Fedora亲戚用 Arch挨个发安装包每次都会卡在不同的依赖问题上。这次把 LocalSend开源跨设备文件传输工具打成一个 AppImage 便携应用对方双击就能用不用管他装的是哪个发行版也不用碰 root 权限。 AppImage 原理一句话为什么可以免安装AppImage 是一种把所有东西塞进一个文件的 Linux 便携应用格式程序本体、运行时要用的库、桌面配置全部装进同一个文件里。运行它时靠 FUSE一种让普通程序模拟文件系统的内核机制临时挂载解压到一个临时目录直接执行退出后自动清理。LocalSend 选这个格式图的就是自包含目标机器不需要装 Flutter 运行时不需要碰运气找对版本的 GTK只要桌面环境正常就能跑。发给朋友装机这是最省心的路子。一图看懂 AppImage 的打包与挂载流程通俗讲前半段是你机器上的事把东西全装进一个袋子。后半段是对方机器上的事袋子临时拆开放到内存挂载点里用用完就扔。全程不往系统目录写东西所以不需要 root。Linux 应用打包选型AppImage 对比 Snap / Flatpak / deb视角AppImageSnapFlatpakdeb / rpm是否要先装别的组件不用单文件即可需要 snapd需要 flatpak不用但各发行版要各自打包安装是否动 root不装直接运行要首次要要应用放在哪随意家目录、U 盘、网络共享系统固定位置系统固定位置系统固定位置升级方式下载新文件覆盖旧的系统自动系统自动包管理器适合谁便携分发、跨发行版部署全机统一管理沙盒化运行单机走官方源如果你的目标是一个文件丢到谁那都能跑AppImage 最直接想要自动升级和沙盒再考虑 Snap / Flatpak。三步拿到 LocalSend 的 AppImage环境、构建、打包第一步装好构建环境构建机需要 Flutter 的 Linux 桌面工具链外加 LocalSend 特有的两个依赖——一个给顶部托盘图标appindicator一个给 AppImage 挂载sudo apt install curl clang cmake libgtk-3-dev ninja-build \ libayatana-appindicator3-dev libfuse2 squashfs-tools另外从 appimage-builder 官方 release 页下载 x86_64 版 AppImage放到/usr/local/bin并赋予可执行权限。第二步先构建出 Flutter Linux 二进制git clone https://gitcode.com/GitHub_Trending/lo/localsend cd localsend git submodule update --init alias fluttersubmodules/flutter/bin/flutter flutter pub get flutter pub run build_runner build -d flutter build linux仓库里用子模块锁定了 Flutter 版本上面的 alias 就是用它构建保证结果可复现。构建完产物在build/linux/x64/release/bundle/。第三步用 appimage-builder 打成单文件mkdir AppDir cp -r build/linux/x64/release/bundle/* AppDir cp support/build/appimage/AppImageBuilder_x86_64.yml AppImageBuilder.yml appimage-builder chmod x LocalSend-*-x86_64.AppImage跑完当前目录下的 AppImage 就能用了。要出 ARM64 版本把配方换成 support/build/appimage/AppImageBuilder_arm_64.yml 即可项目还附了一键脚本 support/scripts/compile_linux_appimage.sh卡住了可以对着它排查。appimage-builder 配置怎么配抓住 3 个要点配方文件是 support/build/appimage/AppImageBuilder_x86_64.yml字段不用全记看懂下面这几处就行app_info: id: org.localsend.localsend_app exec: localsend_app exec_args: $ apt: include: [libayatana-appindicator3-1:amd64, librsvg2-common:amd64] exclude: [adwaita-icon-theme:*]app_info是应用的户口id是反向域名格式的唯一标识桌面环境靠它认这是同一个应用exec指定解压后第一个要跑的可执行文件。写错了会怎样exec指向不存在的文件双击 AppImage 直接报 command not foundid和别的应用撞了系统菜单里同一个应用出现两个图标。apt白名单决定袋子里装什么include列出从 Ubuntu 22.04 源里抓取并捆绑的运行时库exclude把图标主题这类没用的东西清出去。写错了会怎样少一个库对方运行时报 error while loading shared libraries不清理文件白白多出几十 MB。runtime.env告诉应用去哪找资源给XDG_DATA_DIRS设成/usr/local/share/:/usr/share/:${XDG_DATA_DIRS}桌面环境按这个顺序找图标和菜单项。写错了会怎样程序能开但应用菜单里没图标或者图标是灰色默认样式。跨发行版部署常见问题速查现象运行 AppImage 报error mounting AppImage: 13, permission denied原因当前用户没有 FUSE 权限读不了/dev/fuse修复sudo usermod -aG fuse $USER后重新登录赶时间就先加--appimage-extract解压再用现象打包时mksquashfs: command not found原因构建机缺 squashfs 压缩工具修复sudo apt install squashfs-tools配方里也留了一行自动补装的保险现象程序能跑但顶栏托盘图标不见了GNOME / Ubuntu原因缺 appindicator 运行时库修复确认配方apt.include里有libayatana-appindicator3-1收尾AppImage 是 Linux 跨发行版分发最省心的答案一个文件、免安装、免 root。配方和脚本都摆在仓库里你可以现在就跟着跑一遍打完后发给那位用冷门发行版的朋友验证一下。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考