Flutter: Lassen Sie Flattern über Homebrew installierbar sein

Erstellt am 11. Jan. 2018  ·  77Kommentare  ·  Quelle: flutter/flutter

Habe diesbezüglich keine bestehenden Probleme gefunden. Öffnung für die Verfolgung.

Lassen Sie flattern brew install flutter Lage sein.

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

Hilfreichster Kommentar

Anstatt also von einem benutzerdefinierten Tap eines Benutzers installieren zu müssen, sei es @SpectralKH oder @MiderWong oder @eclewlow , und dann muss ich darauf vertrauen und hoffen, dass:

  1. Der Tap dieses Benutzers wird zum "offiziellen", der gut unterstützt und bei Bedarf aktualisiert wird.
  2. Dieser Benutzer wird keine bösartige Software auf meinen Computer injizieren.

Mein Vorschlag ist, dasselbe zu tun wie Dart, wo Dart einen Brühhahn namens dart-lang/dart und auf den in den offiziellen Dart-Dokumenten verwiesen wird.
Dadurch wird Flutter mit Dart in Einklang gebracht (wenn man bedenkt, dass sie praktisch Schwesterprojekte sind) und die Dinge konsistent und einfach bleiben.
(Dusche-Gedanke: Wenn man bedenkt, dass Flutter ein Schwesterprojekt von Dart ist und Flutter Dart erfordert, warum nicht einfach als weitere Formeln im dart-lang Tap bündeln?)

Ich denke, meine Fragen sind, als Nicht-Brau-Entwickler und Neuling in dieser Diskussion:

  1. Ist das im Gange? und wenn ja, was ist das Update? Weil dies seit Januar 2018 ein offenes Thema ist?
  2. Wenn es noch nicht begonnen hat, was müssen wir als Gemeinschaft tun, um es zu schaffen?

Alle 77 Kommentare

@gspencergoog das könnte dich interessieren

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

Der Prozess ist ziemlich einfach. Allerdings müssten wir sicherstellen, dass es in unseren https://github.com/flutter/flutter/wiki/Release-Prozess integriert wird , idealerweise auf automatisierte Weise.

Hallo Flutter-Team! Ich habe angefangen, Homebrew unter https://github.com/Homebrew/homebrew-core/pull/27395 eine flutter -Formel hinzuzufügen, aber ich könnte definitiv mehr Anleitungen gebrauchen, um der Anleitung in diesem Kommentar zu folgen:

Allerdings müssten wir sicherstellen, dass es in unseren https://github.com/flutter/flutter/wiki/Release-Prozess integriert wird , idealerweise auf automatisierte Weise.

Im Moment lädt die Homebrew-Formel einfach die aktuelle Beta-Version herunter, entpackt sie und kopiert sie in Flutter's Keg (zB /usr/local/Cellar/flutter/0.3.1/ ).

Jedes Feedback wäre willkommen!

@jcollins-g wrt auf den Shlock von https://github.com/Homebrew/homebrew-core/pull/27395 , vielleicht können wir überprüfen, ob Shlock nicht erlaubt / 1 zurückgibt und die übergeordnete Prozess-ID brew ist, nicht shlock. Außerdem können wir das Schreiben auf Teile des Caches sperren, um eine Selbstaktualisierung bei der Installation von Brew zu verhindern.

Für den Kontext in dieser Homebrew-PR habe ich in den Kommentaren ab hier über das Problem shlock : https://github.com/Homebrew/homebrew-core/pull/27395/files#diff -b438c13e924f5f36b1ce4398a89436d2R36

Eigentlich sind wir diese Idee noch ein bisschen durchgegangen und ich denke, letztendlich möchten wir, dass die offizielle Formel in einem Homebrew-Tap (Nicht-Kern-Repository) enthalten ist. Auf diese Weise können wir die Ziele des Flatter-Upgrades und des Brau-Upgrades hermetisch synchronisieren.

Hoffentlich können wir in naher Zukunft eine Version Ihrer Formel in den Wasserhahn bringen und den offiziellen Installationsprozess vereinfachen.

Sicher! In diesem Fall würde ich die PR gerne auf homebrew-core wenn das Sinn macht?

Jawohl. Danke für den Beitrag!

@xster fwiw das ist nicht notwendig. Formeln in Homebrew/homebew-core werden innerhalb von Stunden nach Upstream-Releases aktualisiert, da wir brew livecheck mehrmals täglich ausführen.

Das Verhalten von @xster / @briankung Shlock beim Brauen überrascht mich ein wenig. Es ist nicht so, als ob hier viel Besonderes vor sich geht:

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

Das sollte auf einem POSIX-Dateisystem immer gültig sein -- nun, es sei denn, Sie haben chflags für das Verzeichnis gesetzt, um zu verhindern, dass es geschrieben wird:

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$

Wenn etwas in Homebrew oder die Art und Weise, wie Sie es einrichten, dies tut, wird das Beheben von Shlock nicht helfen, da Sie dann fehlschlagen, wenn unweigerlich andere Schreibvorgänge im Cache versucht werden.

Wenn Sie diese Zeile hinzufügen:

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

Hier ist das Problem behoben, Sie haben ein Problem mit chflags und sollten wahrscheinlich irgendwie damit umgehen. Irgendwie ist bin/cache möglicherweise bereits an dem Punkt vorhanden, an dem Sie flattern zum ersten Mal ausführen (vielleicht beginnen Sie mit einem binären Build von flatter? Diese haben Cache vorgefertigt und werden daher die mkdir-Strafe bestehen, aber Sie werden nicht in der Lage sein in den Cache schreiben).

[bearbeitet, um chflags zu beheben]

@jcollins-g Ah, mein Unix-Fu ist nicht auf der Höhe - ich wusste nichts von chflags , aber es macht Sinn. Ich nehme an, es ist an dieser Stelle akademisch, aber ich werde es mir ansehen. Vielen Dank!

Ich habe die Zeile wie folgt hinzugefügt:

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.

Und der Test flutter --version schlägt immer noch mit dem Fehler shlock fehl.

Ich habe etwas übersehen, was du vorhin gesagt hast:

Vielleicht beginnen Sie mit einem binären Build von Flattern? Diese haben einen vorgefertigten Cache und so bestehen sie das mkdir in Ordnung, aber Sie können nicht in den Cache schreiben

Ich denke, ich verwende einen binären Build von Flattern. Es ist die Zip von https://flutter.io/setup-macos/#get -sdk.

Da ich neugierig war, habe ich den Ordner cache gelöscht, um zu sehen, ob das Skript flutter den Ordner selbst erstellen könnte. Es konnte nicht: mkdir: /usr/local/Cellar/flutter/0.3.1-beta/bin/cache: Operation not permitted und das Einfügen von echo $(whoami) in flutter zeigt, dass das Skript als mein persönlicher Benutzer ausgeführt wird (Sicherheitsprüfung).

Ich bin mit Unix-Berechtigungen nicht allzu vertraut, aber anscheinend brauche ich sudo , um Dateien in /usr/local/Cellar/flutter/ zu bearbeiten, und die Überprüfung der Berechtigungen zeigt, dass sich alle Dateien in admin Gruppe:

$ 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

Das Kopieren des Verzeichnisses in mein Home-Verzeichnis weist ihm die staff Gruppe zu, und das Ausführen von ~/flutter/bin/flutter --version mit gelöschtem cache Verzeichnis beginnt mit dem Herunterladen der Dart-Sprache. Wenn Sie jedoch die Gruppe im Ordner flutter von Homebrew, /usr/local/Cellar/flutter/ , ändern, kann das Brühfass den Ordner nicht erstellen, und wenn ich den Ordner selbst erstelle, lande ich direkt wieder bei shlock: open(/usr/local/Cellar/flutter/0.3.1-beta/bin/cache/shlock9849): Operation not permitted Fehler.

Danke für die ausführliche Antwort @briankung. Ich könnte mit Ihnen weiter darauf eingehen, aber es klingt so, als ob der grundlegende Fehler darin besteht, dass wir die Schreibbarkeit in bin/cache unter der flatter-Installation durch normale Benutzer nicht garantieren können und Flutter geht davon aus.

Die meisten Unix-Pakete trennen die zwischengespeicherten Bits, die sie verwalten, von der Binärinstallation. Die Paketierungsmethode von Flutter ist insofern etwas unorthodox, als die zwischengespeicherten Bits den größten Teil der Binärinstallation enthalten. Homebrew, apt-get, praktisch alle Paketmanager und Betriebssysteme haben eine Kombination von Berechtigungen, Chroot während des Builds, chattr/chflags usw., um zu verhindern, dass installierte Pakete von normalen Benutzern geändert werden.

