Wer Linux nutzt, wird wahrscheinlich auch verschiedene Systeme zur Paketverwaltung kennen. Darunter fallen zum Beispiel APT oder dpkg für Debian oder auch RPM. Diese Programme führen automatisiert die Installation durch und aktualisieren veraltete Software, ohne dass man das händisch machen muss. Selbst für das Starten von Paketaktualisierung kann man einen Cron-Job einrichten, sodass man sich darum nicht mehr kümmern muss und immer die aktuellste Version von jedem Programm nutzt. Bei Windows hat es mich immer genervt, manuell die Updates durchführen zu müssen, aber dank eines interessanten Tools gehört das nun der Vergangenheit an.
Warum Updates installieren?
Es ist natürlich erst einmal eine berechtigte Frage: Warum soll ich mir denn überhaupt die Mühe machen und Updates installieren? Dafür gibt es verschiedene Gründe. Wichtig ist dabei aber vor allem der Sicherheitsaspekt. In vielen Programmen befinden sich Sicherheitslücken, die durch Updates geschlossen werden und je älter die Software ist, desto stärker macht man sich angreifbar. Zudem bringen Updates manchmal auch neue Features mit, die man nicht verpasst, wenn man immer auf dem laufenden bleibt. Und je näher man an der neuesten Version einer Anwendung dran ist, umso einfacher ist auch dessen Installation. Manchmal kann es schwer werden, ein Upgrade über mehrere Installationen durchzuführen (siehe Ubuntu, wo ein direktes Upgrade von 14.04 zu 17.04 nicht möglich ist).
Welches Tool hilft mir denn dabei?
Das angesprochene Programm hört auf den Namen Chocolatey und hat mich bisher sehr überzeugt und wenn möglich installiere ich jedes Programm über dieses Paketverwaltungssystem. Die Installation ist dabei denkbar einfach. Nutzt man die Powershell, so reicht es folgenden Befehl auszuführen:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Anschließend kann nach einem Neustart der Powershell den choco-Befehl verwendet werden. Möchte ich mir nun ein neues Programm installieren, schaue ich im ersten Schritt, ob diese Anwendung in der Paket-Übersicht aufgelistet ist. Bei den meisten Programmen ist es tatsächlich schon der Fall. Dort ist der entsprechende Installations-Befehl auch gleich angegebenen und folgt immer dem Muster choco install [packagename].
Und was soll mir das bringen?
Meiner Meinung bringt dies einige Vorteile mit sich. Man hat eine Anlaufstelle, wenn man ein Programm installieren will und es bedarf keiner Google-Suche, um einen Download-Link zu finden. Wenn man Pech hat, wird bei solchen Installationsseiten auch immer noch zusätzliche, unerwünschte Software mit installiert. Auch fällt der komplette Installationsprozess weg. Man muss sich also nicht durch die immer gleichen Dialoge klicken, sondern dies passiert automatisiert im Hintergrund. Ein weiterer Vorteil, der mir nach einer Neuinstallation von Windows aufgefallen war, ist zudem, dass man in einem solchen Fall nicht etliche Programme manuell installieren muss, sondern lediglich einen Befehl auf der Kommandozeile ausführen muss, damit alle gewünschten Programme zur Verfügung stehen.
Als letzten Punkt und fast wichtigsten Punkt sehe ich die automatischen Updates. Während man unter “normalen” Umständen meist manuell nach Updates Ausschau halten muss und diese dann auch selber installieren muss, genügt hier der Befehl choco upgrade all. Dadurch werden alle installierten Packages geupdatet.
Automatische Updates
Damit ich für diese Updates nicht immer noch eine Powershell aufmachen muss, habe ich mir eine Batch-Datei gebastelt, dass diese Aufgabe für mich übernimmt. Dafür benötige ich zuerst ein Powershell-Skript (.ps1-Datei) mit folgendem Inhalt:
choco upgrade all -y
Um diese Datei korrekt auszuführen ist es nötig, dass hierfür Administrator-Berechtigungen vorhanden sind. Dazu öffne ich also zuerst mittels eine Batch-Skript (.bat-Datei) eine administrative Powershell-Sitzung, mit der dann die vorher beschriebene Datei ausgeführt wird. Die Batch-Datei sieht wie folgt aus, wobei [Pfad zur .ps1-Datei] entsprechend angepasst werden muss:
powershell -noprofile -command "&{ start-process powershell -ArgumentList '-noprofile -file [Pfad zur .ps1-Datei]' -verb RunAs}"
Eine Verknüpfung zu dieser .bat-Datei habe ich im Autostart-Ordner von Windows angelegt, sodass diese bei jedem Hochfahren ausgeführt wird. Zu beachten ist, dass jedes Mal kurz manuell bestätigt werden muss, dass eine Powershell-Sitzung mit administrativen Rechten gestartet werden darf.
Für mich ist Chocolatey ein einfach zu bedienendes Programm, was viele Vorteile bietet, mir manuelle Arbeit abnimmt und mir hilft, meine installierten Programme auf dem aktuellsten Stand zu halten. Aus diesem Grund kann ich es nur jedem empfehlen, es sich vielleicht zumindest mal anzuschauen.
6 Gedanken zu “Chocolatey | Paketverwaltung für Windows”
Vielen Dank für die Erklärung.
– Was passiert mit bereits installierten Programmen? Müssen die vorher deinstalliert werden? Wo werden die Programme dann installiert von dem Paketmanager?
– Kannst Du Step by Step beschreiben, wie das mit dem Automatischen Updateskript zu machen ist. Verstehe ich nicht ganz!?Wo muß das erstellt werden? Bei Dir auf Z:\… oder wie? Und der Befehtl in der Beschreibung? Und muss das dann in den Tasker?
Danke
Hallo,
die Programme werden bei mir oft dorthin installiert, wo Sie auch vom manuellen Installer installiert werden würden, also meist unter C:\Program Files. Dies ist allerdings nicht immer der Fall. Folgender Link kann dir vielleicht weiterhelfen: https://chocolatey.org/courses/getting-started/installation-in-detail#install-location
Wie das mit bereits installierten Programmen ist, bin ich mir nicht ganz sicher. Ich habe dazu folgende Antwort bei Google gefunden: https://superuser.com/a/789490
Zu dem zweiten Punkt muss ich zugeben, dass ich den Teil tatsächlich sehr undeutlich beschrieben habe. Das habe ich nun noch einmal umformuliert und ich hoffe, dass es nun verständlicher ist.
Wenn man es manuell macht, muss im Grunde nur der Befehl ‘choco upgrade all -y’ in eine administrative Powershell eingegeben werden. Das Batch-Skript dient lediglich als Wrapper, um eine solche Powershell mit mehr Rechten zu starten und den Befehl automatisch auszuführen.
Falls noch was unklar ist, melde dich gerne noch einmal!
Viele Grüße
Jonas
Vielen Dank. Nun ist es klar und implementiert.
Eine Frage zu: ” Ein weiterer Vorteil, der mir nach einer Neuinstallation von Windows aufgefallen war, ist zudem, dass man in einem solchen Fall nicht etliche Programme manuell installieren muss, sondern lediglich einen Befehl auf der kommandozeile ausführen muss, damit alle gewünschten Programme zur Verfügung stehen.”
Ich vermute, damit ist gemeint, dass man in Choco alle Programme zusammensucht und die Installationsanweisung in ein .ps1 file schreibt und dann in der Console mit Adminrechten ausführt? Oder gibt es eine andere Möglichkeit?
Okay sehr gut! 🙂
Genau, das habe ich mit dem Satz quasi gemeint. Das Zusammensuchen kann man sich allerdings sparen, indem man den Befehl “choco list –local-only | Out-File -FilePath [Pfad zu einer Datei]” benutzt. Damit speichere ich mir regelmäßig die installierten Pakete in einer Textdatei. Allerdings scheint es noch bessere Möglichkeiten zu geben, die Pakete in einem Format zu exportieren, was dann auch direkt wieder von Chocolatey zur Installation auf einem anderen Rechner verarbeitet werden könnte: https://stackoverflow.com/questions/43167087/how-to-get-a-list-of-packages-from-one-machine-and-install-in-another-with-choco
Nach anfänglicher Sekpsis – nun: Ich bin begeistert!!! 🙂 🙂 🙂
Ich habe für den neuen Rechner eine .ps1 geschrieben und dort alle Programme rein, die ich brauche und die es in Chocolatey gibt. Wow! Ruckzuck automatisch installiert. Keine Suche nach Downloadlink. Kein Installer starten, Fragen beantworten, warten,…. Fehlerfrei bis auf eines, welches aber trotzdem funktioniert. *grübel Vielleicht habe ich da das falsche Installationspaket ausgewählt – das mit .install (siehe nachfolgend)?
Und das updaten wird, wie von Dir beschrieben dann auch ein Klacks 🙂
Einzig, was ich nicht verstehe und auch nix dazu gefunden habe:
Was ist der Unterschied zwischen choco install [prgName] und choco install [prgName.install] wie z.B. hier: https://chocolatey.org/packages?q=sandboxie
Hatte das zweite genommen. Und da kam auch dann die Fehlermldg. Es steht ziemlich viel im log, aber das dürfte die eigentliche Fehlerursache sein:
Attempt to get headers for https://downloads.sophos.com/inst/GMNtRx6IQ6HmUvXYJRTPjQZD02MTA5/sandboxie/SandboxieInstall-531-4.exe failed.
The remote file either doesn’t exist, is unauthorized, or is forbidden for url ‘https://downloads.sophos.com/inst/GMNtRx6IQ6HmUvXYJRTPjQZD02MTA5/sandboxie/SandboxieInstall-531-4.exe’. Exception calling “GetResponse” with “0” argument(s): “The remote server returned an error: (403) Forbidden.”
2020-11-13 10:36:45,049 12012 [INFO ] – Downloading sandboxie.install
Also nochmals vielen Dank für Deine tolle Beschreibung und gut, dass ich darauf gestoßen bin :-).
Was bei Dir aber nicht funktioniert ist die Suche!? Ich hätte im Gegenzug nämlich auch für Dich einen tollen Tipp. Und wollte sehen, ob Du das schon kennst.
Ich habe lange nach einem brauchbaren Notizbuch gesucht, welches die Daten lokal hält, aber ein sync auf mein Handy möglich ist. Und ich bin fündig geworden noch mit der V0.9 und zwischenzeitlich hat sich noch viel getan. Läuft super seit über einem Jahr! And the winner is Joplin (https://joplinapp.org/)!
Das freut mich, dass ich helfen konnte und bei dir (fast) alles funktioniert 🙂
Ich wähle immer das Package ohne den Suffix “.install” und habe dazu folgende Dokumentation gefunden: https://github.com/chocolatey/choco/wiki/ChocolateyFAQs#what-is-the-difference-between-packages-no-suffix-as-compared-to-install-portable
Danke für deinen Tipp, den werde ich mir definitiv mal anschauen! Notizen synchronisiere ich zwischen meinen verschiedenen Geräten aktuell über die Notiz-Erweiterung von Nextcloud.