Uncategorized

Windows 10 Yenilikleri – PowerShell 5 ile Paket Yönetimi OneGet

Microsoft dünyasında paket yönetimi deyince MSI, MSP, MSU, APPX ve ZAP vb. paketleri aklımıza gelmektedir. Bu uzantılardaki uygulama kurulum paketleri kullanılarak uygulamanın tamamı, belirli bir modülü ya da uygulamaya ait yamaların kurulumu yerel olarak ilgili sistemin üzerinde ya da uzaktan dağıtım araçları ile gerçekleştirilir. Linux, Unix ya da MacOS dünyasında ise Apt-Get, YUM, RPM, HomeBrew vb. araçlar kullanılarak yerel olarak hazırlanmış bir paket sunucusundan ya da internet ağında bulunan paket kaynakları kullanılarak istenilen uygulama paketine ulaşılarak gerçekleştirilir. Özellikle Linux, Unix dünyasında çalışan BT profesyonellerinin sıklıkla kullanmış oldukları bir yönetim modülüdür, paket yönetimi.

clip_image002

Microsoft Windows 10 ve Windows Server 2016 geliştirme sürecinde yeni nesil işletim sistemleri ile beraber gelecek olan Windows Management Framework 5.0 ile birlikte öne çıkan yeniliklerden biri de “Paket Yönetimi”.

clip_image004

Hatırlarsanız, Nisan 2014 tarihinde “Windows Management Framework (WMF) V5 Preview” Microsoft tarafından tüm dünyaya duyurulmuştu. Zaman içerisinde yeni sürümlerle geliştirilen WMF 5.0 Preview paketinin son versiyonu Nisan 2015 tarihinde duyuruldu. İçerisinde özellikle BT yöneticileri için kurumsal altyapılarda ağ yönetimini amaçlayan yeni cmdlet komutlarını da içeren bu paket içerisinde aşağıdaki alanlarda yenilikler geliyor :

·       Windows PowerShell 5.0

·       Windows PowerShell Integrated Scripting Environment

·       Windows PowerShell Desired State Configuration

·       Network Switch Cmdlets

·       Package Management (OneGet)

·       Software Inventory Logging

Windows Management Framework (WMF) V5 ile Windows PowerShell 5.0 versiyonu geliyor. Windows PowerShell 5.0 ile çok sayıda yenilik bizleri bekliyor. Bu yeniliklerin listesini Windows Server vNext 2016 Technical Preview 2 Yenilikleri – Bölüm2 makalesindeki “PowerShell İle Neler Geliyor?” başlığı altında bulabilirsiniz. Bu yenilikleri makalelerle sizlerle paylaşmaya devam ediyor olacağız.

Windows Management Framework V5 Preview April 2015 paketine http://www.microsoft.com/en-us/download/details.aspx?id=46889 adresinden ulaşabilirsiniz.

Windows Management Framework V5 Preview April 2015 paketi için desteklenen işletim sistemleri :

·       Windows Server 2012 R2

·       Windows 8.1 Pro

·       Windows 8.1 Enterprise

·       Windows Server 2012

·       Windows 7 SP1

·       Windows Server 2008 R2 SP1

Windows Management Framework V5 paketi Microsoft .NET Framework 4.5 gereksinimi duyar. Microsoft .NET Framework 4.5 paketini Microsoft Download Center adresinden indirebilirsiniz.

Windows Management Framework V5 ile Windows PowerShell komut satırında gelen en önemli yeniliklerden biri de OneGet paket yönetim modülüdür. Windows 10 Technical Preview ve Windows Server 2016 Technical Preview işletim sistemleri üzerinde yerleşik olarak geliyor.

