news 2026/8/29 11:39:29

5 步构建 LocalSend AppImage:跨发行版文件传输不用装任何依赖

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5 步构建 LocalSend AppImage:跨发行版文件传输不用装任何依赖

5 步构建 LocalSend AppImage:跨发行版文件传输不用装任何依赖

【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend

LocalSend 是一个跑在局域网里的文件传输工具,它的 AppImage 版本把程序和依赖一起装进单个可执行文件:拿到目标机器后不用装任何包,给执行权限就能用。

发送页:挑选文件并选择附近设备

先看你卡在哪里

你在公司 Ubuntu 工位上编好的 App,拿回家里的 Fedora 机器一运行就报缺库;同事的 Arch 机器上,同一个依赖又换了包名。每跨一次机器传文件,先花十几分钟对依赖,比传文件本身还慢。

解决思路:把依赖连同程序一起带走

思路只有一句话:先让 Flutter 把 Linux 产物编出来,再用 appimage-builder 把产物和运行时需要的库一起打进 AppDir(一个符合 Linux 目录规范的临时目录),最后压缩成单个 AppImage。

维度走系统包单个 AppImage
依赖来源跟随目标发行版的库版本自带运行时库
运行权限安装常需 root用户级即可运行
分发方式每种发行版单独打包同一文件直接拷贝

电脑与手机同网互发文件

从源码到 AppImage 的构建命令

仓库里有一条现成的构建脚本 support/scripts/compile_linux_appimage.sh,整体顺序分四步。

1. 准备工具链。Flutter 在 Linux 上编译需要 GTK 开发包与 clang、cmake,appimage-builder 本身依赖 libfuse2,一次性装齐:

sudo apt install curl clang cmake libgtk-3-dev ninja-build libayatana-appindicator3-dev libfuse2

appimage-builder 从 AppImageCrafters 官方发布页下载,赋予执行权限后放进 /usr/local/bin。

2. 拉取源码并初始化子模块。仓库自带一份 Flutter 在 submodules/flutter 目录下,脚本把 flutter 指向该版本,保证所有人用同一工具链编译:

git clone https://gitcode.com/GitHub_Trending/lo/localsend cd localsend git submodule update --init

3. 编译出 Linux 产物。先跑 build_runner 生成 i18n 字符串等代码,再编译:

alias flutter='submodules/flutter/bin/flutter' flutter clean flutter pub get flutter pub run build_runner build -d flutter build linux

产物落在 build/linux/x64/release/bundle。

4. 组装 AppDir 并打包。把产物拷进空 AppDir,放入配方文件后执行 builder,根目录会生成可执行的 LocalSend-*-x86_64.AppImage:

mkdir AppDir cp -r build/linux/x64/release/bundle/* AppDir cp support/build/appimage/AppImageBuilder_x86_64.yml AppImageBuilder.yml appimage-builder

arm64 机器只需换用 AppImageBuilder_arm_64.yml,其余步骤相同。

值得细看的三处配方

打包的核心是 support/build/appimage/AppImageBuilder_x86_64.yml,三处写法值得留意。

apt 源钉在 Ubuntu Jammy

apt: arch: - amd64 sources: - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy main include: - libayatana-appindicator3-1:amd64 - librsvg2-common:amd64

为什么这样写:钉死一个小版本做依赖基底,换机器重建也拿到相同库版本;include 只列托盘与 SVG 图标两个真实用到的库,而不是整包拉取。

XDG_DATA_DIRS 保留宿主搜索路径

runtime: env: XDG_DATA_DIRS: '/usr/local/share/:/usr/share/:${XDG_DATA_DIRS}'

为什么这样写:AppImage 以只读方式隔离运行,句尾保留宿主系统原值,桌面环境仍能定位到应用的图标和菜单项。

files.exclude 给文档瘦身

files: exclude: - usr/share/man - usr/share/doc/*/README.* - usr/share/doc/*/changelog.*

为什么这样写:man 页与变更日志运行时用不到,排除后包体约小 15%,功能不受影响。

运行体验:拿到的那个文件有多轻 ⚡

  • 单文件双击运行,目标机器无需任何额外安装
  • 用户级权限运行,不需要 root
  • x86_64 与 arm_64 各有一份配方,按架构出包
  • 更新即替换文件,不用走包管理器流程
  • 排除文档与 man 页后包体更紧凑

批量文件的传输进度视图

四种打包方式怎么选

  • AppImage:免安装、跨发行版直接跑;短板是没有内置自动更新
  • Flatpak:沙箱隔离强,但宿主需装运行时,启动偏慢
  • Snap:自动更新与商店集成方便,代价是强制沙箱与更大启动开销
  • deb/rpm:系统集成最好,但每个发行版单独出包,依赖碎片化最麻烦

能搬走的三条经验 📦

  • apt 基底钉住具体小版本(如 jammy),让任何人任何时候重建都得到一致的依赖
  • include 按最小清单管理:每多一个库包体就大一圈,只装真实用到的
  • 多架构配方拆成独立文件(x86_64 / arm_64),CI 里按架构换文件,不写分支逻辑

下一步

下载对应架构的 AppImage,赋予执行权限后即可直接传输文件;想自己构建时,先通读仓库里那条 Linux AppImage 构建脚本,把四步顺序对照做一遍。

核心关键词:LocalSend AppImage 跨发行版文件传输 长尾关键词:Linux 文件传输打包、Flutter AppImage 构建、appimage-builder 配置、局域网文件共享、多架构 Linux 应用分发

【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 11:37:20

Agent 视觉表示:用 /show-me 压缩上下文与信息密度

调试Agent的时候,我经常遇到一种尴尬:日志太长、上下文不够、Agent抓不住重点。于是有人提出,与其让Agent读完一大段文本,不如让它把关键内容画出来。这个思路并不新,但当我在Hacker News上看到/show-me这个 agent ski…

作者头像 李华
网站建设 2026/8/29 11:35:48

Transformer核心机制与工程实践:从Attention到大模型

看到“Transformers”这个词,很多圈外朋友第一时间想到的是汽车人变形,但在深度学习领域,这个词早就成了绕不开的基石。2017年Google那篇《Attention Is All You Need》直接把Transformer架构端了出来,随后几年,BERT、…

作者头像 李华
网站建设 2026/8/29 11:35:23

Meta重返开源:知识蒸馏如何让大模型变小变快

打开技术社区的话题榜,Meta 重新回到开源阵营这件事讨论度很高。距离上一轮比较密集的开源动作过去约 16 个月后,Meta 再次释放出明确信号:继续押注开源路线,扎克伯格本人也在公开场合力挺模型蒸馏。对做 AI 应用、大模型微调和开…

作者头像 李华
网站建设 2026/8/29 11:31:40

Vite 构建失败、esbuild 版本冲突如何排查?3 种修复方法完整指南

Vite 构建失败、esbuild 版本冲突如何排查?3 种修复方法完整指南 【免费下载链接】vite Next generation frontend tooling. Its fast! 项目地址: https://gitcode.com/GitHub_Trending/vi/vite Vite 项目一跑构建就挂在 esbuild 上?版本冲突、找…

作者头像 李华
网站建设 2026/8/29 11:30:42

Scrapy+Playwright实战:高效爬取Kelly Blue Book二手车数据

1. 项目概述:为什么选择Scrapy来爬取Kelly Blue Book? 如果你正在关注二手车市场,无论是想买车、卖车,还是做数据分析,Kelly Blue Book(简称KBB)都是一个绕不开的名字。作为北美最权威的二手车估…

作者头像 李华