
LocalSend AppImage 完整指南一个文件免安装跑遍主流 Linux 发行版【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsendLocalSend 是一个开源的跨平台文件传输工具而同一个团队为 Linux 平台给出的答案只有一个文件——LocalSend AppImage。你不需要管 apt 还是 pacman、不需要装任何依赖下载下来加执行权限就能跑这就是一次构建、多发行版运行的免安装体验。免安装体验一个文件就是整个应用这一节回答一个问题你拿到这个文件之后到底会发生什么。执行chmod x LocalSend-*.AppImage ./LocalSend-*.AppImage之后系统会把文件临时挂载成一个只读目录里面的AppRun脚本启动应用然后卸载。你全程不需要 root也不污染系统目录删文件就是卸载。它为什么能做到这点AppImage 的内部结构是外壳引导程序 一个 SquashFS 归档。SquashFS 你可以理解成把整个应用目录压缩成一块只读磁盘镜像里面既有可执行文件也有它运行所需的全部动态库和桌面集成文件。所以发行版之间的库版本差异根本不会传到应用层——它用的是自带的那套。拆开配方appimage-builder 配置里的三件事这一节解决打包规则到底写在哪、写了什么。LocalSend 的配方文件在仓库里可以直接看到AppImage x86_64 构建配置 和 ARM64 版本核心就三块应用元数据app_info。定义应用身份id用的是反向域名写法org.localsend.localsend_app这是 Linux 桌面生态给应用起的唯一身份证exec指定入口程序exec_args: $表示把命令行参数原样透传给应用。apt 依赖管理。这是关键构建机从 Ubuntu Jammy22.04的源里拉取应用真正需要的运行时库塞进镜像。只包含两个包却决定了两个体验细节——apt: arch: [amd64] sources: - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy main restricted include: - libayatana-appindicator3-1:amd64 # 系统托盘图标 - librsvg2-common:amd64 # SVG 图标渲染 exclude: - adwaita-icon-theme:* # 图标主题不打包省体积没有托盘库应用在任务栏就隐身了没有 rsvgSVG 图标显示不出来。这两行不是装饰。运行时环境变量。XDG_DATA_DIRS被重写成指向镜像内部的路径再拼上系统原有值让应用找桌面文件如 .desktop 描述时优先用自带的那份而不是宿主机的。另外配方还排除了usr/share/man、各类 README/NEWS 文档——体积就是这么抠出来的。从源码构建 LocalSend AppImage 的完整命令这一节给你一条可复现的路径从零环境到产出 AppImage 文件。准备阶段装 Flutter 和打包工具需要的编译依赖git clone https://gitcode.com/GitHub_Trending/lo/localsend cd localsend sudo apt install curl clang cmake libgtk-3-dev ninja-build sudo apt install libayatana-appindicator3-dev libfuse2libfuse2常被忽略但 AppImage 挂载依赖它缺了它新系统上直接报挂载错误。appimage-builder本身从发行页下载同名 AppImage赋予执行权限后放进 PATH 即可。构建阶段仓库自带脚本 compile_linux_appimage.sh 就是这套流程的封装核心步骤是git submodule update --init submodules/flutter/bin/flutter pub get submodules/flutter/bin/flutter pub run build_runner build -d submodules/flutter/bin/flutter build linux # 产出 release 版原生程序 mkdir AppDir cp -r app/build/linux/x64/release/bundle/* AppDir appimage-builder # 按配方把 AppDir 压成 AppImage注意顺序先flutter build linux生成原生程序再把产物拷进 AppDirAppDir 就是打包前的应用目录最后 appimage-builder 读当前目录下的AppImageBuilder.yml完成压缩。CI 侧的等价流程可以看 build_appimage.yml它还会把 32/128/256 三档图标拷进AppDir/usr/share/icons/hicolor/保证桌面菜单里图标清晰。同一份配方两种架构x86_64 与 ARM64这一节回答我在 ARM 服务器上怎么用。LocalSend 没有写两套配方而是维护两份几乎相同的 YAML差异只有架构相关字段配置项x86_64ARM64AppImage.archx86_64arm_64apt.archamd64arm64托盘库libayatana-appindicator3-1:amd64libayatana-appindicator3-1:arm64SVG 渲染库librsvg2-common:amd64librsvg2-common:arm64也就是说选对架构的两个配置文件其余的依赖版本锁定、文件排除、环境变量全部一致。你在树莓派或 ARM 云服务器上只要架构匹配、glibc 不落后太多就能直接运行不需要交叉编译应用本身——交叉的只是 apt 拉下来的那批库。在你的发行版上验证 LocalSend AppImage 能否运行这一节讲怎么快速判断我这台机器能不能跑。先做三件事./LocalSend-*.AppImage --appimage-extract-and-run强制解压方式启动绕过 FUSE 挂载问题检查托盘图标是否出现跑一次跨设备发送确认端到端可用。主流发行版上的实际表现Ubuntu 20.04、Debian 11、Fedora 36、Arch、openSUSE Leap 15.4 基本开箱即用。更老的发行版glibc 低于 2.27 一代可能因为依赖库版本过新而报GLIBC_x.xx not found这时别硬修换 Flatpak 或 deb 包更省事。仓库配方里也保留了一段注释掉的 test 配置fedora/debian/arch 的测试镜像跑./AppRun供有 CI 条件的维护者启用。跑不起来按这张清单查这一节是故障速查表按出现频率排提示挂载失败 / FUSE 错误装libfuse2或先用--appimage-extract-and-run解压方式跑起来再排查没有系统托盘图标宿主桌面环境不支持 AppIndicator比如纯 GTK 老版本面板换托盘组件或忽略——功能不受影响报 GLIBC 版本错误发行版太老别修库换包格式图标是问号系统没有 hicolor 主题桌面环境下少见终端用户基本碰不到体积比预期大检查配方里files.exclude是否被删掉了 man/doc 排除规则体积和启动速度的大头在 Flutter 运行时release 构建后约几十 MB加上 apt 拉进来的依赖库。配方通过只 include 必要库 排除文档主题 SquashFS 压缩三段控制总量这也是官方 AppImage 能保持百 MB 以内、秒级启动的原因。三件可以直接做的事下载——从发行渠道拿对应架构的 LocalSend AppImagechmod x后直接执行构建——按上面流程在本机跑一遍产出物命名规则是LocalSend-版本-架构.AppImage验证——在你的目标发行版上用--appimage-extract-and-run兜底启动一次再确认托盘和收发文件都正常就可以放心分发给团队了。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考