2012-12-30 4 views
7

Julia hat ein Paketsystem basierend auf Git-Repositories mit spezifischen Verzeichnissen (Paketskelett erhalten mit Pkg.new("MyPackage")) und eine METADATA-Datei, die Pakete und die Git-Server auflistet gefunden auf.Einfachste Weise, ein Julia-Paket für andere verfügbar zu machen

Pkg.init() initialisiert eine lokale Julia-Installation mit der Standardliste des Pakets, aber was sind die genauen Schritte zum Schreiben in die eigene Paketdokumentation, damit potenzielle Benutzer es mit Pkg.add("MyPackage"); require("MyPackage") ausprobieren können?

Antwort

5

Jeder Code Paketquelle manuell in .julia/MyPackage platziert werden können. Dies kann durch Entpacken einer Datei oder durch manuelles Auschecken der Paketquelle aus dem Repository erfolgen. Sobald das erledigt ist, wird require("MyPackge") funktionieren, genauso wie mit offiziellen Paketen.

Wenn Sie möchten, dass Benutzer Pkg.add ("MyPackage") ausprobieren, müssen Sie ihnen ein eigenes METADATA-Repository zur Verfügung stellen. Klonen Sie das offizielle Repository, fügen Sie wie gewohnt Ihr eigenes Paket hinzu. Dann bitten Sie die Benutzer, ihre Installation des julia-Pakets mit Pkg.init("url to metdata git repository") zu initialisieren. Sobald dies erledigt ist, installiert Pkg.add("MyPackage") das Paket von seinem eigenen privaten Git-Repository.

+0

Danke. Wir kommen dahin ;-). Wie würde das funktionieren, wenn mehrere Leute vorschlagen, Pakete auf diese Weise zu verteilen (das heißt, mehrere Leute geben der offiziellen METADATA die Anweisung, ihr eigenes Paket hinzuzufügen)? – lgautier

+0

Ich denke nicht, dass es viele Überlegungen gibt, METADATA für die Verteilung ihrer eigenen Pakete zu kritisieren. Die oben beschriebene Methode dient eigentlich dazu, eine erste Entwicklung eines Pakets vorübergehend zu testen. Sobald Sie bereit sind, ein Paket an eine breitere Benutzergruppe zu verteilen, sollten Sie das Paket der offiziellen METADATA hinzufügen. Es braucht eine einfache Github Pull-Anforderung, und die Anforderungen sind überhaupt nicht belastend (Nur dass der Name eindeutig und angemessen ist). Die tatsächliche Paketquelle befindet sich weiterhin unter Ihrem eigenen Git. Gibt es einen Grund, warum Sie den offiziellen Metadaten kein Paket hinzufügen möchten? – aviks

+0

Es gibt verschiedene Situationen, in denen ein einfacher Wechsel zwischen Sammlungen von Repositories oder einer Hierarchie von Sammlungen von Repositories zur Suche nach einem Paket wünschenswert ist. Eine Situation sind Menschen hinter einem eisernen Vorhang, der interne Pakete teilt, während sie auch öffentliche holen wollen. Ansonsten habe ich keinen besonderen Grund, keine Pull-Anfrage für mein Paket einzureichen. Ich werde es in Kürze tun, danke für die Antwort (en). – lgautier

1

Für meine eigenen Pakete, ich habe den folgenden Textvorschlag wurde mit:

Das FILL_ME_IN Paket durch das Julia Paketsystem zur Verfügung steht. Wenn Sie noch nie das Paket-System verwendet haben, müssen Sie Folgendes ausführen:

require("pkg")

Pkg.init()

Pkg.add("FILL_ME_IN")

Wenn Sie eine vorhandene Bibliothek von Paketen können Sie Ziehen Sie das FILL_ME_IN-Paket mit ähnlichen Befehlen in Ihre Bibliothek:

require("pkg")

Pkg.add("FILL_ME_IN")

+0

Danke. Ich gehe davon aus, dass sich FILL_ME_IN auf das bezieht, was in der Frage "MyPackage" genannt wird, und nimmt an, dass dieses Paket in der Standard-METADATA aufgeführt ist, die mit "pkg" ausgeliefert wird. Meine Frage ist: "Wie mache ich das eigene Paket für andere leicht zugänglich?", Nicht "Wie ziehe ich ein Paket, das in der offiziellen METADATA aufgeführt ist?". – lgautier