{"id":666,"date":"2023-02-28T10:37:25","date_gmt":"2023-02-28T10:37:25","guid":{"rendered":"https:\/\/www.cssec.de\/blog\/?p=666"},"modified":"2023-02-28T11:00:38","modified_gmt":"2023-02-28T11:00:38","slug":"chocolatey-package-manager-fuer-windows","status":"publish","type":"post","link":"https:\/\/www.cssec.de\/blog\/2023\/02\/28\/chocolatey-package-manager-fuer-windows\/","title":{"rendered":"Chocolatey &#8211; Package-Manager f\u00fcr Windows"},"content":{"rendered":"<p>Hallo da drau\u00dfen,<\/p>\n<p>inzwischen ist es schon wieder ziemlich lange her, dass ich ein paar Blog-Eintr\u00e4ge verfasst habe. In der letzten Zeit habe\/hatte ich so viele Projekte, die ich parallel betreuen muss(te), dass einfach gar keine Zeit mehr blieb, um mal wieder etwas zu posten.<\/p>\n<p>Aktuell wird es gl\u00fccklicherweise bedeutend ruhiger um mein Langzeit-Projekt &#8222;<a href=\"https:\/\/www.cutworks.com\">Cutworks<\/a>&#8222;. Obwohl es viele neue Ideen gibt, hat mein Kunde die Weiterentwicklung aktuell gestoppt, auch weil unser langj\u00e4hriger Zulieferer angek\u00fcndigt hat, m\u00f6glicherweise demn\u00e4chst abzuspringen, musste mein Kunde die Rei\u00dfleine ziehen und Schadensbegrenzung vornehmen. Naja, so habe ich wieder etwas mehr Zeit f\u00fcr andere und auch neue Projekte.<\/p>\n<p>Auch wenn ich einige &#8222;Nebenprojekte&#8220; habe, reichen diese l\u00e4ngst nicht aus, um \u00fcber die Runden zu kommen. Daher startet morgen ein neues Projekt, mit dem ich erst einmal bis Ende des Jahres zu tun haben werde &#8211; ich freue mich drauf.<\/p>\n<p>Leider ist mein &#8222;Standard&#8220;-Notebook &#8211; ein Lenovo E490 inzwischen etwas schwach auf der Brust, so habe ich mir einen relativ g\u00fcnstigen Rechner (f\u00fcr 372 \u20ac) zusammengebaut, Windows 11 installiert und m\u00f6chte das nun f\u00fcr das neue Projekt nutzen.<\/p>\n<p>Adrian, mein B\u00fcro-Nachbar, hatte mir vor einiger Zeit mal was von einem Package-Manager f\u00fcr Windows erz\u00e4hlt, mit dem man quasi wie unter Linux, analog zu apt oder pacman Software einfach aus einem zentralen Repository installieren kann, ohne laufend die Exe-Dateien herunterzuladen und manuell zu installieren. Grunds\u00e4tzlich bietet zwar der MS-Store auch solche Features, aber aus Erfahrung ist dieser m.E. ziemlicher Schrott &#8211; ich hatte schon etliche Male das Problem, dass der einfach aufh\u00f6rte zu funktionieren und nichts mehr herunterladen konnte. Die Behebung war dieser Probleme war dann immer ein totaler Krampf &#8211; daher bin ich wirklich kein Fan vom MS-Store.\u00a0 Inzwischen bietet die Powershell zwar noch auch einige M\u00f6glichkeiten &#8211; aber mir war das immer viel zu kompliziert &#8211; zu kryptisch und hat an bestimmten Stellen auch nie so wirklich funktioniert.<\/p>\n<p>Zusammen mit dem neuen Rechner wollte ich also so einen Package-Manager nun mal ausprobieren. Der Package-Manager hei\u00dft: <a href=\"https:\/\/chocolatey.org\/\">chocolatey<\/a> und kann recht einfach \u00fcber die Powershell installiert werden.<\/p>\n<p>Grunds\u00e4tzlich gibt es eine Enterprise \/ Pro-Version und eine Open-Source\/Community-Edition i.d.R. reicht die &#8222;Open-Source&#8220;-Variante aus.<\/p>\n<h4>Installation<\/h4>\n<p>Die Installation erfolgt einmalig \u00fcber die Powershell (als Administrator), die Software-Pakete, die Chocolatey bietet, k\u00f6nnen dann aber sp\u00e4ter auch \u00fcber die &#8222;normale&#8220; Kommandozeile (allerdings mit Administrator-Rechten) installiert werden.<\/p>\n<p>\u00d6ffnet als erstes die Powershell als Administrator. Sucht dazu \u00fcber Suche oder \u00fcber die Such-Funktion im Windows-Start-Men\u00fc nach Powershell. Klickt dann bei dem Eintrag auf die rechte Maustaste und w\u00e4hlt &#8222;Als Administrator ausf\u00fchren<\/p>\n<p>&#8222;<img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-667\" src=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2023\/02\/Powershell_oeffnen.png\" alt=\"\" width=\"784\" height=\"735\" srcset=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2023\/02\/Powershell_oeffnen.png 784w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2023\/02\/Powershell_oeffnen-300x281.png 300w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2023\/02\/Powershell_oeffnen-768x720.png 768w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2023\/02\/Powershell_oeffnen-24x24.png 24w\" sizes=\"(max-width: 784px) 100vw, 784px\" \/><\/p>\n<p>Nach Best\u00e4tigung, dass ihr Administrator seit, sollte die entsprechende Powershell ge\u00f6ffnet werden. F\u00fchrt dann folgenden Befehl aus:<\/p>\n<pre> Get-ExecutionPolicy<\/pre>\n<p>Bei einer relativ neuen Installation von Windows sollte dies &#8222;Restricted&#8220; liefern. Ist das der Fall, setzt die ExecutionPolicy auf\u00a0 &#8222;AllSigned&#8220;mit folgendem Befehl:<\/p>\n<pre>Set-ExecutionPolicy AllSigned<\/pre>\n<p>Wenn ihr dann noch einmal den ersten Befehl (Get-ExecutionPolicy) ausf\u00fchrt, sollte dann &#8222;AllSigned&#8220; zur\u00fcckgeliefert werden. Alternativ k\u00f6nnt ihr die ExecutionPolicy auf ByPass stellen, aber rein aus sichertechnischen Gr\u00fcnden w\u00fcrde ich davon eher abraten.<\/p>\n<p>Nach Aktivierung der Execution-Policy kann nun direkt Chocolatey mit folgendem Befehl installiert werden:<\/p>\n<pre>Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https:\/\/community.chocolatey.org\/install.ps1'))\r\n<\/pre>\n<p>Sieht recht kompliziert aus, im Endeffekt deaktiviert der Befehl f\u00fcr diese eine Ausf\u00fchrung die ExecutionPolicy und l\u00e4dt das Powershell-Installationsscript herunter und f\u00fchrt es entsprechend aus.<br \/>\nNachdem das Script erfolgreich gelaufen ist, sollte choco installiert sein. Da die Umgebungsvariablen ge\u00e4ndert wurden, kann es sein, dass (wenn ihr in der gleichen Powershell arbeiten m\u00f6chtet) ihr die Umgebungsvariablen aktualisieren m\u00fcsst. Dazu f\u00fchrt einfach den Befehl:<\/p>\n<pre>RefreshEnv<\/pre>\n<p>aus. Alternativ k\u00f6nnt ihr einfach auch eine neue Kommandozeile oder eine neue Powershell-Sitzung (jeweils als <strong>Administrator<\/strong>) starten.<br \/>\nProbiert nun aus, ob ihr folgenden Befehl ausf\u00fchren k\u00f6nnt:<\/p>\n<pre>choco -v<\/pre>\n<p>Dies sollte dann die Versionsnummer der chocolatey-Installation anzeigen. Wenn das geklappt hat &#8211; super, dann k\u00f6nnt ihr mit choco entsprechend Apps installieren.<br \/>\nDetails zur Installation findet ihr auf englischer Sprache auch direkt auf der <a href=\"https:\/\/chocolatey.org\/install#individual\">chocolatey<\/a>-Seite.<\/p>\n<h4>Kurze Befehls\u00fcbersicht<\/h4>\n<p>Nun noch eine kurze \u00dcbersicht der meist-genutzten Chocolatey-Befehle. Grunds\u00e4tzlich solltet ihr chocolatey immer in einer Eingabeaufforderung oder einer Powershell &#8222;<strong>Als Administrator<\/strong>&#8220; ausf\u00fchren. Solltet ihr choco in einer &#8222;normalen&#8220; Kommandozeile ausf\u00fchren, warnt choco Euch dann aber auch noch einmal.<br \/>\nNun aber zu der Liste der meist-genutzten Befehle.<\/p>\n<p>Mit:<\/p>\n<pre>choco search Programmname<\/pre>\n<p>k\u00f6nnt ihr in den choco-Repositories nach entsprechenden Programmen suchen. Choco zeit euch dann eine Liste von m\u00f6glichen Kandidaten an, die den Suchbegriff enthalten.<br \/>\nMit<\/p>\n<pre>choco install Programmname<\/pre>\n<p>k\u00f6nnt ihr das entsprechende Programm installieren.<br \/>\nAnsonsten k\u00f6nnt ihr Euch mit:<\/p>\n<pre>choco list --local<\/pre>\n<p>die \u00fcber chocolatey installierten Programme auf eurem Rechner auflisten lassen.<\/p>\n<p>Mit:<\/p>\n<pre>choco outdated<\/pre>\n<p>k\u00f6nnt ihr pr\u00fcfen lassen, ob bzw. welche Pakete veraltet sind, diese k\u00f6nnen, sofern welche vorhanden sind, mit folgendem Befehl aktualisiert werden:<\/p>\n<pre>choco upgrade Programmname<\/pre>\n<p>Leider scheint es keinen Befehl zu geben, um ALLE outdated-Programme aktualisieren zu lassen. Dementsprechend solltet ihr euch die Liste anzeigen lassen und dann f\u00fcr jeden Eintrag den entsprechenden Befehl\u00a0 ausf\u00fchren.<\/p>\n<p>Solltet ihr ein Programm deinstallieren wollen, bietet chocolatey hier auch M\u00f6glichkeiten. F\u00fchrt einfach:<\/p>\n<pre>choco uninstall Programmname<\/pre>\n<p>aus.<\/p>\n<p>\u00dcber diese Grundbefehle hinaus, bietet chocolatey aber noch bedeutend mehr &#8211; theoretisch k\u00f6nntet ihr auch eure eigenen Programme in chocolatey-Pakete umwandeln und in das Repository hochladen, verschiedene Optionen aktivieren, u.v.m. Das w\u00fcrde hier komplett den Rahmen sprengen und ist i.d.R. eher f\u00fcr Pro \/ Enterprise-Nutzer relevant.<\/p>\n<p>Ich find das chocolatey-Konzept ziemlich gut, so konnte ich mir etliche Tools, die ich sowie brauche, wie git, python, gradle, maven,\u00a0 dbeaver, 7zip, Notepad++ einfach so \u00fcber die Kommandozeile installieren lassen. Genial.<\/p>\n<p>Vielleicht habt ihr Lust, das auch mal auszuprobieren.<\/p>\n<p>Viel Spa\u00df damit.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hallo da drau\u00dfen, inzwischen ist es schon wieder ziemlich lange her, dass ich ein paar Blog-Eintr\u00e4ge verfasst habe. In der letzten Zeit habe\/hatte ich so viele Projekte, die ich parallel betreuen muss(te), dass einfach gar keine Zeit mehr blieb, um mal wieder etwas zu posten. Aktuell wird es gl\u00fccklicherweise bedeutend ruhiger um mein Langzeit-Projekt &#8222;Cutworks&#8222;. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":668,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"_links":{"self":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/666"}],"collection":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/comments?post=666"}],"version-history":[{"count":2,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/666\/revisions"}],"predecessor-version":[{"id":674,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/666\/revisions\/674"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media\/668"}],"wp:attachment":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media?parent=666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/categories?post=666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/tags?post=666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}