Teknik olarak OneGet bir “paket-yöneticisi” değildir. OneGet’i “genişletilmiş paket-yönetim-iskeleti” ya da genişletilmiş paket-yönetim-çerçevesi” (package management framework)” olarak tanımlamak daha doğru olacaktır. Bir diğer ifadeyle paket-yönetim-yöneticisi de diyebiliriz. OneGet, paket yönetim eklentileri ile paket kaynakları eklenerek genişletilebilir. Bu paket kaynakları merkezi bir depolama havuzundan yüklenebilirler. PackageManagement(OneGet) yerleşik olarak aşağıdaki paket kaynağı ile gelmektedir:

·       Chocolatey

Chocolatey dışında da ilave paket kaynakları eklenebilmektedir. Bu konuda detayları makalemizin ilerleyen kısımlarında uygulamalı olarak görüyor olacağız.

Mimari Yapısı

WMF 5.0 ile gelen paket yönetim altyapısı bir paket yönetim kaynağıdır. Kullanıcılara sağlamış olduğu tümleşik PowerShell arabirimi ile istenen paket kaynakları içerisinde uygulama arama, keşfetme, yükleme/kaldırma, paket envanteri oluşturma gibi operasyonlara imkan tanır. Yine çekirdek yapısında barındırdığı API’lar vasıtasıyla farklı kurulum ve yönetim teknolojilerine sahip paket sağlayıcılar üzerinden paket kaynaklarına erişimi gerçekleştirmeye imkan tanıyan bir mimariye sahiptir.

clip_image006

BT yöneticileri ve son kullanıcılar PowerShell 5.0 ile gelen “OneGet” paket-yönetimi modülü içerisinde gelen cmdlet’leri kullanarak aşağıdaki işlemleri gerçekleştirebilirler:

·       Paket Yükleme

·       Paket Kaldırma

·       Paket Havuzuna Ekleme

·       Paket Havuzundan Çıkarma

·       Paket Havuzundan Sorgulama

·       Paketin sistem üzerinde yüklü olup olmadığını sorgulama

Yukarıdaki işlemleri gerçekleştirmek için WMF 5.0 ile paket yönetim altyapısında aşağıdaki bileşenler geliyor:

·       PackageManagement Core bileşeni

·       Cmdlet’leri içeren PowerShell modülü

·       Paket yönetim sağlayıcılar

·       Paket kaynakları

Yerleşik olarak gelen paket yönetim sağlayıcılar:

·       Bootstrap provider : daha fazla paket sağlayıcının nereden alınabileceğini bilen sağlayıcı

·       MSI Provider : MSI paketlerini yönetir.

·       MSU provider : Microsoft güncelleme paketlerini yönetir.

·       Programs provider : Program Ekle/Kaldır altındaki envanteri yönetir.

·       PowerShellGet : PowerShell modüllerine erişimi sağlar.

Paket Yönetim Uygulama Adımları :

Altyapı ve mimarisi ile ilgili bu kadar bilgiden sonra artık uygulamalı olarak paket yönetim adımlarını birlikte inceleyelim.

Öncelikle PowerShell versiyonunun bir kontrolünü yapıyoruz:

clip_image008

Gördüğünüz üzere Windows PowerShell 5.0 versiyonuna sahibiz. Ben uygulamaları bir Windows 10 Insider Preview üzerinde gerçekleştiriyoruz. Sizler benzer uygulamaları Windows Server 2016 Technical Preview 2 üzerinde de gerçekleştirebilirsiniz. Zira her iki versiyon da PowerShell 5.0 ile geliyor. Ayrıca Windows 7, Windows 8, Windows 8.1, Windows Server 2008 R2,Windows Server 2012, Windows Server 2012 R2 işletim sistemleri üzerinde de PowerShell versiyonunu WMF 5.0 ile PowerShell 5.0 sürümüne yükselterek gerçekleştirebilirsiniz.

PowerShell versiyonumuzu kontrol ettikten sonra şimdi de PackageManagement paket yönetim modülünü kontrol edelim. Bunun için de aşağıdak cmdlet çalıştırıyoruz:

clip_image010

