Flutter: Laissez flutter être installable via homebrew

Créé le 11 janv. 2018  ·  77Commentaires  ·  Source: flutter/flutter

Je n'ai trouvé aucun problème existant à ce sujet. Ouverture pour le suivi.

Soit le flottement brew install flutter capable.

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

Commentaire le plus utile

Ainsi, au lieu que je doive installer à partir du robinet personnalisé d'un utilisateur, que ce soit celui de @MiderWong ou celui de @eclewlow , puis de faire confiance et d'espérer que :

  1. Le robinet de cet utilisateur deviendra le "officiel" qui est bien pris en charge et mis à jour si nécessaire.
  2. Cet utilisateur ne va pas injecter de logiciel malveillant sur ma machine.

Ma suggestion est de faire la même chose que ce que Dart a fait où Dart a un robinet d'infusion nommé dart-lang/dart et est référencé dans les documents officiels de Dart.
Cela aligne Flutter avec Dart (étant donné qu'il s'agit effectivement de projets frères) et maintient les choses cohérentes et simples.
(Pensée de douche : étant donné que Flutter est un projet frère de Dart et que Flutter nécessite Dart, pourquoi ne pas simplement le regrouper comme une autre formule dans le robinet dart-lang ?)

Je suppose que mes questions sont, en tant que développeur non-brew et qui est nouveau dans cette discussion:

  1. Est-ce en cours ? et si oui quelle est la mise à jour ? Parce que c'est un problème ouvert depuis janvier 2018 ?
  2. Si cela n'a pas encore commencé, que devons-nous faire en tant que communauté pour le faire ?

Tous les 77 commentaires

@gspencergoog vous pourriez être intéressé

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

Le processus est assez simple. Bien que nous devions nous assurer qu'il s'intègre à notre https://github.com/flutter/flutter/wiki/Release-process , idéalement de manière automatisée.

Salut l'équipe Flutter ! J'ai commencé à ajouter une formule flutter à Homebrew sur https://github.com/Homebrew/homebrew-core/pull/27395 , mais je pourrais certainement utiliser plus de conseils pour suivre la direction de ce commentaire :

Bien que nous devions nous assurer qu'il s'intègre à notre https://github.com/flutter/flutter/wiki/Release-process , idéalement de manière automatisée.

À l'heure actuelle, la formule Homebrew télécharge simplement la version bêta actuelle, la décompresse et la copie dans Flutter's Keg (par exemple /usr/local/Cellar/flutter/0.3.1/ ).

Tous les commentaires seraient les bienvenus!

@jcollins-g par rapport au shlock de https://github.com/Homebrew/homebrew-core/pull/27395 , nous pouvons peut-être vérifier si shlock ne renvoie pas autorisé / 1 et que l'identifiant du processus parent est brassé, ne shlock pas. Nous pouvons également verrouiller l'écriture dans certaines parties du cache pour empêcher la mise à jour automatique lors de l'installation du brassage.

Pour le contexte dans ce Homebrew PR, j'ai écrit sur le problème shlock dans les commentaires commençant ici: https://github.com/Homebrew/homebrew-core/pull/27395/files#diff -b438c13e924f5f36b1ce4398a89436d2R36

En fait, nous avons un peu plus approfondi cette idée et je pense qu'en fin de compte, nous voudrions que la formule officielle soit dans un robinet homebrew (référentiel non-core). De cette façon, nous pouvons garder la mise à niveau flottante et les cibles de mise à niveau de brassage hermétiquement synchronisées.

Espérons que nous pourrons mettre une version de votre formule dans le robinet dans un proche avenir et simplifier le processus d'installation officiel.

Sûr! Dans ce cas, je serais heureux de clore le PR sur homebrew-core si cela a du sens ?

Oui. Merci d'avoir contribué !

@xster fwiw ce n'est pas nécessaire. Les formules dans Homebrew/homebew-core sont mises à niveau quelques heures après les versions en amont, car nous exécutons brew livecheck plusieurs fois par jour.

Le comportement de @xster / @briankung shlock dans le brew me surprend un peu. Ce n'est pas comme s'il se passait quelque chose de spécial ici :

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

Cela devrait toujours être valide sur un système de fichiers POSIX - eh bien, à moins que vous n'ayez défini des chflags sur le répertoire pour l'empêcher d'être écrit :

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$

Si quelque chose dans l'homebrew ou la façon dont vous le configurez fait cela, la correction de shlock ne le coupera pas car vous échouerez alors lorsque d'autres opérations d'écriture seront inévitablement tentées dans le cache.

Si vous ajoutez cette ligne :

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

ici le résout, vous avez un problème de chflags et vous devriez probablement le résoudre d'une manière ou d'une autre. D'une manière ou d'une autre, bin/cache peut déjà exister au moment où vous exécutez flutter pour la première fois (peut-être commencez-vous avec une version binaire de flutter? Ceux-ci ont un cache prédéfini et ils passeront donc le mkdir correctement, mais vous ne pourrez pour écrire dans le cache).

[édité pour corriger les chflags]

@jcollins-g Ah, mon unix-fu n'est pas à la hauteur - je ne connaissais pas chflags , mais c'est logique. Je suppose que c'est académique à ce stade, mais je vais me renseigner. Merci!

J'ai ajouté la ligne comme suit :

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.

Et le test flutter --version échoue toujours avec l'erreur shlock .

J'ai raté quelque chose que vous avez dit plus tôt:

peut-être commencez-vous avec une version binaire de flutter ? Ceux-ci ont un cache prédéfini et ils passeront donc le mkdir correctement, mais vous ne pourrez pas écrire dans le cache

Je pense que j'utilise une version binaire de flutter. C'est le zip de https://flutter.io/setup-macos/#get -sdk.

Comme j'étais curieux, j'ai supprimé le dossier cache pour voir si le script flutter pouvait créer le dossier lui-même. Il n'a pas pu : mkdir: /usr/local/Cellar/flutter/0.3.1-beta/bin/cache: Operation not permitted et l'insertion d'un echo $(whoami) dans flutter montre que le script s'exécute en tant qu'utilisateur personnel (contrôle d'intégrité).

Je ne connais pas trop les autorisations Unix, mais il semble que j'aie besoin de sudo pour éditer tous les fichiers dans /usr/local/Cellar/flutter/ , et l'examen des autorisations montre que tous les fichiers sont dans le admin Groupe

$ 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

La copie du répertoire dans mon répertoire personnel lui attribue le groupe staff , puis l'exécution de ~/flutter/bin/flutter --version avec le répertoire cache supprimé démarre le téléchargement du langage Dart. Cependant, changer le groupe sur le dossier flutter Homebrew, /usr/local/Cellar/flutter/ , ne permet pas au baril de brassage de créer le dossier, et lorsque je crée le dossier moi-même, je me retrouve tout de suite au shlock: open(/usr/local/Cellar/flutter/0.3.1-beta/bin/cache/shlock9849): Operation not permitted erreur.

Merci pour la réponse détaillée @briankung. Je pourrais approfondir cela avec vous, mais il semble que le bogue fondamental soit que nous ne pouvons pas garantir l'écriture dans bin/cache sous l'installation de flutter par les utilisateurs réguliers et Flutter le suppose.

La plupart des packages Unix séparent les bits mis en cache qu'ils gèrent de l'installation binaire. La méthode d'empaquetage de Flutter est un peu peu orthodoxe dans la mesure où les bits mis en cache incluent la majeure partie de l'installation binaire. Homebrew, apt-get, pratiquement tous les gestionnaires de packages et systèmes d'exploitation auront une combinaison d'autorisations, chroot pendant la construction, chattr/chflags, etc. pour essayer d'empêcher que les packages installés ne soient modifiés par les utilisateurs réguliers.

Je pense que la bonne chose à faire ici pourrait être d'avoir un indicateur dans un fichier qui verrouille le cache de flutter en lecture seule, et de faire en sorte que les outils de mise à jour intégrés de flutter le respectent. De cette façon, nous pouvons faire la distinction entre l'erreur de configuration de l'utilisateur et l'utilisateur utilisant un package installé, et afficher les erreurs appropriées. Ou, plus simplement, nous pourrions simplement vérifier la capacité d'écriture du cache et l'ignorer si nous ne pouvons pas écrire dans le cache.

La suggestion originale de @xster pourrait suffire si le reste des outils le prend déjà en charge. ce qui semble être le cas.

J'ai creusé un peu plus. Il semble que nous n'ayons _principalement_ pas besoin d'écrire dans FLUTTER_ROOT et ses sous-répertoires.

Cependant, il existe des exceptions susceptibles de provoquer des plantages :

Le shlock que nous rencontrons ici en est définitivement un.
La mise à niveau du verrouillage dans le flottement en est une autre.
Le verrouillage des fichiers dorés en est un autre.

De plus, la préférence pour un cache pub racine flottant me semble suspecte - à moins que pub ne soit codé pour gérer ce cas, cela ne fonctionnera probablement pas non plus dans les cas où un développeur souhaite utiliser un package différent.

Étant donné que j'ai trouvé ces nombreux petits problèmes tout de suite, je pense que pour résoudre ce problème pour de bon, nous devons probablement ajouter des tests d'intégration en cours d'exécution à l'aide d'un FLUTTER_ROOT en lecture seule et rechercher tous les petits problèmes ponctuels comme celui-ci. Cela évitera également que cela ne se reproduise car il est très facile en tant que développeur Flutter d'introduire accidentellement quelque chose comme ça.

+1 sur les tests avec root en lecture seule

Des mises à jour à ce sujet ?

Ce n'est pas quelque chose que nous prévoyons de faire actuellement, mais si quelqu'un voulait travailler là-dessus, nous soutiendrons ce travail. Je suppose que cela impliquerait soit l'intégration avec nos scripts d'intégration continue pour publier sur homebrew d'une certaine manière, soit la création d'un script d'amorçage qui sait comment s'intégrer avec flutter, et le maintien de cela (et surtout, l'écriture de tests pour s'assurer que nous savons quand il pauses, afin que nous puissions le réparer). Si vous êtes intéressé à travailler sur ce sujet, n'hésitez pas à me contacter.

J'ai modifié ce bogue pour qu'il concerne spécifiquement l'homebrew, si vous êtes intéressé par la même chose pour apt-get, veuillez déposer un bogue séparé (bien que le commentaire ci-dessus s'applique également à cela).

J'ai fait un tap repo pour Mac OS : (https://github.com/eclewlow/homebrew-formulas)

Cependant, tout ce qu'il fait, c'est installer Flutter.
brew install eclewlow/formulas/flutter

Vous devez toujours télécharger vous-même les outils de développement IOS et Android.

Il n'a pas réussi le brew audit , donc je ne peux pas l'ajouter à l'homebrew.
Voici pourquoi:

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

Depuis la sortie de la version 1.0 de flutter, j'espère pouvoir voir la formule😄.

Depuis la sortie de la version 1.0 de flutter, j'espère pouvoir voir la formule😄.

l'attend avec impatience aussi.

@eclewlow s'il vous plaît mettre à jour vers 1.0

Désolé, je suis en croisière et l'Internet par satellite est horrible.

Je serai de retour le 10, et alors je pourrai le faire.

Si quelqu'un veut le faire lui-même, il peut simplement créer un référentiel.

J'ai modifié la formule pour qu'elle vérifie réellement Flutter à partir de git, plutôt que de télécharger le package précompilé.

Mais je n'ai pas compris comment obtenir la dernière balise de version à partir d'un référentiel.

Voici à quoi ressemblerait la formule :

classe Flutter < Formule
desc "Créez de belles applications natives en un temps record"
page d'accueil " https://flutter.io/ "
version "1.0.0"
URL " https://github.com/flutter/flutter.git "
sha256 "6e3ba2da94fb150d2cb8e0596eeb92c86e5e437e91a5f39f211bd4b21d0b24f8"

bouteille : inutile

def installer
système "git", "fetch", "--tags"
# vérifier la dernière balise, quelque chose comme ça ?
# git checkout $(git describe --abbrev=0 --tags)
# et utilisez à la place de cette ligne suivante :
système "git", "checkout", "tags/v1.0.0"
système "./bin/flutter"
allfiles = File.join(buildpath, " *", "{ ,.*}")
mv Dir.glob(tous les fichiers), 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")

finir

def post_install
rm Fichier.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"

finir

tester faire
système "faux"
finir
finir

Le 6 décembre 2018, à 11h39, Alberto Xamin [email protected] a écrit :

@eclewlow https://github.com/eclewlow s'il vous plaît mettre à jour vers 1.0

-
Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, consultez-le sur GitHub https://github.com/flutter/flutter/issues/14050#issuecomment-445002396 , ou coupez le fil https://github.com/notifications/unsubscribe-auth/AfVSYcUOrJtVDISTEwKF4pRcsO5PLvRhks5u2XM

J'ai hâte aussi

Étant donné que android-sdk est disponible en fût, j'ai pensé qu'il serait plus logique que flutter soit également disponible en fût. Alors je suis allé de l'avant et j'ai fait un robinet homebrew pour le fût de flutter . Vous pouvez le vérifier ici .

J'ai d'abord essayé de créer une formule simple et j'ai lamentablement échoué car je n'ai absolument aucune expérience dans le développement de formules homebrew.

Si vous le souhaitez, pouvez-vous préciser ce que vous aimeriez réellement qu'il fasse ?

Par exemple, que doit faire flutter channel beta après avoir exécuté brew install flutter ? Souhaitez-vous pouvoir soumettre des PR pour les modifications apportées au flutter à partir de votre installation flutter locale ? Souhaitez-vous que cela installe le SDK Android ou Xcode pour vous ? Voudriez-vous pouvoir faire flutter run dans les répertoires d'exemples ?

Je suis un gros utilisateur d'homebrew, mais je n'ai jamais écrit de plugin homebrew. Cela dit, voici l'avis d'un homme :

que doit faire flutter channel beta après avoir exécuté brew install flutter ?

Passez au canal bêta.

Souhaitez-vous pouvoir soumettre des PR pour les modifications apportées au flutter à partir de votre installation flutter locale ?

Non. Dans ce cas d'utilisation, Homebrew sert à utiliser des packages, pas nécessairement à modifier ces packages.

Souhaitez-vous que cela installe le SDK Android ou Xcode pour vous ?

Il devrait installer toutes les dépendances.

Souhaitez-vous pouvoir exécuter le flutter dans les répertoires d'exemples ?

Oui. Une fois que vous avez exécuté brew install flutter , flutter sera sur le chemin et vous pourrez l'utiliser comme si vous l'aviez installé de la même manière que celle décrite dans le didacticiel Flutter.

D'accord. J'ai mis à jour ma formule homebrew pour Flutter.

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

Il installe la version balisée la plus récente de Flutter dans le référentiel flutter (https://github.com/flutter/flutter) via Git.
(Actuellement v1.1.1, mais il détectera automatiquement la dernière sur l'installation)

Pour mettre à niveau, vous devrez probablement réinstaller Flutter via brew

brew uninstall flutter
brew install flutter

J'ai écrit un très petit tutoriel pour atteindre d'autres personnes.
https://medium.com/@sadmansamee/installing -flutter-via-homebrew-a5d7009c95ba?fbclid=IwAR0DJZOdi-av2X1ofmbc1MaO7SZ7c30bowlkPK9EjIztPCrOhTv2tGbdx7E

J'ai écrit ma formule homebrew pour Flutter.

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

Il installe la dernière version stable (v1.0.0) de Flutter dans le référentiel flutter (https://github.com/flutter/flutter) via Git.

brew install flutter
brew upgrade flutter

Juste un exemple simple, il y a beaucoup de lacunes, bienvenue pour me corriger.

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

Cela fonctionne bien, ne soyez pas confus comme moi pour le message avant l'installation ou la longue attente à l'installation, c'est normal et le message ne s'applique que si vous êtes en Chine ou si vous avez des problèmes pour exécuter flutter doctor après l'installation.
Merci :)

Relatif au #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 va avoir besoin d'un robinet, par exemple brew tap MiderWong/flutter . C'est ce que https://github.com/flutter/flutter/issues/14050#issuecomment -449447441 n'a pas dit, mais signifié. Suivez simplement https://github.com/miderwong/homebrew-flutter .

J'ai écrit ma formule homebrew pour Flutter.

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

Il installe la dernière version stable (v1.0.0) de Flutter dans le référentiel flutter (https://github.com/flutter/flutter) via Git.

brew install flutter
brew upgrade flutter

Juste un exemple simple, il y a beaucoup de lacunes, bienvenue pour me corriger.

Le script a été mis à jour. Veuillez mettre à jour le dépôt git avec la commande suivante :

brew untap MiderWong/flutter
brew tap MiderWong/flutter

Et suivez les instructions du fichier README :
Flutter-homebrew-README

@MiderWong
obtenir

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 Fabriqué un tonneau pour l'installation de flutter, qui peut être installé en exécutant

brew tap probablykasper/tap
brew cask install flutter
flutter upgrade

https://github.com/probablykasper/homebrew-tap/blob/master/Casks/flutter.rb
Il télécharge simplement le zip d'installation de macOS flutter et lie l'exécutable flutter . Ensuite, vous exécuteriez flutter doctor par la suite.

Ainsi, au lieu que je doive installer à partir du robinet personnalisé d'un utilisateur, que ce soit celui de @MiderWong ou celui de @eclewlow , puis de faire confiance et d'espérer que :

  1. Le robinet de cet utilisateur deviendra le "officiel" qui est bien pris en charge et mis à jour si nécessaire.
  2. Cet utilisateur ne va pas injecter de logiciel malveillant sur ma machine.

Ma suggestion est de faire la même chose que ce que Dart a fait où Dart a un robinet d'infusion nommé dart-lang/dart et est référencé dans les documents officiels de Dart.
Cela aligne Flutter avec Dart (étant donné qu'il s'agit effectivement de projets frères) et maintient les choses cohérentes et simples.
(Pensée de douche : étant donné que Flutter est un projet frère de Dart et que Flutter nécessite Dart, pourquoi ne pas simplement le regrouper comme une autre formule dans le robinet dart-lang ?)

Je suppose que mes questions sont, en tant que développeur non-brew et qui est nouveau dans cette discussion:

  1. Est-ce en cours ? et si oui quelle est la mise à jour ? Parce que c'est un problème ouvert depuis janvier 2018 ?
  2. Si cela n'a pas encore commencé, que devons-nous faire en tant que communauté pour le faire ?

@Harmelodic Préoccupations très justes. Ils pourraient au moins faire un fût de brassage officiel - le mien est littéralement de 10 lignes de code.

Il convient également de noter que sur les 6000+ problèmes ouverts, celui-ci est le quatrième sur la liste lors du tri par 👍 réactions. J'apprécie les efforts de la communauté, mais je préfère utiliser quelque chose qui est officiellement pris en charge dans la mesure du possible, et il semble que je ne suis pas le seul dans ce cas. Merci d'en faire une priorité

toute mise à jour?

Si quelqu'un est intéressé à en posséder, c'est quelque chose que nous serions heureux de vous aider à mettre en place dans l'infrastructure de construction de Flutter.

Si quelqu'un est intéressé à en posséder, c'est quelque chose que nous serions heureux de vous aider à mettre en place dans l'infrastructure de construction de Flutter.

Quelqu'un travaille là-dessus ?

J'ai écrit ma formule homebrew pour Flutter.

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

Il installe la dernière version stable (v1.0.0) de Flutter dans le référentiel flutter (https://github.com/flutter/flutter) via Git.

brew install flutter
brew upgrade flutter

Juste un exemple simple, il y a beaucoup de lacunes, bienvenue pour me corriger.

Cela fonctionne très bien.
Mais nous avons également besoin d'une branche MASTER (pas seulement dev/stable) pour pouvoir utiliser Flutter for Web !

Cela semble être une victoire facile pour le projet. S'il vous plaît, passez un peu de temps et expédiez ceci!

Cela signifierait un tas de changements dans la façon dont nous faisons notre outillage. Étant donné que dans un monde brassicole, Flutter ne contrôlerait pas la mise à jour automatique. Il devrait également connaître la mise en page de Brew, ou comment trouver un endroit accessible en écriture pour la mise en cache. Cela relèverait du point de vue de @zanderso et représenterait probablement un bon travail.

@eseidelGoogle Et disposiez d'un fût officiel ?

@probablykasper c'est la partie facile. :) La partie difficile est de s'assurer que l'outil futter sait comment se comporter correctement lorsqu'il est installé dans le cadre d'un emplacement/processus d'installation de fût normal, etc.

La partie difficile est de s'assurer que l'outil futter sait comment se comporter correctement lorsqu'il est installé dans le cadre d'un emplacement/processus d'installation de fût normal, etc.

C'est correct. Enseigner à l'outil flutter que quelque chose d'autre est responsable de l'installation, de la mise à jour et lui apprendre à comprendre un arrangement plus diversifié des autorisations des systèmes de fichiers est une assez bonne partie du travail.

De plus, ce n'est pas un bloqueur dur, mais cela est aussi quelque peu en conflit avec notre désir d'avoir un moyen à faible friction pour que les gens contribuent à Flutter, ce qui est plus délicat si les bits du repo Flutter ne sont pas gérés par git.

@probablykasper c'est la partie facile. :) La partie difficile est de s'assurer que l'outil futter sait comment se comporter correctement lorsqu'il est installé dans le cadre d'un emplacement/processus d'installation de fût normal, etc.

Je teste Flutter sur Homebrew Cask, cela semble bien fonctionner pour moi. Devriez-vous reconsidérer l'utilisation de Cask au lieu de Formula for Homebrew ?

socheatsok78/homebrew-flutter

Résultat du test

Le passage à un autre canal peut être effectué à l'aide flutter CLI
Et le répertoire d'installation est assez simple pour Cask puis en utilisant Formula.

@socheatsok78 va essayer. Merci

brew cask install socheatsok78/flutter/flutter

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

Mais, il semble qu'il y ait des problèmes sur Mac en raison de la nouvelle sécurité de 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" "$@"

Mais, il semble qu'il y ait des problèmes sur Mac en raison de la nouvelle sécurité de 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" "$@"

Je suis sur Catalina, je ne suis pas tout à fait sûr de ça. Le seul problème que j'avais était idevice_id qui peut être trouvé ici #42302

Mais, il semble qu'il y ait des problèmes sur Mac en raison de la nouvelle sécurité de 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" "$@"

Je suis sur Catalina, je ne suis pas tout à fait sûr de ça. Le seul problème que j'avais était idevice_id qui peut être trouvé ici #42302

allez dans les Préférences Système, ouvrez le menu de sécurité, sous la section générale, vous pouvez autoriser l'accès à Dart. Exécutez à nouveau flutter upgrade . Il peut échouer une deuxième fois, en disant que quelque chose du noyau échoue. répétez la même procédure et le tour est joué !

L'installation de Fluter dans /usr/local/Cellar/flutter et les binaires softlinking dans /usr/local/bin devraient faire l'affaire à mon humble avis. Je ne peux pas le vérifier actuellement car je n'ai pas encore osé passer à Catalina.

Des mises à jour sur ce problème?

J'espère toujours que nous aurons un robinet et un fût de bière canoniques. La configuration de Catalina PATH est tout simplement agaçante !

cela représente probablement deux heures de travail et permettra d'économiser des tonnes d'heures pour de nombreuses personnes, alors s'il vous plaît

Dans l'attente de cela.

Pouce en l'air, j'attends ça avec impatience !

Je

Bonjour à tous, un petit rappel sur nos politiques d'hygiène :

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

Cela dit, sachez que nous sommes conscients de ce problème.

@zanderso J'apprécie la modération, mais je pense qu'une certaine communication sur cette demande particulière est justifiée à ce stade. Il y a clairement un intérêt très important pour cela, et une volonté de soutien officiel plutôt que communautaire. Alors que plusieurs utilisateurs ont proposé des solutions, beaucoup plus d'utilisateurs ont exprimé le souhait d'un support officiel pour cela. Malheureusement, la réponse générale a été l'absence d'action.

Au nom de tout le monde sur ce fil, je demande à l'équipe de base de bien vouloir faire un plan pour résoudre ce problème et de communiquer ce plan à la base d'utilisateurs.

Bonjour à tous, un petit rappel sur nos politiques d'hygiène :

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

Cela dit, sachez que nous sommes conscients de ce problème.

C'est ridicule. Je viens de sortir de la page d'accueil de Flutter et j'étais prêt à essayer quand j'ai vu le processus archaïque d'installation. Je suis venu ici et j'ai vu ce problème ouvert pendant deux années entières sans mises à jour tangibles.

Eh bien, sur Kotlin alors.

Je suis venu ici parce que le site flutter.dev, comme de nombreux autres sites Google, regorge de choses filtrables et ne fonctionnent pas avec Adblocker. Je ne suis donc pas en mesure de télécharger Flutter SDK sans tout désactiver.
apt-get/brew serait beaucoup plus pratique.

Aussi, comme mentionné par @timmyjose

Bonjour à tous, un petit rappel sur nos politiques d'hygiène :
https://github.com/flutter/flutter/wiki/Issue-hygiene#do -not-add-me-too-or-same-comments-to-bugs
Cela dit, sachez que nous sommes conscients de ce problème.

C'est ridicule. Je viens de sortir de la page d'accueil de Flutter et j'étais prêt à essayer quand j'ai vu le processus archaïque d'installation. Je suis venu ici et j'ai vu ce problème ouvert pendant deux années entières sans mises à jour tangibles.

Eh bien, sur Kotlin alors.

Pourquoi n'est-ce pas abordé...

Le site de @CAoTx Flutter ne contient aucune publicité et je n'ai aucun problème à télécharger avec les bloqueurs de publicité installés. Peut-être que vos filtres adblock personnalisés sont trop restrictifs ? Le site lui-même est open source , si vous voulez voir comment ajuster vos filtres.

Une autre alternative consiste à utiliser git clone comme décrit au bas de la page de téléchargement pour obtenir le canal principal. Vous pouvez l'utiliser, puis utiliser flutter channel pour passer à un autre canal si vous ne voulez pas utiliser le master.

L'intégration d'un nouvel utilisateur macOS au développement et au processus d'installation est au mieux archaïque et déroutant. brew install flutter devrait être faisable et pris en charge par l'équipe principale en tant que méthode d'installation officielle de flutter.

Étant donné que ce problème a été étiqueté avec P6 , qui est la priorité la plus basse possible, je suppose qu'il ne sera pas résolu de sitôt? C'est assez drôle, car c'est l'un des problèmes les plus commentés et les plus actifs du référentiel.

@timsneath existe-t-il un moyen d'obtenir plus de transparence sur la priorisation de ces demandes de la communauté ?

https://github.com/flutter/flutter/wiki/Triage
https://github.com/flutter/flutter/wiki/Issue-hygiene
parler des processus.

Bien que nos équipes ne disposent pas actuellement de bande passante pour résoudre ce problème, cela ne veut pas dire que quelqu'un d'autre ne le peut pas. Ce serait une entreprise moyenne/grande, mais devrait être faisable par un contributeur motivé.

Il y a un tas de questions que je pourrais imaginer auxquelles il faut répondre ici:

  • Apprendre à flutter_tools (et à d'autres scripts) à ne pas écrire dans le répertoire d'installation du sdk mais plutôt à utiliser d'autres répertoires de cache (cela peut être utile pour l'hygiène du code malgré tout).
  • Enseigner à fluttter_tools qu'il est acceptable d'avoir une installation non évolutive (non accessible en écriture) et d'orienter les utilisateurs vers différentes méthodes de mise à niveau.
  • La méthode d'installation basée sur git de Flutter est-elle compatible avec ces outils ? Nous proposons déjà des tarballs/zips pour le téléchargement initial, mais actuellement, nous supposons que les utilisateurs installent flutter/flutter en tant que repo git. Si ce n'est pas compatible, il peut y avoir un travail de processus non trivial du côté de l'infrastructure pour prendre en charge la production/distribution/test des distributions non-git de flutter.

Heureux de discuter des priorités (peut-être dans un autre forum), mais je vous encourage à rechercher quels autres bogues sont étiquetés comme étant plus prioritaires que celui-ci. Flutter a beaucoup d'utilisateurs et de ces beaucoup de demandes (parfois urgentes). Nous essayons de les traiter dans l'ordre d'avoir le plus d'impact sur nos/objectifs d'utilisateurs.

@eseidelGoogle Merci pour la clarification et l'esquisse de stratégie, c'est très apprécié et super stimulant !

Pour répondre à la question sur la mise à jour, je pense que si la commande régulière flutter update ne peut tout simplement pas être disponible pour les installations non git, cela devrait suffire. Y-a-t-il un moyen de faire ça? Idéalement, ce ne serait pas une autre distribution, juste une vérification if dans le code pour voir si l'emplacement du binaire flutter a un dossier .git . Est-ce possible?

La formule pourrait également simplement télécharger le référentiel git et exécuter les commandes pour un utilisateur. Les formules ne doivent pas simplement installer des binaires.

À titre de référence, voici comment rustup fait :

rustup , le gestionnaire de la chaîne d'outils du langage de programmation Rust, il peut être installé en exécutant un script d'installation (installation autonome) ou installé à partir d'un gestionnaire de packages OS. Lorsque vous souhaitez mettre à niveau Rustup, vous pouvez exécuter rustup self update pour une installation autonome, ou mettre à niveau via votre gestionnaire de packages OS si vous avez installé Rustup via le gestionnaire de packages OS. Si vous essayez d'exécuter rustup self update lorsque rustup est installé via le gestionnaire de packages du système d'exploitation, une erreur s'affichera. Veuillez le mettre à niveau à partir de votre gestionnaire de packages du système d'exploitation. J'aime beaucoup cette implémentation, car lorsque vous installez pour la première fois quelque chose via votre gestionnaire de packages OS et que vous le mettez à niveau à l'aide de ses fonctionnalités intégrées, il peut devenir incontrôlable par le gestionnaire de packages OS et provoquer des erreurs inconnues à l'avenir.

Je pense que le meilleur moyen pour flutter est d'adopter une implémentation similaire à celle de rustup, mais c'est un travail énorme (il faut refactoriser beaucoup de choses pour laisser flutter être géré par un gestionnaire de packages système) et peut nécessiter l'aide des membres de l'équipe principale de flutter , donc je donne juste mes suggestions ici et je ne m'attends pas à ce que cela puisse être fait bientôt.

Oui, cela semble waaaaay plus compliqué que le prétendu liner 10 qui a été référencé plus tôt dans ce fil.

Jusqu'à ce qu'il y ait plus de discussions à ce sujet : http://flutter.dev/go/sdk-per-platform-installers

Cette page vous a été utile?
0 / 5 - 0 notes