
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),僅供參考