Paket yönetim modülü WMF 5.0’ın ilk sürümlerinde “OneGet” olarak gelirken son sürümde “PackageManagement” olarak değişmiştir. Açık kaynak olarak yürütülen projede ise module ismi hala “OneGet” olarak devam etmektedir. Açık kaynak projesine https://github.com/OneGet adresinden erişilebilir.

Şimdi de PackageManagement modülü içerisinde gelen cmdletlerin listesini kontrol ediyoruz:

clip_image011

Gördüğünüz gibi paket yönetiminde üç seviyede yönetim sağlanıyor : paket sağlayıcı (provider), paket kaynağı ve paket.

Yukarıdaki resimde de listelenen cmdlet’lerin tamamı isminden de fonksiyonunu açığa çıkartıyor. Kısaca yaptıkları işlemleri açıklayacak olursak:

·       Find-Package : Paket aramak ve keşfetmek için kullanılır.

·       Get-Package : Yüklü paket listesini getirir.

·       Install-Package : Paket yüklemesi yapar.

·       Save-Package : Paketi bilgisayarınızda farklı bir konuma indirir. Yükleme yapmaz.

·       Uninstall-Package : Yüklü paketi bilgisayarınızdan kaldırır.

·       Get-Packageprovider : Paket sağlayıcıları listeler. Örneğin; Chocolatey.

·       Get-PackageSource : Bilgisayarınızda kayıtlı paket kaynaklarını listeler.

·       Register-PackageSource : Tanımlanan bir paket sağlayıcı için paket kaynağı ekler.

·       Set-PackageSource : Tanımlanan paket sağlayıcı için paket kaynağını değiştirir.

·       Unregister-PackageSource : Tanımlanan paket sağlayıcıya ait kayıtlı bir paket kaynağını kaldırır.

Paketlerin Keşfedilmesi:

Paket keşfi yaparken “Find-Package” cmdlet kullanıyoruz. İhtiyaç durumuna göre ilgili parametreleri de kullanarak hızlıca istenilen pakete ulaşmak mümkündür.

Öncelikle Get-PackageSource cmdlet ile paket kaynakları listesine bir göz atalım.

clip_image013

Hali hazırda henüz tanımlı bir paket kaynağı olmadığı için “Unable to find package sources” uyarı mesajını alıyoruz. Bu mesaj sonrasında aşağıdaki komutu çalıştırarak an itibariyle paket kaynağında kaç adet paketin olduğunun bir ölçümünü yapıyoruz.

clip_image015

Gördüğünüz gibi sistemde ilk kurulum anı itibariyle paket kaynağı tanımlı olmadığı için paket sayısı “0”. Dolayısıyla aşağıdaki şekilde de görülen Find-Package cmdlet kullanarak 7Zip ya da Zoomit gibi uygulama paketlerinin olup olmadığını sorguladığımızda da bu isimlerde bir paketin bulunamadığı mesajıyla karşılaşıyoruz.

clip_image017

Yukarıda da ifade ettiğimiz “BootStrap” isimli sağlayıcıyı kullanarak daha fazla paket sağlayıcıyı kaynağı nasıl bulabileceğimizin listesini veren aşağıdaki cmdlet çalıştırıyoruz. Dikkat ederseniz daha fazla paket bulmak için ProviderName parametresine değer olarak “BootStrap” tanımladık.

clip_image019

Bu komuttan sonra da aşağıdaki komutu çalıştırarak “Chocolatey” isimli sağlayıcının var olup olmadığını sorguluyoruz. Ve karşımıza gelen mesajda Chocolatey v2.8.5.101 sürümünün sistemde yüklü olmadığı, elle yükleyebileceğimiz adres bilgisini belirtip, otomatik olarak indirmek için “[Y] Yes” tuşuna basmamızı istiyor.

clip_image021

“Y” ile Chocolatey paket sağlayıcısını bilgisayarımıza indiriyoruz.

İndirme süreci başarıyla tamamlandıktan sonra Get-PackageProvider cmdlet ile paket sağlayıcı listesine baktığımız da Chocolatey geldiğini aşağıdaki şekildeki gibi göreceksiniz.

