2013-08-28 9 views
8

Aus einer Python/Django-Welt kommend, wäre es großartig, etwas wie eine requirements.txt-Entsprechung für go/revel zu haben. Wie kann ich das machen? Ich weiß, ich kann nur eine requirements.txt Datei schreiben und dann etwas tun, wieGolang requirements.txt äquivalent

cat reqiurements.txt | xargs go get 

Aber was, wenn meine Anforderungen AUCH Anforderungen? Der obige Befehl würde versuchen, sie "zu holen", und dann würden sie nicht bauen, da ich diese Anforderungen nicht installiert habe.

Gibt es etwas, was ich vermisst habe?

+5

'geht get' genannt sollte für jedes Paket benötigt, um alle Anforderungen greifen. Sie sollten sie nicht angeben müssen. Probieren Sie es aus und sehen Sie, ob es das tut, was Sie benötigen. – Intermernet

Antwort

13

Der Befehl go get macht genau das, was Sie brauchen: Er findet alle Abhängigkeiten und lädt die fehlenden herunter und installiert sie. Konzentrieren Sie sich auf "alle": go get durchläuft wirklich Ihr Abhängigkeitsdiagramm.

Werfen Sie einen Blick in die Dokumentation:

http://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies

Die Dokumentation Go ist wirklich sauber, kurz und gut geschrieben. Ich würde immer empfehlen, sich zuerst die Dokumentation anzusehen, bevor wir Annahmen treffen, die auf Erfahrungen mit anderen Werkzeugen oder Werkzeugketten beruhen.

+0

Der Link, den du geteilt hast, erklärt nicht, wie ich meine eigenen Abhängigkeiten schreiben kann. Auch Entwickler und Benutzer können unterschiedliche Abhängigkeiten haben. – erikbwork

+0

@erikbwork Können Sie erklären, was "meine eigenen Abhängigkeiten" sind? Und was meinen Sie mit "unterschiedlichen Abhängigkeiten" von Benutzern und Entwicklern? Denkst du an Abhängigkeiten, die nur der Testcode benötigt? Wenn ja: Go get handle this (siehe Kommandozeilen-Flags) Wenn Sie über zusätzliche Werkzeuge sprechen (z. B. 'go generators' beruht auf yacc oder m4), dann ist go get nicht für Sie. Go-Downloads abrufen und Go-Pakete von der Quelle erstellen, es ist kein Paket-Manager oder System-Provisioning-Tool. – Volker

+0

Ich weiß nicht "geh", also kann ich es dir nicht erklären. Aber normalerweise erfordert moderne Software einige zusätzliche Pakete, z. Ihr Programm könnte YAML-Dateien parsen. Dann brauchst du die go-yaml-Bibliothek in Version 3.1.5. Wenn Sie es nie irgendwo niedergeschrieben haben, bezweifle ich, dass 'go get' es herausfinden wird. Der Unterschied zwischen Entwicklern und Benutzern besteht hauptsächlich in der Stabilität. Entwickler können die Version 3.4.5 anstelle von 3.1.5 verwenden, da sie alle neuen Funktionen enthält, aber möglicherweise beschädigt wird. Die Benutzer erhalten jedoch 3.1.5 mit der neuesten Version, weil sie seltener bricht. – erikbwork

2

Ich habe gerade festgestellt, dass die Kubernetes Jungs tatsächlich eine Übersichtsseite für sich selbst erstellt haben here.

Zusammenfassung ist dies: Zur Zeit stabil ist Glide und das kühle neue Spielzeug ist dep