安装snap再安装flutter再安装localsend@Ubuntu(FreeBSD下未成功)

2024-03-16 23:12

本文主要是介绍安装snap再安装flutter再安装localsend@Ubuntu(FreeBSD下未成功),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Localsend介绍

localsend是一个跨平台的文件传送软件,可以在Windows、MacOS、Linux、Android和IOS下互相传送文件,只要在同一个局域网即可。

localsend官网:LocalSend

尝试安装localsend,发现需要使用flutter, 安装flutter发现需要snap,于是先安装snap

ubuntu下:apt install snapd

FreeBSD下:pkg install snap (失败,FreeBSD下的软件包并不是我们需要的)

snap介绍

Snap软件包是一种新型的Linux包管理工具,它采用了容器的概念,使得每个应用程序都拥有自己独立的文件和库,从而解决了应用程序之间的依赖问题,使得应用程序更易于管理。

Snap软件包的主要特点是自包含性和跨平台性。每个Snap软件包都包含了应用程序及其所有依赖项,这意味着用户无需担心依赖关系的问题,只需安装Snap软件包即可轻松使用应用程序。此外,Snap软件包的设计也考虑了跨平台性,使得同一个Snap软件包可以在不同的Linux发行版上运行,从而提高了软件的可移植性。

是在FreeBSD使用linux兼容安装的ubuntu,刚开始使用apt install snap安装没成功,以为就不支持。后来发现要使用apt install snapd 来安装就可以了。

兼容模式下除了最后不能使用Xwindows,其它跟普通ubuntu一模一样。

在ubuntu@FreeBSD安装snap

apt install snapd

Flutter介绍

Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。Flutter 支持跨平台、原生、开源免费,具有响应式框架、富有表现力和灵活的UI,以及跨平台自绘引擎等特点。

flutter官网文档:选择你的开发平台,开始使用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

 用snap安装flutter

sudo snap install flutter --classic

然后配置中文地址(国内加速):

export PUB_HOSTED_URL="https://pub.flutter-io.cn"

export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

然后flutter doctor ,看到提示:

Telemetry is not sent on the very first run. To disable reporting of telemetry,
run this terminal command:

    flutter --disable-analytics

这样就算是安装好了。但是后面碰到很多小坑,所以再详细记录一下。

安装flutter详细步骤

官方手册:在中国网络环境下使用 Flutter | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

直接到官网下载flutter tar包,解压后发现可以使用

tar -xvf flutter_linux_3.19.3-stable.tar.xz 
cd flutter
./bin/flutter 

在.profile文件中最后一句加入路径,这样就可以直接使用flutter命令了

PATH="$PATH:/home/linuxskywalk/tools/flutter/bin"

 也可以在.shrc文件中加入:

set PATH=/home/skywalk/download/flutter/bin:$PATH

 按照flutter手册,加入环境变量配置:

# 将 PUB_HOSTED_URL 设置为镜像站点。export PUB_HOSTED_URL="https://pub.flutter-io.cn"# 将 FLUTTER_STORAGE_BASE_URL 设置为镜像站点。export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

 如果不加,国内是无法自动下载软件的。

配置好后flutter后,开始安装localsend

编译安装localsend

下载localsend,解压缩。刚开始是从官网下载压缩文件,后来也尝试了git下载源代码:git clone https://github.com/localsend/localsend

然后到localsend/app 目录(~/tools/localsend-1.14.0/app),执行:

flutter build linux

如果没有报错,就算成了!

但是有报错,详见调试部分,开始一步步解决报错问题。。

首先:

使用flutter doctor查找问题

发现linux部分有3个问题,按照提示安装三个软件包:

执行

sudo apt install libgtk-3-dev clang ninja-build 

后面build还有报错,根据提示安装下面两个库,解决build问题:

sudo apt install libappindicator3-1 libappindicator3-dev

还有报错需要修改文件:

修改pubspec.yaml文件

参考:https://github.com/fluttercandies/flutter_photo_manager/issues/1021

Adding this to pubspec.yaml worked as temporary fix, ty @den0206

dependency_overrides: photo_manager: ^3.0.0-dev.2

当前还存在的问题:

flutter build linux 之后报错,见最后一个调试问题。

目前没有解决。

=====================================

解决问题的分界线

后来才明白,原来pubspec.yaml文件那里少修改了一个地方,

还需要修改这里:

dependencies:wechat_assets_picker: ^8.9.0-dev.1

修改之后,再run,有报错:

(localsend_app:253856): Gtk-WARNING **: 11:39:19.837: cannot open display

这其实证明基本已经成功了。只是没有窗体报错罢了。

进入xwindows窗口,再执行flutter run ,哇,localsend 终于成功运行了!

android版本,直接下载:https://github.com/localsend/localsend/releases/download/v1.14.0/LocalSend-1.14.0.apk

windows版本,直接下载:https://github.com/localsend/localsend/releases/download/v1.14.0/LocalSend-1.14.0-windows-x86-64.exe

总结:

localsend是一个非常不错的文件传送软件,只是在linux安装的时候,需要修改少量代码,增加了一定难度。

调试

编译flutter报错

 flutter build linux
Resolving dependencies... (1:42.1s)
Git error. Command: `git clone --mirror https://github.com/Tienisto/tray_manager.git /home/linuxskywalk/.pub-cache/git/cache/tray_manager-ad808f1c5d07229907508d5b7c74bd2e20923421`
stdout:
stderr: Cloning into bare repository '/home/linuxskywalk/.pub-cache/git/cache/tray_manager-ad808f1c5d07229907508d5b7c74bd2e20923421'...
fatal: unable to access 'https://github.com/Tienisto/tray_manager.git/': Failed to connect to github.com port 443: Connection timed out
exit code: 128

换用国内镜像

flutter doctor报错

[✗] Linux toolchain - develop for Linux desktop
    ✗ clang++ is required for Linux development.
      It is likely available from your distribution (e.g.: apt install clang), or
      can be downloaded from https://releases.llvm.org/
    ✗ ninja is required for Linux development.
      It is likely available from your distribution (e.g.: apt install
      ninja-build), or can be downloaded from
      https://github.com/ninja-build/ninja/releases
    ✗ GTK 3.0 development libraries are required for Linux development.
      They are likely available from your distribution (e.g.: apt install
      libgtk-3-dev)

根据linux部分的报错,

执行:sudo apt install libgtk-3-dev clang ninja-build

flutter build报错 because localsend_app depends on path 1.8.3,

$ flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you
trust this source!
Resolving dependencies... (3.8s)
Note: path is pinned to version 1.9.0 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.


Because localsend_app depends on flutter_localizations from sdk which depends on
  path 1.9.0, path 1.9.0 is required.
So, because localsend_app depends on path 1.8.3, version solving failed.


You can try the following suggestion to make the pubspec resolve:
* Try upgrading your constraint on path: flutter pub add path:^1.9.0

按照提示执行:flutter pub add path:^1.9.0

这里失误了,应该是:flutter pub add path:^1.8.3

新报错The `system_tray` package requires ayatana-appindicator3-0.1 or appindicator3-0.1.

$ flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you
trust this source!

CMake Error at flutter/ephemeral/.plugin_symlinks/system_tray/linux/CMakeLists.txt:29 (message):


  The `system_tray` package requires ayatana-appindicator3-0.1 or
  appindicator3-0.1.


Building Linux application...     

Adding this to pubspec.yaml worked as temporary fix, ty @den0206

解决问题方法,执行:sudo apt install libappindicator3-1 libappindicator3-dev

报错:Error: Type 'DecoderCallback' not found.

flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you
trust this source!

ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:71:5: Error: Type 'DecoderCallback' not found.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:96:5: Error: Type 'DecoderCallback' not found.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:71:5: Error: 'DecoderCallback' isn't a type.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:96:5: Error: 'DecoderCallback' isn't a type.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: Target kernel_snapshot failed: Exception
Building Linux application...                                           
Build process failed

解决了这个问题,参见issue:About DecoderCallback cannot found error( Type 'DecoderCallback' not found.) · Issue #1021 · fluttercandies/flutter_photo_manager · GitHub

Adding this to pubspec.yaml worked as temporary fix, ty @den0206

dependency_overrides: photo_manager: ^3.0.0-dev.2

重新在另一台机器做实验,发现报错: localsend_app depends on path 1.8.3,

 flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure
you trust this source!
Resolving dependencies... (12.7s)
Note: path is pinned to version 1.9.0 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.


Because localsend_app depends on flutter_localizations from sdk which depends
  on path 1.9.0, path 1.9.0 is required.
So, because localsend_app depends on path 1.8.3, version solving failed.

尝试执行:flutter pub add path:^1.8.3

解决问题

报错:Error: Type 'AssetEntityImageProvider' not found.

原来是pubspec.yaml文件少修改了一个地方。

dependencies:wechat_assets_picker: ^8.9.0-dev.1

报错: cannot open display:

EXTERNAL_USB/tools/localsend/app$ flutter run
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure
you trust this source!
Launching lib/main.dart on Linux in debug mode...
Building Linux application...                                           

(localsend_app:253856): Gtk-WARNING **: 11:39:19.837: cannot open display:
Error waiting for a debug connection: The log reader stopped unexpectedly, or
never started.
Error launching application on Linux.

因为是ssh登录的,所以有这个报错。到xwindows下执行,问题解决。

这篇关于安装snap再安装flutter再安装localsend@Ubuntu(FreeBSD下未成功)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817047

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

MySql9.1.0安装详细教程(最新推荐)

《MySql9.1.0安装详细教程(最新推荐)》MySQL是一个流行的关系型数据库管理系统,支持多线程和多种数据库连接途径,能够处理上千万条记录的大型数据库,本文介绍MySql9.1.0安装详细教程,... 目录mysql介绍:一、下载 Mysql 安装文件二、Mysql 安装教程三、环境配置1.右击此电脑

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3