clip_image023

Get-PackageProvider cmdlet ile –Name parametresine Chocolatey değerini göstererek sadece ilgili paket sağlayıcı bilgilerini de aşağıdaki şekildeki gibi sorgulayabilirsiniz.

clip_image025

Artık paketleri sorgulayabileceğimiz bir paket sağlayıcımız oldu. Şimdi bu paket sağlayıcıyı kullanarak paketlerin keşfine ya da sorgulanmasına başlayabiliriz.

Öncelikle yukarıda “0” sonucunu aldığımız aşağıdaki komutu çalıştırarak an itibariyle paket kaynağında kaç adet paketin olduğunun tekrar ölçümünü yapıyoruz:

clip_image027

Paket kaynağında toplamda 2697 adet paket olduğu istatistiksel bilgisini almış olduk.

Paket sorgulaması için Find-Package cmdlet kullanıyoruz. Aşağıdaki şekilde görülen komut ile Chocolatey paket sağlayıcıyı kullanarak ismi 7Zip olan bir paket var mı sorguladığımızda paketle ilgili bilgiler karşımıza gelecektir.

clip_image029

Benzer şekilde yine aşağıdaki şekilde görülen komut ile Chocolatey paket sağlayıcıyı kullanarak ismi Zoomit ve Notepad2 olan paketlerin var olup olmadığını sorguladığımızda paketle ilgili bilgiler yine karşımıza gelecektir.

clip_image031

Aşağıdaki komut kullanılarak Chocolatey paket sağlayıcı ile kullanılabilen tüm paketlerin listesini grafiksel bir ızgara listeleme nesnesine listeleyebiliriz.

clip_image033

clip_image034

İsteğe bağlı olarak Export-Csv cmdlet ile paket listesini bir CSV dosyasına da çıktı olarak aktarabilirsiniz.

clip_image036

Paketlerin Yüklenmesi:

Paketi keşfedip bulduktan sonra basit bir biçimde herhangi bir paket kaynağı belirtmeden versiyon bilgisini belirterek ilgili paketi doğru kaynaktan bilgisayarınıza yükleyebilirsiniz.

clip_image038

Yukarıdaki şekilde de görüldüğü üzere Find-Package ile 7Zip isimli paket bulunduktan sonra hemen altındaki satırda Install-Package cmdlet kullanılarak yükleme işlemi gerçekleştiriliyor. Yükleme başlamadan paket kaynağının henüz güvenilen bir kaynak olarak atanmadığını, yine de paketi bu kaynaktan yüklemek isteyip istemediğimizle ilgili onayı karşımıza getiriyor. “Y” ile onaylıyoruz ve paket yükleme süreci başlayarak tamamlanıyor.

Yükleme sonrası get-package cmdlet ile yüklü paket listesine baktığımızda 7Zip paketinin listelendiğini göreceksiniz.

clip_image040

Benzer şekilde Zoomit ve Notepad2 paketlerini de yüklüyoruz:

clip_image042

Paketleri yüklerken sizden onay almasını isterseniz de –Confirm parametresi ile birlikte kullanabilirsiniz:

clip_image044

Paket Envanterinin Sorgulanması:

Yerel bilgisayarınızda yüklü paketlerin kontrolü için Get-Package cmdlet kullanabilirsiniz.

Yukarıdaki yüklemeler sonrasında get-package cmdlet ile yüklü paket listesine baktığımızda yüklenen tüm paketlerin listede geldiğini göreceksiniz:

clip_image046

Get-Package cmdlet ile çok fazla paket yüklü olduğu durumlarda –Provider parametresi kullanılarak paket sağlayıcıya göre de filtreleme yapılabilir.

clip_image048

Aşağıdaki şekilde kullanımda olduğu gibi “Programs” isimli özel bir sağlayıcı ile kayıtlı MSI paketleri kullanılarak yüklenen paketler listelenebilir. –IncludeWindowsInstaller parametresi ile Add-Remove Programs ile karşılaştırılarak kaydedilip yüklenen MSI paketleri listelenir.

