4.11.20225 min

Maciej OlanickiRedakcja Bulldogjob

Windows Package Manager – korzystaj z Windowsa tak wygodnie, jak z Linuksa

Sprawdź, w jaki sposób zarządzanie paczkami z oprogramowaniem na Windowsach może stać się szybkie i bezbolesne.

Windows Package Manager – korzystaj z Windowsa tak wygodnie, jak z Linuksa

Wielu nawet najzagorzalszych miłośników programowania na Windowsie, a chyba jeszcze w większym stopniu administratorzy, przyznaje, że w systemie Microsoftu niekiedy brakuje tak wygodnego narzędzia, jak linuksowy terminal. Wygodna i naturalność takiego interfejsu sprawia, że za pomocą kilku komend można komfortowo dokonywać operacji na paczkach z oprogramowaniem czy dokonywać nawet najbardziej zaawansowanej konfiguracji systemu.


Menedżer paczek CLI dla Windowsa

Oczywiście mamy PowerShella czy windowsowy wiersz poleceń cmd.exe, ale trudno powiedzieć, aby można było z ich użyciem instalować aplikacje równie wygodnie, jak ma to miejsce w przypadku najpopularniejszych menedżerów pakietów znanych z dystrybucji. Często jednak zapomina się, że Windows dysponuje takim narzędziem i niezbędną do realizowania podobnych, co np. APT, zadań. Mowa o Windows Package Managerze.

Windows Package Manager, znany także od swojej głównej komendy jako winget, jest już z nami od ponad dwóch lat, a mimo to trudno powiedzieć, aby trafił do mainstreamu. Choć tradycyjne metody instalowania oprogramowania na Windowsie – mozolne przeklikiwanie się przez kreatory i zaśmiecony, a jednocześnie świecący pustkami Windows Store – pozostawiają wiele do życzenia, to jednak WPM nie zdobył większej popularności. Niesłusznie.


Windows Terminal 

Zanim jednak przejdziemy do omawiania możliwości samego Windows Package Managera, warto zaprezentował kolejny relatywnie młody składnik Windowsa w postaci Windows Terminala. Od najnowszej, jesiennej aktualizacji Terminal stanowi domyślną powłokę Windowsa 11 i to właśnie za jego pośrednictwem najwygodniej korzystać z WPM. Windows Terminal zainstalujemy z poziomu Microsoft Store lub ze stron Microsoftu.


Trzeba zaznaczyć, że Terminal nie stanowi konkurencji dla CMD czy PowerShella, lecz jest powłoką dla różnych wierszy poleceń wykorzystywanych w Windowsie. Dzięki niemu w jednym oknie, za pomocą interfejsu kart znanego z przeglądarek internetowych możemy dowolnie przełączać się pomiędzy wspomnianymi CMD i PowerShellem, ale też narzędziami CLI wykorzystywanymi w chmurze Azure. Można nawet obsługiwać tu terminale dystrybucji Linuksa zainstalowane na Windows Subsysytem for Linux. 

Cały Windows Terminal jest dość swobodnie konfigurowalny z użyciem jednego pliku, na który ostatnio nawet przygotowano GUI, i po prostu udany. Widać, że Microsoft poświęca sporo uwagi, by przyciągnąć developerów.


Windows Package Manager

WPM także instalujemy z poziomu Microsoft Store. Po instalacji (WPM działa zarówno w CMD, jak i PowerShellu, jak wspomniano sam Terminal to tylko powłoka), aby zapoznać się z podstawową składnią, wystarczy wprowadzić komendę winget -?, której wynik widać na zrzucie poniżej. Do dyspozycji mamy jak dotąd 13 podstawowych komend, przy czym większość z nich ma swoje charakterystyczne parametry.

Od strony infrastruktury Windows Package Manager nie odbiega zasadniczo od tego, jak działają linuksowe menedżery pakietów – mamy do czynienia z oficjalnym repozytorium prowadzonym przez Microsoft, ale można dodać też własne źródła na wzór znanych z Linuksa repozytoriów PPA:

C:\Users\Maciek Olanicki>winget source list
Name    Argument
-----------------------------------------------------
msstore https://storeedgefd.dsx.mp.microsoft.com/v9.0
winget  https://cdn.winget.microsoft.com/cache

C:\Users\Maciek Olanicki> winget source add [-n] Contoso


Powyższe przykładowe polecenia poskutkują oczywiście wylistowaniem już dostępnych źródeł,  a następnie dodadzą jedno następne, o nazwie Contoso (także utrzymywanie przez Microsoft, listy repozytoriów można znaleźć na stronie korporacji). 

