Komfortable Software-Installationen unter Windows
Aus meinem alten Blog (2012–2017). Der Text steht so, wie ich ihn damals geschrieben habe.
Bild nicht mehr verfügbarChocolatey & MyGet - Ein gutes Team?Ein neues System aufsetzen ist nicht mit der Installation des Betriebssystems abgeschlossen. Ganz im Gegenteil. Neben Treibern muss auch ein ganzer Schwung Anwendungen installiert werden. Von kleineren Helfern und nützlichen Tools über Versionsverwaltungssysteme, bis hin zu komplexen Softwarepaketen wie zum Beispiel Entwicklungsumgebungen.
Aber wie laufen diese Installationen ab? Meistens in Form einer wahren Installations-Orgie. Manuell wohl gesagt. Zumindest bei mir. Am Ende vergesse ich dann meistens doch irgendetwas. Teure Systeme lohnen dafür nicht und mir fehlte bisher die Motivation etwas eigenes zu schreiben. Bei VMs kann das Problem noch durch vorgefertigte Installationen beziehungsweise Snapshots abgemildert werden. So richtig glücklich macht das aber alles nicht.
Chocolatey & MyGet
Chocolatey(öffnet in neuem Tab) habe ich schon einmal im Artikel „Glückshormone ausschütten“ in der Ausgabe 01/2014(öffnet in neuem Tab) der dotnetpro(öffnet in neuem Tab) vorgestellt. Dabei handelt es sich um eine Paketverwaltung für Softwarepakete auf Basis von NuGet. Es ist stellenweise mit apt-get vergleichbar, wurde aber mit Windows als Plattform im Hinterkopf konzipiert.
Bei MyGet(öffnet in neuem Tab) handelt es sich um einen Anbieter, der NuGet-Feeds zur Verfügung stellt. Also im Grunde so etwas wie ein NuGet-as-a-Service. Nach der Registrierung können eigene Feeds angelegt werden, zu denen NuGet-Pakete hinzugefügt werden können. Welche genau, bleibt jedem selbst überlassen. Über diesen Feed können dann alle hinzugefügten Pakete von überall aus installiert werden, ohne das die Pakete lokal vorliegen müssen und ohne eine genaue Vorstellung davon haben zu müssen, welche Pakete sich hinter dem Feed verbergen. Zusammengefasst also eine Art online NuGet-Server.
In der Basisversion ist MyGet frei. Es fallen keinerlei Kosten an. Einige Einschränkungen hat das aber zur Folge. Beispielsweise sind keine privaten Feeds möglich, es stehen lediglich 500 Megabyte zur Verfügung und einzelne Pakete dürfen 10 Megabyte nicht überschreiten. Das diese Einschränkungen für einen einfachen Entwickler-Feed aber keine Hürde darstellen, zeigt sich gleich.
Das Team
Aber wie können Chocolatey und MyGet zusammen die Installation von Softwarepaketen vereinfachen? Im Grunde ist das ganz einfach. Bei Chocolatey besteht die Möglichkeit, über den Parameter -src, NuGet-Pakete zu installieren, die über eine Quelle angegeben werden. Das folgende Kommando installiert also alle Pakete der angegebenen Quelle:
cinst all -src https://www.myget.org/F/devpackages/
Und bei dieser Quelle handelt es sich um meinen MyGet-Feed der, wie der Name vielleicht vermuten lässt, viele Pakete enthält, die ich für eine Entwickler-Maschine brauche. Dazu gehören im Moment zu Testzwecken 20 Pakete, zu denen etwa 7zip, Dropbox, Git, Notepad++, Paint.NET und Sublime Text 2 gehören. Diese Zusammenstellung bezieht sich, wie sicherlich unschwer zu erkennen ist, auf einen Entwicklungsrechner. In meinem Fall für C# genutzt. Für andere Anwendungsfälle, insbesondere für Systeme die nur zum Konsumieren genutzt werden, müssen natürlich andere Anwendungen installiert werden. Aber auch das ist auch kein Problem. Es müssen lediglich andere Pakete zum Feed hinzugefügt werden.
Und die Größenbeschränkung?
Aber was ist mit der schon angesprochenen Größenbeschränkung? 20 Pakete sind immerhin nicht wenig und die aufgelisteten Pakete sind nicht sonderlich klein. Der Trick ist, dass diese Pakete gar nicht lokal zum Feed hinzugefügt wurden. Ein lokal hinzugefügtes Paket bedeutet, dass das NuGet-Paket direkt bei MyGet gehostet wird, so dass es von überall aus zur Verfügung steht. Für private Feeds, die beispielsweise eigene Bibliotheken enthalten, kann das Sinn ergeben. Sofern diese auf einem Drittanbieter-Server gelagert werden können. In meinem Fall handelt es sich bei den hinzugefügten Paketen aber lediglich um Verweise, vergleichbar mit Links in einem Dateisystem. Sie verweisen auf die original NuGet-Quellen. Das bedeutet, dass die 20 Pakete in meinem Feed keine 900 Kilobyte Speicherplatz verbrauchen. Mit den 500 Megabyte komme ich somit sehr lange aus.
Installationen
Über das oben vorgestellte Kommando cinst mit dem Parameter -src werden alle Pakete des Feeds installiert. Leider sind diese Installationen nicht unbeaufsichtigt. Das bedeutet, dass Installer durchaus Fragen stellen können, die manuell vom Anwender beantwortet werden müssen. Darauf hat Chocolatey auch leider keinen Einfluss, denn es kommt darauf an, wie das NuGet-Paket konfiguriert ist.
Hier könnte in Zukunft BoxStarter(öffnet in neuem Tab) Abhilfe schaffen. Damit sind deutlich mehr Optionen möglich. Mir war das bisher zu umständlich, da ich aktuell lediglich an einer Möglichkeit interessiert war, Softwarepakete zusammenzufassen und immer die aktuellste Version zu bekommen. Das ist über den MyGet-Feed und Chocolatey möglich. Letztendlich erspart mir das die ständige Suche nach den Installationspaketen auf Herstellerseiten etc. pp.
Sicherheitsfragen
Chocolatey ist nicht ganz unumstritten, was ich an dieser Stelle noch mal erwähnen möchte. Die Pakete können von jedem eingestellt werden und damit potentiell gefährlich sein. Für meinen aktuellen Anwendungszweck ist das nicht ganz so essentiell, da ich die Installation über den MyGet-Feed zunächst in VMs teste.
Wie sich die Sicherheit von Chocolatey in Zukunft entwickelt muss sich zeigen. Scott Hanselman hat das in seinem Blogpost „Is the Windows user ready for apt-get?(öffnet in neuem Tab)“ schön zusammengefasst. Auch in der Google Group zu Chocolatey wird das Thema diskutiert(öffnet in neuem Tab).
Fazit
Ich finde die aktuelle Lösung für meine Zwecke mehr als ausreichend. Es muss sich noch beweisen, wie gut das Updaten der Pakete im Feed funktioniert und ob ich durch die vorgestellte Lösung tatsächlich Zeit spare.
Bisher sieht es gut aus. In den letzten Tagen habe ich einige VMs installiert und über den Feed initial mit Software ausgestattet. Auf Probleme bin ich dabei bisher nicht gestoßen. Ich bin gespannt, ob das so bleibt.
Erfreulich ist, dass Chocolatey in letzter Zeit immer mehr Anhänger gewinnt. So ist auch JetBrains(öffnet in neuem Tab) dazu übergegangen, ihre Softwarepakete(öffnet in neuem Tab) dort anzubieten. So ist auch die Installation von ReSharper und Co. über Chocolatey möglich.