clip_image050

Uygulamaların Çalıştırılması:

Paket yükleme işlemi tamamlandıktan sonra aşağıdaki şekilde görüldüğü gibi ilgili uygulamayı çalıştırabilirsiniz:

clip_image052

Modül Yükleme:

PackageManagement modülü kullanılarak çeşitli paket kaynakları kaydedilebilir. Varsayılan olarak PSModule sağlayıcısını kullanan PSGallery ile isteğe bağlı PowerShell modülleri kolayca indirilip yüklenebilir.

clip_image054

Örneğin yukarıdaki şekilde görüldüğü gibi PSCX paketi kullanılarak ilgili modül yüklenmiştir.

Paketlerin Kaldırılması:

Yüklü olan bir paketi kaldırmak için de Uninstall-Package cmdlet kullanıyoruz. Örneğin; yüklü olan Notepad2 paketini kaldırmak için aşağıdaki komutu çalıştırıyoruz:

clip_image056

Kaldırma işlemi başarıyla tamamlandıktan sonra Get-Package cmdlet ile kontrol ettiğimizde artık Notepad2 cmdlet listelenmediğini göreceksiniz.

Paket Kaynağının Güvenilir Olarak Atanması:

Paketleri indirdiğimiz paket kaynakları varsayılan olarak güvenilir olarak yapılandırılmamıştır. Bundan dolayı da ilgili kaynaktan her paket indirdiğinizde “güvenlilir olarak atanmamış, yine de bu kaynaktan paket yüklemek istiyormusunuz?” diye soracaktır.

clip_image058

Bu uyarı ile karşılaşmamak için aşağıdaki şekilde görüldüğü gibi Set-PackageSource cmdlet ile paket kaynağı güvenilir bir kaynak olarak atanabilir.

clip_image060

Böylece Chocolatey isimli paket kaynağı güvenilen bir kaynak olarak belirlendi ve bundan böyle bu kaynaktan paket indirirken güvenilirlik ile ilgili uyarı mesajı almıyor olacağız.

Paket Kaynağının Kaldırılması:

Daha önce paket sağlayıcısı için atanmış olan bir paket kaynağını kaldırmak ya da silmek için de Unregister-PackageSource cmdlet’i aşağıdaki şekilde kullanıyoruz:

clip_image062

Bu komut sonrasında tekrar paket kaynakları listesini sorgulayınca herhangi bir paket kaynağının bulunamadığı uyarısı gelecektir.

clip_image064

Paket Kaynağının Kaydedilmesi:

Herhangi bir paket sağlayıcısına bir paket kaynağını kaydetmek için de Register-PackageSource cmdlet kullanıyoruz.

clip_image066

ÖZETLE

Microsoft Windows 10 ve Windows Server 2016 geliştirme süreci devam ediyor. Ve bu süreçte her iki işletim sistemi ile beraber çok sayıda yenilik bizleri bekliyor. Bu yeniliklerden bir tanesi de Windows Management Framework 5.0 ile birlikte öne çıkan “Paket Yönetimi”. Bu makalemizde detaylı olarak Windows PowerShell 5.0 ile paket yönetimini ele aldık. Yeni nesil işletim sistemlerinde gelen yenilikleri incelemeye devam edeceğimiz bir sonraki makalemizde görüşmek dileğiyle, hoşçakalın.

 

Mesut ALADAĞ.
Microsoft MVP, MCT

www.mesutaladag.com
/ www.twitter.com/mesutaladag

 

İlgili Makaleler

Bir Yorum

  1. Merhaba,
    Bilgisayarda bulunan tüm programların listesini alacak şekilde yanında şuan ki sürümleri ve yeni sürümlerini gösterdiği bir komut vardı aklıma gelmiyor da bilen birisi var mıdır?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu