Flutter: Deixe flutter ser instalável via homebrew

Criado em 11 jan. 2018  ·  77Comentários  ·  Fonte: flutter/flutter

Não encontrou nenhum problema existente sobre isso. Abrindo para rastreamento.

Deixe flutuar brew install flutter capaz.

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

Comentários muito úteis

Então, em vez de eu ter que instalar a partir de um toque personalizado do usuário, seja do @SpectralKH ou do @MiderWong ou do @eclewlow , e então tenho que confiar e esperar que:

  1. O toque desse usuário se tornará o "oficial" que é bem suportado e atualizado quando necessário.
  2. Esse usuário não vai injetar software malicioso na minha máquina.

Minha sugestão é fazer o mesmo que o Dart fez quando o Dart tem uma torneira de cerveja chamada dart-lang/dart e é referenciado nos documentos oficiais do Dart.
Isso alinha Flutter com Dart (considerando que eles são efetivamente projetos irmãos) e mantém as coisas consistentes e simples.
(Pensamento no chuveiro: Considerando que Flutter é um projeto irmão do Dart e Flutter requer o Dart, por que não juntá-lo como outras fórmulas na torneira dart-lang ?)

Acho que minhas perguntas são, como um desenvolvedor não cervejeiro e quem é novo nesta discussão:

  1. Isso está em andamento? e se sim, qual é a atualização? Porque este é um problema aberto desde janeiro de 2018?
  2. Se ainda não foi iniciado, o que precisamos fazer como comunidade para fazê-lo?

Todos 77 comentários

@gspencergoog você pode estar interessado

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

O processo é bastante simples. Embora tenhamos que nos certificar de que ele se integra ao nosso https://github.com/flutter/flutter/wiki/Release-process , de preferência de forma automatizada.

Olá, equipe do Flutter! Comecei adicionando uma fórmula flutter ao Homebrew em https://github.com/Homebrew/homebrew-core/pull/27395 , mas definitivamente poderia usar mais orientações sobre como seguir as instruções neste comentário:

Embora tenhamos que nos certificar de que ele se integra ao nosso https://github.com/flutter/flutter/wiki/Release-process , de preferência de forma automatizada.

No momento, a fórmula do Homebrew apenas baixa a versão beta atual, descompacta-a ​​e copia para o Flutter's Keg (por exemplo, /usr/local/Cellar/flutter/0.3.1/ ).

Qualquer feedback seria bem-vindo!

@ jcollins-g escrito para o shlock de https://github.com/Homebrew/homebrew-core/pull/27395 , talvez possamos verificar se shlock retorna não permitido / 1 e o id do processo pai está pronto, não shlock. Também podemos bloquear a gravação em partes do cache para evitar a autoatualização quando o brew for instalado.

Para o contexto desse Homebrew PR, escrevi sobre o problema de shlock nos comentários que começam aqui: https://github.com/Homebrew/homebrew-core/pull/27395/files#diff -b438c13e924f5f36b1ce4398a89436d2R36

Na verdade, passamos por essa ideia um pouco mais e acho que, no final das contas, gostaríamos que a fórmula oficial estivesse em uma torneira de homebrew (repositório não-core). Dessa forma, podemos manter os alvos de atualização de vibração e de fermentação hermeticamente sincronizados.

Esperamos poder trazer uma versão de sua fórmula para a torneira em um futuro próximo e simplificar o processo oficial de instalação.

Certo! Nesse caso, ficaria feliz em fechar o PR em homebrew-core se isso fizer sentido.

sim. Obrigado por fazer a contribuição!

@xster fwiw isso não é necessário. As fórmulas no Homebrew / homebew-core são atualizadas horas após o lançamento, já que executamos brew livecheck várias vezes por dia.

O comportamento de @xster / @briankung shlock na fermentação é um pouco surpreendente para mim. Não é como se houvesse algo especial acontecendo aqui:

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) {

Isso sempre deve ser válido em um sistema de arquivos POSIX - bem, a menos que você tenha definido chflags no diretório para evitar que ele seja gravado:

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$

Se algo no homebrew ou a maneira como você está configurando fizer isso, consertar o shlock não vai resolver, porque você falhará quando outras operações de gravação forem inevitavelmente tentadas no cache.

Se adicionar esta linha:

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

aqui corrige, você tem um problema de chflags e provavelmente deve lidar com isso de alguma forma. De alguma forma, bin / cache pode já existir no ponto em que você executa o flutter pela primeira vez (talvez você esteja começando com uma construção binária do flutter? Eles têm o cache pré-feito e, portanto, passarão pelo mkdir sem problemas, mas você não será capaz para gravar no cache).

[editado para corrigir chflags]

@ jcollins-g Ah, meu unix-fu não está à altura - eu não sabia sobre chflags , mas faz sentido. Suponho que seja acadêmico neste momento, mas vou dar uma olhada nisso. Obrigado!

Eu adicionei a linha da seguinte maneira:

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.

E o teste flutter --version ainda falha com o erro shlock .

Eu perdi algo que você disse antes:

talvez você esteja começando com uma construção binária de vibração? Esses têm cache pré-feito e, portanto, passarão pelo mkdir sem problemas, mas você não será capaz de gravar no cache

Acho que estou usando uma versão binária de flutter. É o zip de https://flutter.io/setup-macos/#get -sdk.

Como estava curioso, apaguei a pasta cache para ver se o script flutter poderia criar a própria pasta. Não poderia: mkdir: /usr/local/Cellar/flutter/0.3.1-beta/bin/cache: Operation not permitted e inserir echo $(whoami) em flutter mostra que o script está sendo executado como meu usuário pessoal (verificação de integridade).

Não estou muito familiarizado com as permissões do Unix, mas parece que preciso de sudo para editar quaisquer arquivos em /usr/local/Cellar/flutter/ , e revisar as permissões mostra que todos os arquivos estão em admin Grupo

$ 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

Copiar o diretório para o meu diretório inicial atribui a ele o grupo staff e, em seguida, executar ~/flutter/bin/flutter --version com o diretório cache excluído inicia o download do idioma DART. No entanto, alterar o grupo na pasta flutter do Homebrew, /usr/local/Cellar/flutter/ , não permite que o barril de cerveja crie a pasta, e quando eu mesmo crio a pasta, acabo de volta à shlock: open(/usr/local/Cellar/flutter/0.3.1-beta/bin/cache/shlock9849): Operation not permitted Erro de

Obrigado pela resposta detalhada @briankung. Eu poderia mergulhar mais fundo nisso com você, mas parece que o bug fundamental é que não podemos garantir a capacidade de gravação em bin / cache na instalação do flutter por usuários regulares e o Flutter assume isso.

A maioria dos pacotes Unix separa os bits em cache que gerenciam da instalação binária. O método de empacotamento do Flutter é um pouco heterodoxo, pois os bits em cache incluem a maior parte da instalação binária. Homebrew, apt-get, virtualmente todos os gerenciadores de pacotes e sistemas operacionais terão alguma combinação de permissões, chroot durante a construção, chattr / chflags, etc, para tentar evitar que os pacotes instalados sejam modificados por usuários regulares.

Acho que a coisa certa a fazer aqui pode ser ter um sinalizador definido em um arquivo que bloqueia o cache de flutter como somente leitura e fazer com que as ferramentas de atualização integradas do flutter respeitem isso. Dessa forma, podemos distinguir entre o erro de configuração do usuário e o usuário usando um pacote instalado e exibir os erros apropriados. Ou, mais simplesmente, podemos apenas verificar a capacidade de gravação do cache e ignorá-la se não pudermos gravar no cache.

A sugestão original de @xster pode ser suficiente se o resto das ferramentas já suportarem isso. o que parece ser o caso.

Eu fiz um pouco mais de escavação. Parece que _principalmente_ não precisamos gravar em FLUTTER_ROOT e seus subdiretórios.

No entanto, existem exceções que parecem provavelmente resultar em falhas:

O choque que estamos enfrentando aqui é definitivamente um.
A atualização do travamento na vibração é outra.
O bloqueio de arquivos dourados é outra.

Além disso, a preferência por um cache de pub de raiz flutuante parece suspeita para mim - a menos que o pub seja codificado para lidar com esse caso, isso provavelmente não funcionará para os casos em que um desenvolvedor deseja usar um pacote diferente.

Dado que encontrei muitos pequenos problemas imediatamente, acho que para consertar isso de vez, provavelmente precisamos adicionar testes de integração em execução usando um FLUTTER_ROOT somente leitura e rastrear qualquer pequeno problema como este. Isso também evitará que isso apareça novamente, pois é muito fácil para um desenvolvedor de Flutter introduzir acidentalmente algo como isso.

+1 no teste com raiz somente leitura

Alguma atualização sobre isso?

No momento, isso não é algo que estamos planejando fazer, mas se alguém quisesse trabalhar nisso, apoiaríamos esse trabalho. Eu presumo que envolveria a integração com nossos scripts de integração contínua para publicar no homebrew de alguma maneira ou a criação de um script de bootstrap que sabe como se integrar com flutter e manter isso (e especialmente, escrever testes para ter certeza de que sabemos quando quebras, para que possamos corrigi-lo). Se você estiver interessado em trabalhar nisso, não hesite em entrar em contato comigo.

Eu mudei este bug para ser especificamente sobre homebrew, se você estiver interessado na mesma coisa para o apt-get, por favor, registre um bug separado (embora o comentário acima se aplique igualmente a isso).

Fiz um repositório de toque para Mac OS: (https://github.com/eclewlow/homebrew-formulas)

Tudo o que ele faz é instalar vibração, no entanto.
brew install eclewlow/formulas/flutter

Você ainda precisa fazer o download do IOS & Android Dev Tools sozinho.

Porém, ele não passou no brew audit , então não posso adicioná-lo ao homebrew.
Aqui está o porquê:

  * 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:

Como a versão 1.0 do flutter foi lançada, espero poder ver a fórmula😄.

Como a versão 1.0 do flutter foi lançada, espero poder ver a fórmula😄.

ansioso por isso também.

@eclewlow atualize para 1.0

Desculpe, estou em um cruzeiro e a Internet via satélite é terrível.

Estarei de volta no dia 10 e então posso fazer isso.

Se alguém quiser fazer isso sozinho, basta criar um repositório.

Mudei a fórmula para que ele realmente verifique o Flutter do git, em vez de baixar o pacote pré-compilado.

Mas eu não descobri como obter a marca da versão mais recente de um repositório.

Esta é a aparência da fórmula:

classe Flutter <Formula
desc "Construa lindos aplicativos nativos em tempo recorde"
página inicial " https://flutter.io/ "
versão “1.0.0"
url " https://github.com/flutter/flutter.git "
sha256 "6e3ba2da94fb150d2cb8e0596eeb92c86e5e437e91a5f39f211bd4b21d0b24f8"

garrafa: desnecessária

def instalar
sistema "git", "fetch", "--tags"
# checkout tag mais recente, algo assim?
# git checkout $ (git describe --abbrev = 0 --tags)
# e use em vez desta próxima linha:
sistema "git", "checkout", "tags / v1.0.0"
sistema "./bin/flutter"
allfiles = File.join (buildpath, " *", "{ ,. *}")
mv Dir.glob (allfiles), Dir.glob (prefixo),: force => true

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

fim

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

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

fim

teste fazer
sistema "falso"
fim
fim

Em 6 de dezembro de 2018, às 11h39, Alberto Xamin [email protected] escreveu:

@eclewlow https://github.com/eclewlow atualize para 1.0

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub https://github.com/flutter/flutter/issues/14050#issuecomment-445002396 ou desative o tópico https://github.com/notifications/unsubscribe-auth/AfVSYcUOrJtVDISTEwKF4pRcsO5PLpZRhks5WX2XWG2X2WRcsO5PLvMRhks5WX2 .

Olhando para a frente também 🚶

Uma vez que android-sdk está disponível como barril, pensei que faria mais sentido que flutter também estivesse disponível como barril. Então fui em frente e fiz um tapinha caseiro para o barril de flutter . Você pode conferir aqui .

Tentei primeiro criar uma fórmula simples e falhei miseravelmente, pois não tenho absolutamente nenhuma experiência no desenvolvimento de fórmulas caseiras.

Se desejar, pode esclarecer o que realmente gostaria que fosse feito?

por exemplo, o que flutter channel beta fazer depois de executar brew install flutter ? Você gostaria de poder enviar PRs para alterações de vibração de sua instalação local de vibração? Você gostaria que isso instale o Android SDK ou Xcode para você? Você gostaria de poder fazer flutter run nos diretórios de exemplos?

Eu sou um usuário homebrew pesado, mas nunca escrevi um plug-in homebrew. Dito isso, aqui está a opinião de um homem:

o que flutter channel beta fazer depois de executar brew install flutter ?

Mude para o canal beta.

Você gostaria de poder enviar PRs para alterações de vibração de sua instalação local de vibração?

Não. Homebrew neste caso de uso é para usar pacotes, não necessariamente modificando esses pacotes.

Você gostaria que isso instale o Android SDK ou Xcode para você?

Deve instalar todas as dependências.

Você gostaria de poder executar flutter nos diretórios de exemplos?

sim. Depois de executar brew install flutter , flutter estará no caminho e você pode usá-lo como se o tivesse instalado da mesma maneira descrita no tutorial do Flutter.

OK. Eu atualizei minha fórmula homebrew para Flutter.

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

Ele instala a versão com tag mais recente do Flutter no repositório do flutter (https://github.com/flutter/flutter) via Git.
(Atualmente v1.1.1, mas irá detectar automaticamente o mais recente na instalação)

Para atualizar, você provavelmente terá que reinstalar o flutter via brew

brew uninstall flutter
brew install flutter

Escrevi um pequeno tutorial para alcançar outras pessoas.
https://medium.com/@sadmansamee/installing -flutter-via-homebrew-a5d7009c95ba? fbclid = IwAR0DJZOdi-av2X1ofmbc1MaO7SZ7c30bowlkPK9EjIztPCrOhTv2tGbdx7E

Eu escrevi minha fórmula homebrew para Flutter.

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

Ele instala a versão estável mais recente (v1.0.0) do Flutter no repositório do flutter (https://github.com/flutter/flutter) via Git.

brew install flutter
brew upgrade flutter

Apenas um exemplo simples, existem muitas deficiências, bem-vindo para me corrigir.

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

Isso funciona muito, por favor, não se confunda como eu pela mensagem antes da instalação ou pela longa espera na instalação, isso é normal e a mensagem só se aplica se você estiver na China ou tiver problemas para executar flutter doctor após a instalação.
Obrigado :)

Relacionado a # 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 vai precisar de um toque, por exemplo brew tap MiderWong/flutter . Isso é o que https://github.com/flutter/flutter/issues/14050#issuecomment -449447441 não disse, mas quis dizer. Basta seguir https://github.com/miderwong/homebrew-flutter .

Eu escrevi minha fórmula homebrew para Flutter.

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

Ele instala a versão estável mais recente (v1.0.0) do Flutter no repositório do flutter (https://github.com/flutter/flutter) via Git.

brew install flutter
brew upgrade flutter

Apenas um exemplo simples, existem muitas deficiências, bem-vindo para me corrigir.

O script foi atualizado. Atualize o repositório git com o seguinte comando:

brew untap MiderWong/flutter
brew tap MiderWong/flutter

E siga as instruções do README:
Flutter-homebrew-README

@MiderWong
obtendo

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 Fez um barril para instalação de vibração, que pode ser instalado executando

brew tap probablykasper/tap
brew cask install flutter
flutter upgrade

https://github.com/probablykasper/homebrew-tap/blob/master/Casks/flutter.rb
Ele simplesmente baixa o zip de instalação do macOS flutter e vincula o executável flutter . Então você executaria flutter doctor depois.

Então, em vez de eu ter que instalar a partir de um toque personalizado do usuário, seja do @SpectralKH ou do @MiderWong ou do @eclewlow , e então tenho que confiar e esperar que:

  1. O toque desse usuário se tornará o "oficial" que é bem suportado e atualizado quando necessário.
  2. Esse usuário não vai injetar software malicioso na minha máquina.

Minha sugestão é fazer o mesmo que o Dart fez quando o Dart tem uma torneira de cerveja chamada dart-lang/dart e é referenciado nos documentos oficiais do Dart.
Isso alinha Flutter com Dart (considerando que eles são efetivamente projetos irmãos) e mantém as coisas consistentes e simples.
(Pensamento no chuveiro: Considerando que Flutter é um projeto irmão do Dart e Flutter requer o Dart, por que não juntá-lo como outras fórmulas na torneira dart-lang ?)

Acho que minhas perguntas são, como um desenvolvedor não cervejeiro e quem é novo nesta discussão:

  1. Isso está em andamento? e se sim, qual é a atualização? Porque este é um problema aberto desde janeiro de 2018?
  2. Se ainda não foi iniciado, o que precisamos fazer como comunidade para fazê-lo?

@Harmelodic Preocupações muito justas. Eles poderiam fazer um barril de cerveja oficial no mínimo - o meu tem literalmente 10 linhas de código.

Também é importante notar que, das mais de 6.000 questões em aberto, esta é a quarta na lista ao classificar por 👍 reações. Agradeço os esforços da comunidade, mas prefiro usar algo que seja oficialmente suportado sempre que possível, e parece que não estou sozinho nisso. Por favor, faça disso uma prioridade 🙏

Qualquer atualização?

Se alguém estiver interessado em possuir isso, ficaríamos felizes em ajudá-lo a configurar a infraestrutura de construção do Flutter.

Se alguém estiver interessado em possuir isso, ficaríamos felizes em ajudá-lo a configurar a infraestrutura de construção do Flutter.

Alguém está trabalhando nisso?

Eu escrevi minha fórmula homebrew para Flutter.

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

Ele instala a versão estável mais recente (v1.0.0) do Flutter no repositório do flutter (https://github.com/flutter/flutter) via Git.

brew install flutter
brew upgrade flutter

Apenas um exemplo simples, existem muitas deficiências, bem-vindo para me corrigir.

Funciona muito bem.
Mas também precisamos de um branch MASTER (não apenas dev / stable) para poder usar o Flutter para Web!

Esta parece uma vitória fácil para o projeto. Por favor, gaste um pouco de tempo e envie isso!

Isso significaria um monte de mudanças na maneira como fazemos nossas ferramentas. Já que em um mundo de cerveja, Flutter não estaria no controle da autoatualização. Ele também precisaria estar ciente do layout de Brew ou de como encontrar um local gravável para armazenamento em cache. Isso cairia na opinião de

@eseidelGoogle Que tal ter um barril oficial?

@probablykasper essa é a parte fácil. :) A parte difícil é ter certeza de que a ferramenta futter sabe como se comportar corretamente quando instalada como parte de um processo / local de instalação normal do barril, etc.

A parte difícil é ter certeza de que a ferramenta futter sabe como se comportar corretamente quando instalada como parte de um processo / local de instalação normal do barril, etc.

Está correto. Ensinar a ferramenta flutter que outra coisa é responsável pela instalação, atualização e ensiná-la a entender um arranjo mais diversificado de permissões de sistemas de arquivos é uma boa parte do trabalho.

Além disso, não é um bloqueador de disco rígido, mas também está um tanto em conflito com nosso desejo de ter uma forma de baixo atrito para as pessoas contribuírem com o Flutter, o que é mais complicado se os bits de repositório do Flutter não forem gerenciados pelo git.

@probablykasper essa é a parte fácil. :) A parte difícil é ter certeza de que a ferramenta futter sabe como se comportar corretamente quando instalada como parte de um processo / local de instalação normal do barril, etc.

Estou testando o Flutter no Homebrew Cask, parece funcionar bem para mim. Você deveria reconsiderar o uso do Cask em vez do Formula for Homebrew?

socheatsok78 / homebrew-flutter

Resultado do teste

A mudança para um canal diferente pode ser realizada usando flutter CLI.
E o diretório de instalação é bastante simples para o Cask e então para o Fórmula.

@ socheatsok78 vai tentar. obrigado

brew cask install socheatsok78/flutter/flutter

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

Mas, parece que tem problemas no Mac devido à nova segurança em Catolina.

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" "$@"

Mas, parece que tem problemas no Mac devido à nova segurança em Catolina.

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" "$@"

Estou no Catalina, não tenho muita certeza disso. O único problema que eu estava tendo era idevice_id que pode ser encontrado aqui # 42302

Mas, parece que tem problemas no Mac devido à nova segurança em Catolina.

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" "$@"

Estou no Catalina, não tenho muita certeza disso. O único problema que eu estava tendo era idevice_id que pode ser encontrado aqui # 42302

vá para Preferências do Sistema, abra o menu de segurança, na seção geral você pode permitir o acesso ao Dart. Execute flutter upgrade novamente. Pode falhar uma segunda vez, dizendo que algo no kernel está falhando. repita o mesmo procedimento e voila!

Instalar o Fluter em / usr / local / Cellar / flutter e criar softlinking em / usr / local / bin deve resolver o problema IMHO. Não posso verificar isso atualmente, pois não me atrevi a atualizar para o Catalina ainda.

Alguma atualização para esse problema?

Ainda esperando que tenhamos uma torneira de cerveja canônica e barril. A configuração do Catalina PATH é simplesmente irritante!

isso é provavelmente duas horas de trabalho e economizará toneladas de horas para muitas pessoas, então, por favor

Ansioso por isso.

Polegar para cima, ansioso por isso!

Mim

Olá pessoal, um rápido lembrete sobre nosso problema de políticas de higiene:

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

Dito isso, saiba que estamos cientes desse problema.

@zanderso Agradeço a moderação, mas acho que alguma comunicação sobre este pedido em particular é necessária neste momento. Há claramente um grande interesse nisso e um desejo de apoio oficial em vez de apoio da comunidade. Embora vários usuários tenham proposto soluções, muitos mais usuários expressaram o desejo de suporte oficial para isso. Infelizmente, a resposta geral foi de nenhuma ação.

Em nome de todos neste tópico, peço à equipe principal que faça um plano para resolver isso e comunique esse plano à base de usuários.

Olá pessoal, um rápido lembrete sobre nosso problema de políticas de higiene:

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

Dito isso, saiba que estamos cientes desse problema.

Isto é ridículo. Acabei de sair da página inicial do Flutter e estava pronto para tentar quando vi o processo arcaico de instalação. Vim aqui e vi este problema aberto por dois anos inteiros sem atualizações tangíveis.

Bem, então para Kotlin.

Vim aqui porque o site flutter.dev, como muitos outros sites do Google, está cheio de coisas que são filtráveis ​​e não funcionam com o Adblocker. Portanto, não consigo fazer o download do flutter sdk sem desativar tudo.
apt-get / brew seria muito mais conveniente.

Além disso, como mentianed por @timmyjose

Olá pessoal, um rápido lembrete sobre nosso problema de políticas de higiene:
https://github.com/flutter/flutter/wiki/Issue-hygiene#do -not-add-me-too-or-same-comments-to-bugs
Dito isso, saiba que estamos cientes desse problema.

Isto é ridículo. Acabei de sair da página inicial do Flutter e estava pronto para tentar quando vi o processo arcaico de instalação. Vim aqui e vi este problema aberto por dois anos inteiros sem atualizações tangíveis.

Bem, então para Kotlin.

Por que isso não é endereçado ...

O site do @CAoTx Flutter não tem anúncios e não tenho problemas para fazer download com bloqueadores de anúncios instalados. Talvez seus filtros de adblock personalizados sejam muito restritivos? O próprio site é de código aberto , se você quiser ver como ajustar seus filtros.

Outra alternativa é usar git clone conforme descrito na parte inferior da página de downloads para obter o canal mestre. Você pode usar isso e, em seguida, usar flutter channel para mudar para outro canal se não quiser usar o master.

Integrar um novo usuário do macOS para agitar o desenvolvimento e o processo de instalação é arcaico e, na melhor das hipóteses, confuso. brew install flutter deve ser factível e suportado pela equipe principal como o método oficial de instalação para flutter.

Como esse problema foi rotulado como P6 , que é a prioridade mais baixa possível, acho que não será resolvido tão cedo. É muito engraçado, já que este é um dos assuntos mais comentados e ativos no repositório.

@timsneath existe alguma maneira de conseguirmos mais transparência sobre como essas solicitações da comunidade são priorizadas?

https://github.com/flutter/flutter/wiki/Triage
https://github.com/flutter/flutter/wiki/Issue-hygiene
falar sobre os processos.

Embora nossas equipes atualmente não tenham largura de banda para lidar com esse problema, isso não significa que outra pessoa não tenha. Isso seria um esforço médio / grande, mas deve ser realizado por um colaborador motivado.

Há um monte de perguntas que eu poderia imaginar que precisariam ser respondidas aqui:

  • Ensinar flutter_tools (e outros scripts) a não gravar no diretório de instalação do sdk, mas sim usar outros diretórios de cache (isso pode ser útil para higiene do código, independentemente).
  • Ensinar ao fluttter_tools que não há problema em ter uma instalação não atualizável (não gravável) e, de alguma forma, indicar aos usuários diferentes métodos de atualização.
  • O método de instalação baseado em git do Flutter é compatível com essas ferramentas? Já oferecemos tarballs / zips para download inicial, mas atualmente assumimos que os usuários instalam flutter / flutter como um repositório git. Se não for compatível, pode haver algum trabalho de processo não trivial no lado da infraestrutura para suportar a produção / distribuição / teste de distribuições não git de flutter.

Fico feliz em discutir sobre as prioridades (talvez em outro fórum), mas eu encorajo olhar para os outros bugs que são rotulados de prioridade mais alta do que este. O Flutter tem muitos usuários e, a partir deles, muitas solicitações (às vezes urgentes). Tentamos abordá-los na ordem de causar o maior impacto em relação às metas de nossos / usuários.

@eseidelGoogle Obrigado pelo esclarecimento e pelo esboço da estratégia, é muito apreciado e super capacitador!

Para responder à pergunta sobre atualização, acho que se o comando normal flutter update simplesmente não pode estar disponível para instalações não git, então isso deve ser bom o suficiente. Existe uma maneira de fazer isso? Idealmente, não seria outra distribuição, apenas uma verificação if no código para ver se a localização do binário flutter tem uma pasta .git . Isso é possível?

A fórmula também pode simplesmente baixar o repositório git e executar os comandos para um usuário. As fórmulas não precisam apenas instalar binários.

Como referência, é assim que o rustup faz:

rustup , o gerenciador de conjunto de ferramentas da linguagem de programação Rust, pode ser instalado executando um script de instalação (instalação autônoma) ou instalado a partir de um gerenciador de pacotes do sistema operacional. Quando quiser atualizar o rustup, você pode executar rustup self update para instalação autônoma ou atualizar por meio do gerenciador de pacotes do sistema operacional se instalou o rustup por meio do gerenciador de pacotes do sistema operacional. Se você tentar executar rustup self update quando o rustup for instalado por meio do gerenciador de pacotes do sistema operacional, será exibido um erro, dizendo por favor atualize-o a partir do gerenciador de pacotes do sistema operacional. Eu realmente gosto dessa implementação, porque quando você instala pela primeira vez algo por meio do gerenciador de pacotes do sistema operacional e o atualiza usando a funcionalidade embutida dele, pode ficar fora de controle do gerenciador de pacotes do sistema operacional e pode causar alguns erros desconhecidos no futuro.

Acho que a melhor maneira de flutter é adotar uma implementação semelhante à do rustup, mas este é um trabalho enorme (é necessário refatorar muitas coisas para permitir que o flutter possa ser gerenciado por um gerenciador de pacotes do sistema) e pode requerer a ajuda de membros da equipe principal do flutter , então eu apenas dou minhas sugestões aqui e não espero que isso possa ser feito em breve.

Sim, parece muuuuito mais complicado do que o alegado 10 liner que foi mencionado anteriormente neste tópico.

TIL há mais discussão sobre isso em: http://flutter.dev/go/sdk-per-platform-installers

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Hixie picture Hixie  ·  3Comentários

shadyaziza picture shadyaziza  ·  3Comentários

yjbanov picture yjbanov  ·  3Comentários

drewwarren picture drewwarren  ·  3Comentários

xster picture xster  ·  3Comentários