Ponadto, jak widać, po akceptacji warunków świadczenia usług można także dołączyć jako repozytorium Windows Store. I trzeba przyznać, że korzystanie z oficjalnego sklepu z softem dla Windowsa jest z poziomu wiersza poleceń znacznie wygodniejsze, niż w przypadku GUI. Warto się jednak zastanowić, czy warto, gdyż nie tylko wydłuża to czas odnajdywania pakietów, ale też każdorazowo zmusza do wyboru, z którego źródła skorzystać: 

C:\Users\Maciek Olanicki> winget install powertoys
Multiple packages found matching input criteria. Please refine the input.
Name                Id                  Source
-----------------------------------------------
Microsoft PowerToys XP89DCGQ3K6VLD      msstore
PowerToys (Preview) Microsoft.PowerToys winget

C:\Users\Maciek Olanicki> winget install powertoys -s winget
Found PowerToys (Preview) [Microsoft.PowerToys] Version 0.64.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://github.com/microsoft/PowerToys/releases/download/v0.64.0/PowerToysSetup-0.64.0-x64.exe
  ██████████████████████████████  98.7 MB / 98.7 MB
Successfully verified installer hash
Starting package install...
Successfully installed


Windows Package Manager – jak dodać własną paczkę?

Oczywiście moglibyśmy tu do woli prezentować kolejne polecenia i ich parametry, ale nikt nie zrobi tego lepiej niż wspomniany już wynik polecenia winget -?. Opisy poszczególnych wariacji poleceń są więcej niż przejrzyste i nawet relatywnie skomplikowana operacja na paczkach przebiega dość intuicyjnie. Przejdźmy zatem do kwestii tego, jak WPM wygląda z perspektywy drugiej strony okienka, czyli prześledźmy mechanizm dodawania własnej paczki do oficjalnego repo wingeta.

Tutaj również nie ma czarów, widać, że Microsoftowi w pracach nad WPM-em przyświecała ambicja dostarczenia narzędzia  możliwie jak najprostszego w obsłudze, tak dla użytkowników, jak i developerów. Całość przebiega w pięciu krokach, z których pierwszy stanowi oczywiście zapoznanie się z warunkami, na jakich w ogóle można umieszczać swoje paczki w wingecie i zatwierdzenie licencji CLA. 

Następnie czeka nas utworzenie tzw. manifestu. Manifest to nic innego jak plik YAML zawierający wszelkie niezbędne informacje o paczce: nazwie, wersji, deklaracji w kwestii dostępności paczki, wskazuje się tu też ścieżkę do binarki, którą Microsoft przemieli przez swoje silniki antymalware’owe.

W kolejnym kroku konieczne jest przetestowanie, walidacja manifestu. Należy jednak zaznaczyć, że obie czynności – tak generowanie, jak i walidacja – mogą przebiegać w sposób w dużej mierze zautomatyzowany z użyciem dostarczonych przez Microsoft narzędzi i templatek dostępnych w repozytorium winget-pkgs na GitHubie. Po pomyślnej weryfikacji tworzymy pull request i pozostajemy do dyspozycji w razie dodatkowych pytań. Jeśli wszystko pójdzie dobrze, paczka wyląduje w oficjalnym repozytorium Windows Package Managera.


Pozytywna linuksyzacja Windowsa

Czy Windowsowi potrzebne jest takie narzędzie, jak Windows Package Manager? To oczywiście kwestia subiektywna, niemniej wygodna instalowania dużej liczby paczek i zaawansowanego zarządzania nimi może się dla developerów okazać rozwiązaniem znacznie wygodniejszym niż klikanie po GUI.  Zwłaszcza w epoce Windowsa 11, gdzie funkcjonują już trzy warstwy GUI: ten z najnowszej wersji, ten znany z Windowsa 7 i 10, ale trafią się również liczne kwiatki rodem ze starego dobrego Panelu Sterowania – rozmazane, brzydko przeskalowane i z niewygładzoną czcionką.

Nie o estetykę jednak chodzi, lecz o funkcjonalność. Tutaj WPM wypada już naprawdę nieźle i trudno powiedzieć, aby znacząco ustępował linuksowym odpowiednikom. Co ciekawe, na narzędzie, które z założenia miało być obsługiwane z poziomu CLI, doczekało się już przynajmniej kilku rozwijanych niezależnie od Microsoftu, graficznych interfejsów użytkownika, łącznie z aplikacją przeglądarkową. Oczywiście popularność Windows Package Managera.

<p>Loading...</p>