Ich denke, das Richtige hier könnte darin bestehen, ein Flag in einer Datei zu setzen, das den Flutter-Cache als schreibgeschützt sperrt, und die integrierten Update-Tools von Flutter dazu zu bringen, dies zu respektieren. Auf diese Weise können wir zwischen Benutzerkonfigurationsfehlern und Benutzern, die ein installiertes Paket verwenden, unterscheiden und entsprechende Fehler anzeigen. Oder einfacher gesagt, wir könnten einfach die Schreibfähigkeit des Cache prüfen und ihn überspringen, wenn wir nicht in den Cache schreiben können.

Der ursprüngliche Vorschlag von

Ich habe noch ein bisschen gegraben. Es sieht so aus, als ob wir _meistens_ nicht in FLUTTER_ROOT und seine Unterverzeichnisse schreiben müssen.

Es gibt jedoch Ausnahmen, die wahrscheinlich zu Abstürzen führen:

Der Shlock, auf den wir hier stoßen, ist definitiv einer.
Das Locking-In-Flatter-Upgrade ist ein anderes.
Die Sperrung für goldene Dateien ist eine andere.

Außerdem erscheint mir die Bevorzugung eines Flatter-Root-Pub-Cache verdächtig – es sei denn, pub ist für diesen Fall codiert, wird dies wahrscheinlich auch nicht für Fälle funktionieren, in denen ein Entwickler ein anderes Paket verwenden möchte.

Da ich so viele kleine Probleme sofort gefunden habe, denke ich, dass wir, um dies endgültig zu beheben, wahrscheinlich laufende Integrationstests mit einem schreibgeschützten FLUTTER_ROOT hinzufügen und kleine Einzelfälle wie diese aufspüren müssen. Das wird auch verhindern, dass dies wieder auftaucht, da es als Flutter-Entwickler sehr einfach ist, so etwas versehentlich einzuführen.

+1 beim Testen mit schreibgeschütztem Root

Irgendwelche Updates dazu?

Dies ist derzeit nicht geplant, aber wenn jemand daran arbeiten möchte, würden wir diese Arbeit unterstützen. Ich gehe davon aus, dass es entweder die Integration mit unseren Continuous Integration-Skripten erfordert, um sie auf irgendeine Weise in Homebrew zu veröffentlichen, oder ein Bootstrap-Skript zu erstellen, das weiß, wie man sich mit Flattern integriert, und dies beibehält (und insbesondere Tests zu schreiben, um sicherzustellen, dass wir wissen, wann es ist.) bricht, damit wir es reparieren können). Wenn Sie daran interessiert sind, daran mitzuarbeiten, zögern Sie bitte nicht, mich zu kontaktieren.

Ich habe diesen Fehler so geändert, dass er sich speziell auf Homebrew bezieht. Wenn Sie an der gleichen Sache für apt-get interessiert sind, melden Sie bitte einen separaten Fehler (obwohl der obige Kommentar gleichermaßen darauf zutrifft).

Ich habe ein Tap-Repo für Mac OS erstellt: (https://github.com/eclewlow/homebrew-formulas)

Alles, was es tut, ist jedoch Flattern zu installieren.
brew install eclewlow/formulas/flutter

Sie müssen die IOS- und Android-Entwicklungstools weiterhin selbst herunterladen.

Es hat jedoch die brew audit nicht bestanden, daher kann ich es nicht zu Homebrew hinzufügen.
Hier ist der Grund:

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

Da die Version 1.0 von flatter veröffentlicht wurde, hoffe ich, dass ich die Formel sehen kann😄.

Da die Version 1.0 von flatter veröffentlicht wurde, hoffe ich, dass ich die Formel sehen kann😄.

freue mich auch darauf.

@eclewlow bitte auf 1.0 aktualisieren

Tut mir leid, ich bin auf einer Kreuzfahrt und das Satelliteninternet ist schrecklich.

Ich bin am 10. wieder da, und dann kann ich es tun.

Wenn jemand dies selbst tun möchte, kann er einfach ein Repository erstellen.

Ich habe die Formel so geändert, dass sie Flutter tatsächlich von git auscheckt, anstatt das vorkompilierte Paket herunterzuladen.

Aber ich habe nicht herausgefunden, wie man das neueste Versions-Tag aus einem Repository bekommt.

So würde die Formel aussehen:

Klasse Flattern < Formel
desc "Erstellen Sie schöne native Apps in Rekordzeit"
Startseite " https://flutter.io/ "
Version „1.0.0“
URL " https://github.com/flutter/flutter.git "
sha256 "6e3ba2da94fb150d2cb8e0596eeb92c86e5e437e91a5f39f211bd4b21d0b24f8"

Flasche: unnötig

def installieren
system "git", "fetch", "--tags"
# Letztes Tag zur Kasse gehen, etwa so?
# git checkout $(git describe --abbrev=0 --tags)
# und verwenden Sie anstelle dieser nächsten Zeile:
system "git", "checkout", "tags/v1.0.0"
System "./bin/flattern"
allfiles = File.join(buildpath, " *", "{ ,.*}")
mv Dir.glob(allfiles), Dir.glob(Präfix), :force => true

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

Ende

def post_install
rm File.join(HOMEBREW_PREFIX, "bin", "flatter.bat")
chmod_R "+rwx", File.join(Präfix, "bin"), :verbose => true

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

Ende

testen
System "falsch"
Ende
Ende

Am 6. Dezember 2018 um 11:39 Uhr schrieb Alberto Xamin [email protected] :

@eclewlow https://github.com/eclewlow Bitte aktualisieren Sie auf 1.0


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub https://github.com/flutter/flutter/issues/14050#issuecomment-445002396 an oder schalten Sie den Thread stumm https://github.com/notifications/unsubscribe-auth/AfVSYcUOrJtVDISTEwKF4pRcsO5PLvRhks5Z2XRKMbsO5PLvRhkspu2X .

Freue mich auch

Da android-sdk als Fass erhältlich ist, hielt ich es für sinnvoller, dass flutter auch als Fass erhältlich ist. Also machte ich weiter und machte einen Homebrew-Tap für das flutter Fass. Sie können es hier überprüfen.

Ich habe zuerst versucht, eine einfache Formel zu erstellen und bin kläglich gescheitert, da ich absolut keine Erfahrung mit der Entwicklung von Homebrew-Formeln habe.

Wenn Sie dies möchten, können Sie dann klarstellen, was Sie eigentlich möchten?

zB was sollte flutter channel beta tun, nachdem Sie brew install flutter ? Möchten Sie PRs für Änderungen an Flatter von Ihrer lokalen Flatter-Installation einreichen? Möchten Sie, dass dies das Android SDK oder Xcode für Sie installiert? Möchten Sie flutter run in den Beispielverzeichnissen ausführen können?

Ich bin ein starker Homebrew-Benutzer, habe aber noch nie ein Homebrew-Plugin geschrieben. Das heißt, hier ist die Meinung eines Mannes:

Was sollte flutter channel beta tun, nachdem Sie brew install flutter ?

Wechseln Sie zum Beta-Kanal.

Möchten Sie PRs für Änderungen an Flatter von Ihrer lokalen Flatter-Installation einreichen?

Nein. Homebrew dient in diesem Anwendungsfall zum Verwenden von Paketen, nicht unbedingt zum Ändern dieser Pakete.

Möchten Sie, dass dies das Android SDK oder Xcode für Sie installiert?

Es sollte alle Abhängigkeiten installieren.

Möchten Sie Flatterlauf in den Beispielverzeichnissen durchführen können?

Jawohl. Sobald Sie brew install flutter , befindet sich flutter im Pfad und Sie können es verwenden, als ob Sie es auf die gleiche Weise installiert hätten, wie im Flutter-Tutorial beschrieben.

Okay. Ich habe meine Homebrew-Formel für Flutter aktualisiert.

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

Es installiert die neueste getaggte Version von Flutter im Flutter-Repository (https://github.com/flutter/flutter) über Git.
(Derzeit v1.1.1, aber es erkennt automatisch das Neueste bei der Installation)

Um ein Upgrade durchzuführen, müsstest du wahrscheinlich flatter per brew neu installieren

brew uninstall flutter
brew install flutter

Ich habe ein sehr kleines Tutorial geschrieben, um andere Leute zu erreichen.
https://medium.com/@sadmansamee/installing -flatter-via-homebrew-a5d7009c95ba?fbclid=IwAR0DJZOdi-av2X1ofmbc1MaO7SZ7c30bowlkPK9EjIztPCrOhTv2tGbdx7E

Ich habe meine Homebrew-Formel für Flutter geschrieben.

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

Es installiert die neueste stabile Version (v1.0.0) von Flutter im Flutter-Repository (https://github.com/flutter/flutter) über Git.

brew install flutter
brew upgrade flutter

Nur ein einfaches Beispiel, es gibt viele Mängel, bitte korrigieren Sie mich.

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

Das funktioniert einwandfrei, bitte lassen Sie sich nicht wie ich von der Meldung vor der Installation oder dem langen Warten auf die Installation verwirren. Das ist normal und die Meldung gilt nur, wenn Sie in China sind oder Probleme beim Ausführen von flutter doctor nach der Installation.
Vielen Dank :)

Im Zusammenhang mit #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 wird einen Tipp brauchen, zum Beispiel brew tap MiderWong/flutter . Das hat https://github.com/flutter/flutter/issues/14050#issuecomment -449447441 nicht gesagt, sondern gemeint. Folgen Sie einfach

Ich habe meine Homebrew-Formel für Flutter geschrieben.

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

Es installiert die neueste stabile Version (v1.0.0) von Flutter im Flutter-Repository (https://github.com/flutter/flutter) über Git.

brew install flutter
brew upgrade flutter

Nur ein einfaches Beispiel, es gibt viele Mängel, bitte korrigieren Sie mich.

Das Skript wurde aktualisiert. Bitte aktualisieren Sie das Git-Repository mit dem folgenden Befehl:

brew untap MiderWong/flutter
brew tap MiderWong/flutter

Und folgen Sie den Anweisungen in der README:
Flutter-Homebrew-README

@MiderWong
bekommen

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 Habe ein Fass für die Installation von Flatter gemacht, das durch Ausführen installiert werden kann

brew tap probablykasper/tap
brew cask install flutter
flutter upgrade

https://github.com/probablykasper/homebrew-tap/blob/master/Casks/flutter.rb
Es lädt einfach die macOS Flatter-Installations-Zip herunter und verlinkt die ausführbare flutter Datei. Dann würden Sie danach flutter doctor ausführen.

Anstatt also von einem benutzerdefinierten Tap eines Benutzers installieren zu müssen, sei es @SpectralKH oder @MiderWong oder @eclewlow , und dann muss ich darauf vertrauen und hoffen, dass:

  1. Der Tap dieses Benutzers wird zum "offiziellen", der gut unterstützt und bei Bedarf aktualisiert wird.
  2. Dieser Benutzer wird keine bösartige Software auf meinen Computer injizieren.

Mein Vorschlag ist, dasselbe zu tun wie Dart, wo Dart einen Brühhahn namens dart-lang/dart und auf den in den offiziellen Dart-Dokumenten verwiesen wird.
Dadurch wird Flutter mit Dart in Einklang gebracht (wenn man bedenkt, dass sie praktisch Schwesterprojekte sind) und die Dinge konsistent und einfach bleiben.
(Dusche-Gedanke: Wenn man bedenkt, dass Flutter ein Schwesterprojekt von Dart ist und Flutter Dart erfordert, warum nicht einfach als weitere Formeln im dart-lang Tap bündeln?)

Ich denke, meine Fragen sind, als Nicht-Brau-Entwickler und Neuling in dieser Diskussion:

  1. Ist das im Gange? und wenn ja, was ist das Update? Weil dies seit Januar 2018 ein offenes Thema ist?
  2. Wenn es noch nicht begonnen hat, was müssen wir als Gemeinschaft tun, um es zu schaffen?

@Harmelodic Sehr faire Bedenken. Sie könnten zumindest ein offizielles Braufass herstellen - meins besteht buchstäblich aus 10 Zeilen Code.

Es ist auch erwähnenswert, dass dies bei der Sortierung nach 👍 Reaktionen der über 6000 offenen Fragen an vierter Stelle steht. Ich schätze die Bemühungen der Community, aber ich bevorzuge es, wenn möglich, etwas zu verwenden, das offiziell unterstützt wird, und es scheint, dass ich damit nicht allein bin. Bitte machen Sie dies zu einer Priorität 🙏

irgendein Update?

Wenn jemand daran interessiert ist, dies zu besitzen, helfen wir Ihnen gerne bei der Einrichtung in der Flutter-Build-Infrastruktur.

Wenn jemand daran interessiert ist, dies zu besitzen, helfen wir Ihnen gerne bei der Einrichtung in der Flutter-Build-Infrastruktur.

Arbeitet jemand daran?

Ich habe meine Homebrew-Formel für Flutter geschrieben.

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

Es installiert die neueste stabile Version (v1.0.0) von Flutter im Flutter-Repository (https://github.com/flutter/flutter) über Git.

brew install flutter
brew upgrade flutter

Nur ein einfaches Beispiel, es gibt viele Mängel, bitte korrigieren Sie mich.

Es funktioniert super.
Aber wir brauchen auch einen MASTER-Zweig (nicht nur dev/stable), um Flutter für das Web nutzen zu können!

Dies scheint ein so einfacher Gewinn für das Projekt zu sein. Bitte nehmen Sie sich ein wenig Zeit und versenden Sie dies!

Dies würde eine Reihe von Änderungen in der Art und Weise bedeuten, wie wir unsere Werkzeuge erstellen. Denn in einer Brauwelt hätte Flutter keine Kontrolle über die Selbstaktualisierung. Es müsste auch das Layout von Brew kennen oder einen beschreibbaren Platz für das Caching finden. Dies würde in die Perspektive von @zanderso fallen und wahrscheinlich ein gutes Stück Arbeit sein.

@eseidelGoogle Wie wäre es mit einem offiziellen Fass?

@probablykasper das ist der einfache Teil. :) Der schwierige Teil besteht darin sicherzustellen, dass das futter Tool weiß, wie es sich richtig verhält, wenn es als Teil eines normalen Cask-Installationspfads/-prozesses usw. installiert wird.

Der schwierige Teil besteht darin sicherzustellen, dass das futter Tool weiß, wie es sich richtig verhält, wenn es als Teil eines normalen Cask-Installationspfads/-prozesses usw. installiert wird.

Das ist richtig. Dem flutter Tool beizubringen, dass etwas anderes für die Installation und Aktualisierung zuständig ist, und ihm beizubringen, eine vielfältigere Anordnung von Dateisystem-Berechtigungen zu verstehen, ist ziemlich viel Arbeit.

Es ist auch kein harter Blocker, aber dies steht auch etwas im Widerspruch zu unserem Wunsch, einen reibungsarmen Weg für die Leute zu haben, zu Flutter beizutragen, was schwieriger ist, wenn die Flutter-Repo-Bits nicht von git verwaltet werden.

@probablykasper das ist der einfache Teil. :) Der schwierige Teil besteht darin sicherzustellen, dass das futter Tool weiß, wie es sich richtig verhält, wenn es als Teil eines normalen Cask-Installationspfads/-prozesses usw. installiert wird.

Ich teste Flutter auf Homebrew Cask, es scheint für mich gut zu funktionieren. Sollten Sie die Verwendung von Cask anstelle von Formula for Homebrew überdenken?

socheatsok78/homebrew-flattern

Testergebnis

Das Umschalten auf einen anderen Kanal kann mit der flutter CLI durchgeführt werden.
Und das Installationsverzeichnis ist für Cask ziemlich einfach, wenn Sie Formula verwenden.

@socheatsok78 wird es versuchen. Danke

brew cask install socheatsok78/flutter/flutter

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

Es sieht jedoch so aus, als ob es aufgrund der neuen Sicherheit in Catolina Probleme auf dem Mac gibt.

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

Es sieht jedoch so aus, als ob es aufgrund der neuen Sicherheit in Catolina Probleme auf dem Mac gibt.

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

Ich bin auf Catalina, da bin ich mir nicht ganz sicher. Das einzige Problem, das ich hatte, war idevice_id das hier zu finden ist #42302

Es sieht jedoch so aus, als ob es aufgrund der neuen Sicherheit in Catolina Probleme auf dem Mac gibt.

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

Ich bin auf Catalina, da bin ich mir nicht ganz sicher. Das einzige Problem, das ich hatte, war idevice_id das hier zu finden ist #42302

Gehen Sie zu den Systemeinstellungen, öffnen Sie das Sicherheitsmenü, im allgemeinen Abschnitt können Sie den Zugriff auf Dart zulassen. Führen Sie flutter upgrade erneut aus. Es könnte ein zweites Mal fehlschlagen und sagen, dass etwas im Kernel fehlschlägt. Wiederholen Sie den gleichen Vorgang noch einmal und voila!

Fluter in /usr/local/Cellar/flatter zu installieren und Softlinking-Binärdateien in /usr/local/bin zu installieren, sollte IMHO den Zweck erfüllen. Ich kann es derzeit nicht überprüfen, da ich mich noch nicht getraut habe, auf Catalina zu aktualisieren.

Irgendwelche Updates zu diesem Thema?

Ich hoffe immer noch, dass wir einen kanonischen Brauhahn und ein Fass haben werden. Die Catalina PATH-Konfiguration ist einfach nervig!

das sind wahrscheinlich zwei stunden arbeit und spart vielen vielen menschen viele stunden, also bitte

Freue mich darauf.

Daumen hoch, freue mich darauf!

Mir

Hallo Leute, eine kurze Erinnerung zu unseren Hygienerichtlinien:

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

Bitte beachten Sie jedoch, dass wir uns dieses Problems bewusst sind.

@zanderso Ich schätze die Moderation, aber ich denke, dass eine Kommunikation zu dieser speziellen Anfrage an dieser Stelle gerechtfertigt ist. Es besteht eindeutig ein sehr großes Interesse daran und der Wunsch nach offizieller Unterstützung statt nach Community-Unterstützung. Während mehrere Benutzer Lösungen vorgeschlagen haben, haben viele weitere Benutzer den Wunsch nach offizieller Unterstützung dafür geäußert. Leider war die allgemeine Reaktion keine.

Im Namen aller in diesem Thread bitte ich das Kernteam, einen Plan zu erstellen, um dieses Problem anzugehen und diesen Plan der Benutzerbasis mitzuteilen.

Hallo Leute, eine kurze Erinnerung zu unseren Hygienerichtlinien:

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

Bitte beachten Sie jedoch, dass wir uns dieses Problems bewusst sind.

Das ist lächerlich. Ich kam gerade von der Flutter-Homepage und war gerade dabei, es auszuprobieren, als ich den archaischen Installationsprozess sah. Kam hierher und sah dieses Problem zwei ganze Jahre lang ohne greifbare Updates.

Naja, dann auf Kotlin.

Kam hierher, weil die flutter.dev-Site, wie viele andere Google-Sites, voller Dinge ist, die filterbar sind und nicht mit Adblocker funktionieren. Ich bin also nicht in der Lage, Flutter SDK herunterzuladen, ohne alles zu deaktivieren.
apt-get / brew wäre viel bequemer.

Auch wie von @timmyjose erwähnt

Hallo Leute, eine kurze Erinnerung zu unseren Hygienerichtlinien:
https://github.com/flutter/flutter/wiki/Issue-hygiene#do-not-add-me-too-or-same-comments-to-bugs
Bitte beachten Sie jedoch, dass wir uns dieses Problems bewusst sind.

Das ist lächerlich. Ich kam gerade von der Flutter-Homepage und war gerade dabei, es auszuprobieren, als ich den archaischen Installationsprozess sah. Kam hierher und sah dieses Problem zwei ganze Jahre lang ohne greifbare Updates.

Naja, dann auf Kotlin.

Warum wird das nicht angesprochen...

Die Website von @CAoTx Flutter enthält keine Werbung und ich habe keine Probleme beim Herunterladen mit installierten Werbeblockern. Vielleicht sind Ihre benutzerdefinierten Adblock-Filter zu restriktiv? Die Site selbst ist Open Source , wenn Sie sehen möchten, wie Sie Ihre Filter anpassen können.

Eine andere Alternative besteht darin, git clone wie unten auf der Download-Seite beschrieben , um den Master-Kanal zu erhalten. Sie können das verwenden und dann flutter channel , um zu einem anderen Kanal zu wechseln, wenn Sie nicht den Master verwenden möchten.

Das Onboarding neuer macOS-Benutzer, um die Entwicklung und den Installationsprozess zu beschleunigen, ist bestenfalls archaisch und verwirrend. brew install flutter sollte machbar sein und vom Kernteam als offizielle Installationsmethode für Flattern unterstützt werden.

Da dieses Problem mit P6 gekennzeichnet wurde , was die niedrigste mögliche Priorität ist, wird es wohl nicht so schnell gelöst? Es ist ziemlich lustig, da dies eines der am häufigsten kommentierten und aktivsten Probleme im Repository ist.

@timsneath Gibt es eine Möglichkeit, mehr Transparenz darüber zu erreichen, wie diese Community-Anfragen priorisiert werden?

https://github.com/flutter/flutter/wiki/Triage
https://github.com/flutter/flutter/wiki/Issue-Hygiene
über die Prozesse sprechen.

Obwohl unsere Teams derzeit keine Bandbreite haben, um dieses Problem zu lösen, bedeutet das nicht, dass jemand anderes dies nicht kann. Dies wäre ein mittleres/großes Unterfangen, sollte aber von einem motivierten Mitwirkenden machbar sein.

Es gibt eine Reihe von Fragen, von denen ich mir vorstellen könnte, dass sie hier beantwortet werden müssen:

  • Flutter_tools (und anderen Skripten) beibringen, nicht in das sdk-Installationsverzeichnis zu schreiben, sondern andere Cache-Verzeichnisse zu verwenden (dies kann ungeachtet der Code-Hygiene nützlich sein).
  • Fluttter_tools beibringen, dass es in Ordnung ist, eine nicht aktualisierbare (nicht beschreibbare) Installation zu haben und Benutzer irgendwie auf verschiedene Upgrade-Methoden hinzuweisen.
  • Ist die git-basierte Installationsmethode von Flutter mit diesen Tools kompatibel? Wir bieten bereits Tarballs/Zips zum ersten Download an, gehen jedoch derzeit davon aus, dass Benutzer flatter/flatter als Git-Repo installieren. Wenn es nicht kompatibel ist, kann es auf der Infrastrukturseite einige nicht triviale Prozessarbeiten geben, um das Produzieren/Verteilen/Testen von Nicht-Git-Verteilungen von Flatter zu unterstützen.

Gerne streite ich über Prioritäten (vielleicht in einem anderen Forum), aber ich möchte Sie ermutigen, sich anzusehen, welche anderen Fehler als höher priorisiert sind als dieser. Flutter hat viele Benutzer und von denen viele (manchmal dringende) Anfragen. Wir versuchen, sie in der Reihenfolge anzugehen, in der sie den größtmöglichen Einfluss auf unsere/die Ziele der Benutzer haben.

@eseidelGoogle Danke für die Klarstellung und die Strategieskizze, sie wird sehr geschätzt und ist super stärkend!

Um die Frage nach dem Aktualisieren zu beantworten, denke ich, wenn der reguläre Befehl flutter update für nicht git-Installationen nicht verfügbar sein kann, sollte dies gut genug sein. Gibt es eine Möglichkeit das zu tun? Im Idealfall wäre es keine andere Distribution, sondern nur eine if-Prüfung im Code, um zu sehen, ob der Speicherort der Flatter-Binärdatei einen Ordner .git . Ist das möglich?

Die Formel könnte auch einfach das Git-Repository herunterladen und die Befehle für einen Benutzer ausführen. Formeln müssen nicht nur Binärdateien installieren.

Als Referenz funktioniert rustup so:

rustup , dem Toolchain-Manager der Programmiersprache Rust, kann durch Ausführen eines Installationsskripts (Standalone-Installation) oder über einen Betriebssystem-Paketmanager installiert werden. Wenn Sie Rustup aktualisieren möchten, können Sie rustup self update für die eigenständige Installation ausführen oder das Upgrade über Ihren OS-Paketmanager durchführen, wenn Sie Rustup über den OS-Paketmanager installiert haben. Wenn Sie versuchen, rustup self update auszuführen, während rustup über den OS-Paketmanager installiert ist, erhalten Sie eine Fehlermeldung, die besagt, dass Sie es bitte von Ihrem OS-Paketmanager aktualisieren. Ich mag diese Implementierung sehr, denn wenn Sie zuerst etwas über Ihren OS-Paketmanager installieren und es mit der integrierten Funktionalität aktualisieren, kann es außerhalb der Kontrolle des OS-Paketmanagers laufen und in Zukunft einige unbekannte Fehler verursachen.

Ich denke, der beste Weg für flatter ist, eine ähnliche Implementierung wie bei rustup zu übernehmen, aber dies ist eine riesige Arbeit (man muss viele Dinge umgestalten, damit flatter von einem Systempaketmanager verwaltet werden kann) und erfordert möglicherweise die Hilfe von Mitgliedern des Kernteams von flatter , also gebe ich hier nur meine Vorschläge und ich erwarte nicht, dass dies so schnell möglich ist.

Ja, es klingt waaaaay komplizierter als der angebliche 10-Liner, auf den früher in diesem Thread verwiesen wurde.

TIL gibt es mehr Diskussionen dazu: http://flutter.dev/go/sdk-per-platform-installers

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen