Flutter: 让flutter可以通过自制软件安装

创建于 2018-01-11  ·  77评论  ·  资料来源: flutter/flutter

没有发现任何存在的问题。 开启追踪。

让 flutter 能够brew install flutter

P6 first hour crowd passed first triage platform-mac new feature tool

最有用的评论

因此,我不必从用户的自定义点击安装,无论是@SpectralKH还是@MiderWong@eclewlow ,然后必须相信并希望:

  1. 该用户的点击将成为“官方”点击,并在必要时得到良好支持和更新。
  2. 该用户不会将恶意软件注入我的机器。

我的建议是与Dart 所做的相同dart-lang/dart的 brew tap,并在 Dart 官方文档中引用。
这使 Flutter 与 Dart 保持一致(考虑到它们实际上是姐妹项目)并保持一致和简单。
(思考:考虑到 Flutter 是 Dart 的姊妹项目,而 Flutter 需要 Dart,为什么不把它作为另一个公式捆绑在dart-lang水龙头中?)

我想我的问题是,作为一个非 brew 开发人员以及谁是这次讨论的新手:

  1. 这是在进行中吗? 如果是这样,更新是什么? 因为这自 2018 年 1 月以来一直是一个悬而未决的问题?
  2. 如果它还没有开始,作为一个社区,我们需要做些什么来完成它?

所有77条评论

@gspencergoog你可能感兴趣

https://docs.brew.sh/Formula-Cookbook

这个过程非常简单。 尽管我们必须确保它与我们的https://github.com/flutter/flutter/wiki/Release-process集成,理想情况下以自动化方式集成。

嗨 Flutter 团队! 我开始在https://github.com/Homebrew/homebrew-core/pull/27395 上向 Homebrew 添加flutter公式,但我绝对可以使用更多指导来遵循此评论中的方向:

尽管我们必须确保它与我们的https://github.com/flutter/flutter/wiki/Release-process集成,理想情况下以自动化方式集成。

现在 Homebrew 公式只是下载当前的 beta 版本,解压缩它,然后将它复制到 Flutter 的 Keg(例如/usr/local/Cellar/flutter/0.3.1/ )。

欢迎任何反馈!

@jcollins-g 从https://github.com/Homebrew/homebrew-core/pull/27395写入 shlock,也许我们可以检查 shlock 是否返回 not allowed / 1 并且父进程 ID 是 brew,不要 shlock。 我们还可以锁定对部分缓存的写入,以防止在安装 brew 时进行自我更新。

对于 Homebrew PR 中的上下文,我在以下开始的评论中写了shlock问题: https :

实际上,我们对这个想法进行了更多的思考,我认为最终,我们希望官方公式出现在自制软件中(非核心存储库)。 这样,我们可以保持 flutter upgrade 和 brew upgrade 目标密封同步。

希望我们可以在不久的将来将您的公式版本引入水龙头并简化官方安装过程。

当然! 在这种情况下,如果有意义的话,我很乐意在homebrew-core上关闭 PR?

是的。 感谢您的贡献!

@xster fwiw 那不是必需的。 由于我们每天运行brew livecheck几次,Homebrew/homebew-core 中的公式会在上游版本的几个小时内升级。

@xster / @briankung shlock 在 brew 中的行为让我有点惊讶。 这里并没有什么特别之处:

https://opensource.apple.com/source/shell_cmds/shell_cmds-118/shlock/shlock.c.auto.html

openloop:
    if ((fd = open(tempname, O_RDWR|O_CREAT|O_EXCL, 0644)) < 0) {

在 POSIX 文件系统上这样做应该总是有效的——好吧,除非你在目录上设置了 chflags 以防止它被写入:

jcollins-macbookpro:shlock jcollins$ sudo chflags uchg .
jcollins-macbookpro:shlock jcollins$ ls -la
total 0
drwxr-xr-x   2 jcollins  wheel    64 May  3 08:50 .
drwxrwxrwt  69 root      wheel  2208 May  3 08:52 ..
jcollins-macbookpro:shlock jcollins$ echo hi > foo
-bash: foo: Operation not permitted
jcollins-macbookpro:shlock jcollins$ ls -la
total 0
drwxr-xr-x   2 jcollins  wheel    64 May  3 08:50 .
drwxrwxrwt  69 root      wheel  2208 May  3 08:52 ..
jcollins-macbookpro:shlock jcollins$ shlock -f foo -p $$
shlock: open(shlock14741): Operation not permitted
jcollins-macbookpro:shlock jcollins$

如果自制程序中的某些内容或您设置它的方式这样做,则修复 shlock 不会削减它,因为当不可避免地在缓存中尝试其他写入操作时,您将失败。

如果添加这一行:

chflags -R nouchg "$FLUTTER_ROOT/bin/cache"

这里修复了它,你有一个 chflags 问题,可能应该以某种方式处理它。 不知何故,在您第一次运行 flutter 时,bin/cache 可能已经存在(也许您是从 flutter 的二进制构建开始的?那些已经预先制作了缓存,因此它们会很好地通过 mkdir,但您将无法写入缓存)。

[编辑以修复 chflags]

@jcollins-g 啊,我的 unix-fu 不符合标准 - 我不知道chflags ,但这是有道理的。 我想这是学术性的,但我会研究一下。 谢谢!

我添加了如下行:

diff --git a/bin/flutter b/bin/flutter
index 079c3f94d..1b7e06f43 100755
--- a/bin/flutter
+++ b/bin/flutter
@@ -39,6 +39,7 @@ function _rmlock () {

 function upgrade_flutter () {
   mkdir -p "$FLUTTER_ROOT/bin/cache"
+  chflags -R nouchg "$FLUTTER_ROOT/bin/cache"

   # This function is executed with a redirect that pipes the source of
   # this script into file descriptor 3.

并且测试flutter --version仍然失败,并出现shlock错误。

我错过了你之前说的一句话:

也许你是从一个二进制构建的颤振开始的? 那些有缓存预制,所以他们会通过 mkdir 罚款,但你将无法写入缓存

我想我正在使用颤振的二进制构建。 这是来自https://flutter.io/setup-macos/#get -sdk 的 zip。

由于好奇,我删除了cache文件夹,看看flutter脚本是否可以创建文件夹本身。 它不能: mkdir: /usr/local/Cellar/flutter/0.3.1-beta/bin/cache: Operation not permitted并将echo $(whoami)插入flutter表明脚本正在以我的个人用户身份运行(健全性检查)。

我对 Unix 权限不太熟悉,但看起来我确实需要sudo来编辑/usr/local/Cellar/flutter/任何文件,并且查看权限显示所有文件都在admin组:

$ pwd && echo && ls -al bin
/usr/local/Cellar/flutter/0.3.1-beta

total 32
drwxr-xr-x   5 briankung  admin   160 May  4 10:01 .
drwxr-xr-x  26 briankung  admin   832 May  4 09:53 ..
-r-xr-xr-x   1 briankung  admin  6892 May  4 10:01 flutter
-r--r--r--   1 briankung  admin  6338 May  4 09:52 flutter.bat
drwxr-xr-x   8 briankung  admin   256 May  4 09:52 internal

将目录复制到我的主目录中会为其分配staff组,然后在删除cache目录的情况下运行~/flutter/bin/flutter --version开始下载 Dart 语言。 但是,更改 Homebrew 的flutter文件夹/usr/local/Cellar/flutter/上的组不允许 brew keg 创建文件夹,当我自己创建文件夹时,我最终回到了shlock: open(/usr/local/Cellar/flutter/0.3.1-beta/bin/cache/shlock9849): Operation not permitted错误。

感谢@briankung 的详细回复。 我可以和你一起深入研究这个问题,但听起来基本错误是我们不能保证普通用户在安装 flutter 时可以写入 bin/cache,而 Flutter 假设了这一点。

大多数 Unix 软件包将它们管理的缓存位与二进制安装分开。 Flutter 的打包方式有点不正统,因为缓存的位包含了大部分的二进制安装。 Homebrew、apt-get、几乎所有的包管理器和操作系统都会有一些权限组合、构建过程中的 chroot、chattr/chflags 等,以尝试防止已安装的包被普通用户修改。

我认为在这里做的正确的事情可能是在文件中设置一个标志,将 flutter 缓存锁定为只读,并使 flutter 的内置更新工具尊重它。 这样我们就可以区分用户配置错误和使用安装包的用户,并显示适当的错误。 或者,更简单地说,我们可以只检查缓存的可写性,如果无法写入缓存,则跳过它。

如果其他工具已经支持这一点, @xster的原始建议可能就足够了。 听起来可能是这样。

我做了更多的挖掘。 看起来我们_大多数_不需要写入 FLUTTER_ROOT 及其子目录。

但是,有一些看起来可能会导致崩溃的例外情况:

我们在这里遇到的 shlock 绝对是一个。
锁定颤振升级是另一个问题。
黄金文件

此外,对颤振根 pub 缓存

鉴于我立即发现了这么多小问题,我认为要彻底解决这个问题,我们可能需要使用只读 FLUTTER_ROOT 添加运行集成测试,并追踪任何像这样的小问题。 这也将防止再次出现这种情况,因为作为 Flutter 开发人员很容易不小心引入这样的东西。

+1 使用只读 root 进行测试

有任何更新吗?

这不是我们目前计划做的事情,但如果有人想从事这项工作,我们会支持这项工作。 我认为它要么涉及与我们的持续集成脚本集成以某种方式发布到自制软件,要么创建一个知道如何与 Flutter 集成的引导脚本,并维护它(尤其是编写测试以确保我们知道什么时候它坏了,所以我们可以修复它)。 如果您对这方面的工作感兴趣,请不要犹豫与我联系。

我已将此错误更改为专门针对自制软件,如果您对 apt-get 的相同内容感兴趣,请提交一个单独的错误(尽管上面的评论同样适用于此)。

我为 Mac OS 制作了一个 Tap repo:(https://github.com/eclewlow/homebrew-formulas)

不过,它所做的只是安装颤振。
brew install eclewlow/formulas/flutter

您仍然需要自己下载 IOS 和 Android 开发工具。

不过它没有通过brew audit ,所以我不能将它添加到自制软件中。
原因如下:

  * Stable version URLs should not contain beta
  * Non-executables were installed to "/usr/local/opt/flutter/bin"
    The offending files are:
      /usr/local/opt/flutter/bin/cache
      /usr/local/opt/flutter/bin/internal
  * flutter has broken dynamic library links:

由于flutter 1.0版本已经发布,希望能看到公式😄。

由于flutter 1.0版本已经发布,希望能看到公式😄。

也很期待。

@eclewlow请更新到 1.0

抱歉,我在游轮上,卫星互联网很糟糕。

我会在 10 号回来,然后我就可以了。

如果有人想自己做,他们可以创建一个存储库。

我更改了公式,因此它实际上是从 git 中检查 Flutter,而不是下载预编译包。

但是我还没有弄清楚如何从存储库中获取最新版本标签。

公式如下所示:

类颤振 < 公式
desc "在创纪录的时间内构建漂亮的原生应用程序"
主页“ https://flutter.io/
版本“1.0.0”
网址“ https://github.com/flutter/flutter.git
sha256 "6e3ba2da94fb150d2cb8e0596eeb92c86e5e437e91a5f39f211bd4b21d0b24f8"

瓶子:不需要

定义安装
系统 "git", "fetch", "--tags"
# checkout latest 标签,像这样?
# git checkout $(git describe --abbrev=0 --tags)
# 并使用而不是下一行:
系统“git”、“结帐”、“标签/v1.0.0”
系统“./bin/flutter”
allfiles = File.join(buildpath, " *", "{ ,.*}")
mv Dir.glob(allfiles), Dir.glob(prefix), :force => true

# bin.install File.join(prefix, "bin/cache/dart-sdk/bin/dart")
# bin.install File.join(prefix, "bin/cache/dart-sdk/bin/pub")

结尾

def post_install
rm File.join(HOMEBREW_PREFIX, "bin", "flutter.bat")
chmod_R "+rwx", File.join(prefix, "bin"), :verbose => true

# this line could be useful, it installs the dependencies
# of flutter, such as xcode and android if needed
# "flutter packages get"

结尾

测试做
系统“假”
结尾
结尾

2018 年 12 月 6 日上午 11:39,Alberto Xamin [email protected]写道:

@eclewlow https://github.com/eclewlow请更新到 1.0


你收到这个是因为你被提到了。
直接回复本邮件,在 GitHub 上查看https://github.com/flutter/flutter/issues/14050#issuecomment-445002396 ,或者将线程静音https://github.com/notifications/unsubscribe-auth/AfVSYcUOrJtVDISTEwKF4pRcsO5PLvZWX2MgSgS5PLvRhks5

也很期待🚶

由于android-sdk可以作为木桶使用,我认为flutter也可以作为木桶使用会更有意义。 所以我继续为flutter木桶做了一个自制的水龙头。 你可以在这里查看

我首先尝试创建一个简单的公式,但失败了,因为我完全没有开发自制配方的经验。

如果你想要这个,你能澄清你真正想要它做什么吗?

例如,在你运行brew install flutter之后flutter channel beta该做什么? 您是否希望能够提交 PR 以更改本地 Flutter 安装中的 Flutter? 您希望它为您安装 Android SDK 或 Xcode 吗? 您希望能够在示例目录中执行flutter run吗?

我是自制软件的重度用户,但从未编写过自制插件。 也就是说,这是一个人的意见:

运行brew install flutterflutter channel beta该做什么?

切换到测试版频道。

您是否希望能够提交 PR 以更改本地 Flutter 安装中的 Flutter?

不。本用例中的 Homebrew 用于使用包,不一定要修改这些包。

您希望它为您安装 Android SDK 或 Xcode 吗?

它应该安装所有依赖项。

您是否希望能够在示例目录中执行 flutter run?

是的。 一旦你运行brew install flutterflutter将在路径上,你可以像安装它一样使用它,就像 Flutter 教程中描述的那样。

好的。 我更新了 Flutter 的自制配方。

https://github.com/eclewlow/homebrew-formulas

它通过 Git 在 flutter 存储库 (https://github.com/flutter/flutter) 中安装了 Flutter 的最新标记版本。
(当前为 v1.1.1,但它会在安装时自动检测最新版本)

要升级,您可能必须通过 brew 重新安装 flutter

brew uninstall flutter
brew install flutter

我写了一个非常小的教程来接触其他人。
https://medium.com/@sadmansamee/installing -flutter-via-homebrew-a5d7009c95ba?fbclid=IwAR0DJZOdi-av2X1ofmbc1MaO7SZ7c30bowlkPK9EjIztPCrOhTv2tGbdx7E

我为 Flutter 编写了自制程序。

https://github.com/miderwong/homebrew-flutter

它通过 Git 在 flutter 存储库(https://github.com/flutter/flutter)中安装 Flutter 的最新稳定版本(v1.0.0)。

brew install flutter
brew upgrade flutter

只是一个简单的例子,还有很多不足,欢迎指正。

https://github.com/flutter/flutter/issues/14050#issuecomment -449447441

这很有效,请不要像我一样对安装前的消息或安装前的漫长等待感到困惑,这是正常的,该消息仅适用于您在中文中或在运行flutter doctor遇到问题安装后。
谢谢 :)

关于#9401

brew install flutter                                                                                                                                                                                        
Error: No available formula with the name "flutter"
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

@jesusvallez需要点击一下,例如brew tap MiderWong/flutter 。 这就是https://github.com/flutter/flutter/issues/14050#issuecomment -449447441 没有说的,而是指的。 只需关注https://github.com/miderwong/homebrew-flutter 即可

我为 Flutter 编写了自制程序。

https://github.com/miderwong/homebrew-flutter

它通过 Git 在 flutter 存储库(https://github.com/flutter/flutter)中安装 Flutter 的最新稳定版本(v1.0.0)。

brew install flutter
brew upgrade flutter

只是一个简单的例子,还有很多不足,欢迎指正。

脚本已更新。 请使用以下命令更新 git 存储库:

brew untap MiderWong/flutter
brew tap MiderWong/flutter

并按照自述文件中的说明进行操作:
Flutter-homebrew-README

@MiderWong
得到

Error: Invalid formula: /usr/local/Homebrew/Library/Taps/miderwong/homebrew-flutter/flutter.rb
flutter: cannot load such file -- nokogiri
Error: Cannot tap miderwong/flutter: invalid syntax in tap!

@TuxujPes做了一个安装flutter的桶,可以通过运行安装

brew tap probablykasper/tap
brew cask install flutter
flutter upgrade

https://github.com/probablykasper/homebrew-tap/blob/master/Casks/flutter.rb
它只是下载 macOS flutter 安装 zip 并链接flutter可执行文件。 然后你会在之后运行flutter doctor

因此,我不必从用户的自定义点击安装,无论是@SpectralKH还是@MiderWong@eclewlow ,然后必须相信并希望:

  1. 该用户的点击将成为“官方”点击,并在必要时得到良好支持和更新。
  2. 该用户不会将恶意软件注入我的机器。

我的建议是与Dart 所做的相同dart-lang/dart的 brew tap,并在 Dart 官方文档中引用。
这使 Flutter 与 Dart 保持一致(考虑到它们实际上是姐妹项目)并保持一致和简单。
(思考:考虑到 Flutter 是 Dart 的姊妹项目,而 Flutter 需要 Dart,为什么不把它作为另一个公式捆绑在dart-lang水龙头中?)

我想我的问题是,作为一个非 brew 开发人员以及谁是这次讨论的新手:

  1. 这是在进行中吗? 如果是这样,更新是什么? 因为这自 2018 年 1 月以来一直是一个悬而未决的问题?
  2. 如果它还没有开始,作为一个社区,我们需要做些什么来完成它?

@Harmelodic非常公平的担忧。 他们至少可以制作一个正式的酿造桶——我的实际上只有 10 行代码。

还值得注意的是,在 6000 多个未解决的问题中,按 👍 反应排序时,它在列表中排名第四。 我感谢社区的努力,但我更喜欢在可能的情况下使用官方支持的东西,而且似乎我并不孤单。 请将此作为优先事项🙏

任何更新?

如果有人有兴趣拥有它,我们很乐意帮助您在 Flutter 构建基础架构中进行设置。

如果有人有兴趣拥有它,我们很乐意帮助您在 Flutter 构建基础架构中进行设置。

有人在做这方面的工作吗?

我为 Flutter 编写了自制程序。

https://github.com/miderwong/homebrew-flutter

它通过 Git 在 flutter 存储库(https://github.com/flutter/flutter)中安装 Flutter 的最新稳定版本(v1.0.0)。

brew install flutter
brew upgrade flutter

只是一个简单的例子,还有很多不足,欢迎指正。

它工作得很好。
但是我们还需要一个 MASTER 分支(不仅是 dev/stable)才能使用 Flutter for Web!

对于这个项目来说,这似乎是一次轻松的胜利。 请花一点时间并发货!

这将意味着对我们使用工具的方式进行一系列更改。 因为在 brew-world 中,Flutter 无法控制自我更新。 它还需要了解 Brew 的布局,或者如何找到可写的缓存位置。 这将属于@zanderso的观点,并且可能是一项很好的工作。

@eseidelGoogle有一个官方桶怎么样?

@probablykasper这是最简单的部分。 :) 困难的部分是确保futter工具在作为正常木桶安装位置/过程的一部分安装时知道如何正确运行,等等。

困难的部分是确保futter工具在作为正常木桶安装位置/过程的一部分安装时知道如何正确运行等。

没错。 教导flutter工具其他负责安装、更新的工具,并教导它理解更多样化的文件系统权限安排是一项相当不错的工作。

此外,它不是一个硬阻塞器,但这也与我们希望以一种低摩擦的方式让人们为 Flutter 做出贡献的愿望有些冲突,如果 Flutter 存储库位不是由 git 管理的,这会更棘手。

@probablykasper这是最简单的部分。 :) 困难的部分是确保futter工具在作为正常木桶安装位置/过程的一部分安装时知道如何正确运行,等等。

我正在 Homebrew Cask 上测试 Flutter,它对我来说似乎很好用。 您应该重新考虑使用 Cask 而不是 Formula for Homebrew 吗?

socheatsok78/自制扑扑

测试结果

可以使用flutter CLI 切换到不同的频道。
对于 Cask 然后使用公式,安装目录非常简单。

@socheatsok78会尝试一下。 谢谢

brew cask install socheatsok78/flutter/flutter

x-MacBook-Pro:flutter apple$ which flutter
/usr/local/bin/flutter

但是,由于 Catolina 的新安全性,它在 Mac 上似乎存在问题。

x-MacBook-Pro:mac apple$ flutter
/usr/local/bin/flutter: line 183: 73175 Killed: 9               "$DART" --packages="$FLUTTER_TOOLS_DIR/.packages" $FLUTTER_TOOL_ARGS "$SNAPSHOT_PATH" "$@"

但是,由于 Catolina 的新安全性,它在 Mac 上似乎存在问题。

x-MacBook-Pro:mac apple$ flutter
/usr/local/bin/flutter: line 183: 73175 Killed: 9               "$DART" --packages="$FLUTTER_TOOLS_DIR/.packages" $FLUTTER_TOOL_ARGS "$SNAPSHOT_PATH" "$@"

我在 Catalina 上,对此我不太确定。 我遇到的唯一问题是idevice_id可以在这里找到 #42302

但是,由于 Catolina 的新安全性,它在 Mac 上似乎存在问题。

x-MacBook-Pro:mac apple$ flutter
/usr/local/bin/flutter: line 183: 73175 Killed: 9               "$DART" --packages="$FLUTTER_TOOLS_DIR/.packages" $FLUTTER_TOOL_ARGS "$SNAPSHOT_PATH" "$@"

我在 Catalina 上,对此我不太确定。 我遇到的唯一问题是idevice_id可以在这里找到 #42302

转到系统偏好设置,打开安全菜单,在常规部分下,您可以允许访问 Dart。 再次运行flutter upgrade 。 它可能会再次失败,说明内核出现故障。 再次重复相同的过程,瞧!

在 /usr/local/Cellar/flutter 中安装 Flutter 并在 /usr/local/bin 中软链接二进制文件应该可以解决问题恕我直言。 我目前无法检查它,因为我还不敢升级到 Catalina。

关于这个问题的任何更新?

仍然希望我们会有一个规范的酿造水龙头和木桶。 Catalina PATH 配置很烦人!

这可能是两个小时的工作,并且会为许多人节省大量时间,所以请

期待这个。

点赞,期待!

大家好,快速提醒一下我们的卫生政策问题:

https://github.com/flutter/flutter/wiki/Issue-hygiene#do -not-add-me-too-or-same-comments-to-bugs

尽管如此,请知道我们已经意识到这个问题。

@zanderso我感谢您的节制,但我认为此时有必要就此特定请求进行一些沟通。 显然,人们对此非常感兴趣,并且希望得到官方支持而不是社区支持。 虽然有几个用户提出了解决方案,但更多的用户表达了对此的官方支持的愿望。 不幸的是,普遍的反应是没有行动。

我代表这个线程的每个人,请核心团队制定一个计划来解决这个问题,并将该计划传达给用户群。

大家好,快速提醒一下我们的卫生政策问题:

https://github.com/flutter/flutter/wiki/Issue-hygiene#do -not-add-me-too-or-same-comments-to-bugs

尽管如此,请知道我们已经意识到这个问题。

这是荒唐的。 我刚从 Flutter 主页过来,当我看到过时的安装过程时,我已经准备好试一试了。 来到这里,看到这个问题已经开放了整整两年,没有任何实质性的更新。

哦,好吧,那就去 Kotlin 吧。

来到这里是因为 flutter.dev 站点与许多其他 Google 站点一样,充满了可过滤且不适用于 Adblocker 的内容。 所以我无法在不禁用所有内容的情况下下载 flutter sdk。
apt-get / brew 会方便得多。

另外,就像@timmyjose 提到的那样

大家好,快速提醒一下我们的卫生政策问题:
https://github.com/flutter/flutter/wiki/Issue-hygiene#do -not-add-me-too-or-same-comments-to-bugs
尽管如此,请知道我们已经意识到这个问题。

这是荒唐的。 我刚从 Flutter 主页过来,当我看到过时的安装过程时,我已经准备好试一试了。 来到这里,看到这个问题已经开放了整整两年,没有任何实质性的更新。

哦,好吧,那就去 Kotlin 吧。

为什么不解决这个问题...

@CAoTx Flutter 的网站上没有任何广告,我在安装广告拦截器的情况下下载也没有问题。 也许您的自定义广告拦截过滤器过于严格? 该站点本身是开源的,如果您想了解如何调整过滤器。

另一种替代方法是使用下载页面底部所述的git clone来获取主频道。 您可以使用它,然后如果您不想使用 master,则使用flutter channel切换到另一个频道。

引导新的 macOS 用户进行 Flutter 开发和安装过程充其量是过时且令人困惑的。 brew install flutter应该是可行的,并且得到核心团队的支持,作为 flutter 的官方安装方法。

由于此问题已被标记为P6 ,这是可能的最低优先级,我想它不会很快得到解决? 这很有趣,因为这是存储库中评论最多和最活跃的问题之一。

@timsneath有什么方法可以让我们更加透明地了解这些社区请求的优先级?

https://github.com/flutter/flutter/wiki/Triage
https://github.com/flutter/flutter/wiki/Issue-hygiene
谈谈流程。

尽管我们的团队目前没有足够的带宽来解决这个问题,但这并不意味着其他人不能。 这将是一项中等/大型的努力,但应该由积极的贡献者来实现。

我可以想象有很多问题需要在这里回答:

  • 教导 flutter_tools(和其他脚本)不要写入 sdk 安装目录,而是使用其他缓存目录(无论如何这可能对代码卫生有用)。
  • 教导 flutter_tools 可以安装不可升级(不可写)并以某种方式将用户指向不同的升级方法。
  • Flutter 基于 git 的安装方式是否兼容这些工具? 我们已经提供了用于初始下载的 tarballs/zips,但目前我们假设用户将 flutter/flutter 作为 git repo 安装。 如果它不兼容,那么基础设施方面可能会有一些重要的流程工作来支持生产/分发/测试非 git 分发的 Flutter。

很高兴讨论优先级(可能在另一个论坛中),但我鼓励查看其他哪些错误被标记为比这个优先级更高。 Flutter 有很多用户,并且有很多(有时是紧急的)请求。 我们尝试按照对我们/用户目标产生最大影响的顺序来解决它们。

@eseidelGoogle感谢您的澄清和战略草图,非常感谢和超级授权!

要回答有关更新的问题,我认为如果常规flutter update命令不能用于非 git 安装,那么这应该足够了。 有没有办法做到这一点? 理想情况下,它不会是另一个发行版,只是检查代码以查看 flutter 二进制文件的位置是否有.git文件夹。 这可能吗?

该公式也可以只下载 git 存储库并为用户运行命令。 公式不必只安装二进制文件。

作为参考,rustup 是这样做的:

rustup ,Rust 编程语言的工具链管理器,它可以通过运行安装脚本(独立安装)或从操作系统包管理器安装。 当您想升级 rustup 时,您可以运行rustup self update进行独立安装,或者如果您通过操作系统包管理器安装了 rustup,则可以通过您的操作系统包管理器进行升级。 如果您在通过 OS 包管理器安装 rustup 时尝试运行rustup self update ,它会给您一个错误,说请从您的 OS 包管理器升级它。 我真的很喜欢这个实现,因为当你第一次通过你的操作系统包管理器安装一些东西并使用它的内置功能升级它时,它可能会失去操作系统包管理器的控制,并可能在未来导致一些未知的错误。

我认为 Flutter 最好的方法是采用与 rustup 类似的实现,但这是一项巨大的工作(需要重构很多东西让 Flutter 可以由系统包管理器管理)并且可能需要 flutter 核心团队成员的帮助,所以我只是在这里提出我的建议,我不希望这能很快完成。

是的,听起来比本主题前面提到的所谓的 10 班轮更复杂。

直到有更多关于这个的讨论: http :

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

drewwarren picture drewwarren  ·  3评论

shadyaziza picture shadyaziza  ·  3评论

apwilson picture apwilson  ·  3评论

dyu picture dyu  ·  3评论

Hixie picture Hixie  ·  3评论