Hayat kısa

Windows işletim sistemi kullanan bir bilgisayara uygulama kurmak sence de çok sıkıcı değil mi? Bir uygulamaya ihtiyaç duyduğunda onu arama motorunda aratmalı, uygun bir indirme bağlantısı bulmalı, bilgisayarına indirmeli, indirdiğin klasörde kurulumu bulmalı ve ona çift tıklamalısın, bitti mi? Hayır bitmedi. Sıra geldi kurulum surecinin next, next ... lerine. Hayat bu süreçle zaman kaybedecek kadar uzun mu?

Birde şu senaryoyu düşün farklı müşteriler ile onların sana tahsis ettiği bilgisayarlarda çalışmak zorundasın ve her seferinde sık kullandığın araçlar için bu süreci işletiyorsun. Ne??? Sen tüm uygulamalarını tek bir yere topladın indirirken zaman kaybetmeyecek misin? Yooo dostum yooo ben hala hepsine tek tek çift tıklayıp next, next, next düğmesine tıklamak için fazla tembelim, üzgünüm.

Tüm bu sıkıcı süreci bir paket yönetim aracı kullanarak tek bir komut satırına indirgemeye ne dersin?

choco install googlechrome

Paket yönetim araçları

Paket yönetim araçları, işletim sisteminde uygulama kurma, güncelleme, kaldırma ve uygulama ayarları yapma sürecini otomatize etmeye yarar.

Eğer Ubuntu gibi Debian tabanlı bir Linux işletim sistemi kullanıyorsan 'apt', Redhat için 'rpm', macOs icin 'homebrew' kullanabilirsin. Eğer bir Windows kullanıcısıysan platformun için uygun popüler iki paket yöneticisi Scoop ve Chocolatey'dir. Bu yazımda Chocolatey paket yöneticisinin kurulumundan ve kullanımından bahsedeceğim.

Cohocolatey Kurulumu

Cohocolatey paket yönetim aracını kurmak da kullanmak kadar kolay. Yalnızca 'powershell' komut yönetim sistemini yönetici olarak başlat ve asağıdaki komut satırını çalıştır.

Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'));

Komut satırına dikkat edersen öncelikle şu anki process için execution policy'mi ByPass olarak tanımlıyorum (Powersehll'i bir daha actığında Execution policy'i eski haline dönecektir.) ki Chocolatey kurulumu için gerekli powershell script'ini indirdikten sonra calştırabilsin. Eğer güvenlik ile ilgili kuşkuların varsa buradan 'Install with PowerShell.exe' başlığı altında gerekli açıklamaları okuyabilir ya da indirilen script'i açarak ne yaptığını inceleyebilirsin.

Kurulumu kontrol etmek için aşağıdaki komut satırını çalıştırabilirsin. Eğer komut size bir versiyon numarası dönüyorsa kurulum başarılı bir şekilde gerçekleşmiş demektir.

choco --version

Cohocolatey Kullanımı

Kurulumu tamamladığımıza göre hadi Chocolatey kullanarak uygulamalarımızı kurmaya başlayalım. Uygulama kurulumunu gerçekleştirmek için kuracağamız uygulamanın id'sini bilmemiz gerekiyor bunun için choco komut satırı uygulamasını kullanabiliriz fakat daha ayrıntılı ve okunabilir bilgiye ulaşmak için Chocolatey uygulama galerisinde arama yapılabilir. Bir sayfaya gidip arama yapmak mı? Yapılacak bir iş daha bu hiç hoşuma gitmedi, bu konuya yazının sonununda tekrar dönelim.

Diyelim ki bilgisayarımıza firefox internet tarayıcısı kurmamız gerekiyor, bunun için gerekli id'yi arattığımızda şaşırtıcı şekilde uygulama id'sinin uygulama ismiyle aynı olduğunu göreceğiz yani firefox için id gene firefox. Artık tüm gerekli bilgileri bildiğimize göre hadi uygulamayı bilgisayarımıza kuralım.

choco install firefox --version 67.0.2 -y

Kurulumu yaparken kurulum komutuna fazladan versiyon parametresi ekledik. Versiyon parametresi tamamen opsiyoneldir eğer eklenmezse uygulamanın son versiyonu kurulacaktir. Ben bu yazıyı yazarken firefox internet tarayacısının son versiyonu 67.0.3'tü, onun yerine bir önceki versiyonu indirdim çünkü bazen kullandığımız uygulamaların belli bir versiyonunda kalmak isteyebiliriz (Örneğin kurumsal müşterimiz tüm firma içerisinde bu versiyonu kullandığını ve güvenlik sebebiyle uygulamayı güncellemediğini söyleyebilir. Bu durumda testlerimizi tabi ki müşteri versiyonu ile de yapmak iyi bir fikirdir.) ve en önemlisi yazının ilerleyen kısımlarında güncel olmayan uygulamalarımızı nasıl listeleyip güncelleyebileceğimizden bahsedeceğim.

Komut tamamlandığında artık bilgisayarında firefox internet tarayıcısının kurulu olduğunu göreceksin. Peki nedir bu sonda ki '-y'? Uygulamanın kurulurken soracağı, "uygulama sözleşmesini kabul ediyor musunuz?" gibi tüm sorulara evet cevabını vermemizi sağlayan komuttur. Eğer '-y' parametresini komutu çalıştırırken kullanmazsak uygulama durup soruyu yanıtlamamızı bekleyecektir. Bu parametreyi kullanmadan kurulum yaparak ne olduğunu gözlemleyebilirsin.

Choco ile bilgisayarımızda kurulu olan uygulamaları listeleme, güncelleme ve kaldırma

Chocolatey kullanarak kurduğumuz mevcut uyugulamaları listelemek için aşağıdaki komut satırı kullanılabilir.

choco list --local-only

Sadece güncel olmayan uygulamaları listelemek istersek aşağıdaki komut yardımcımız olacaktır. Eğer yukarıda bahsettiğim gibi firefox'un güncel olmayan bir versiyonunu kurduysan bu komutun gösterdiği listede firefox'u görmen gerekiyor.

choco outdated

Artık güncel olmayan uygulamalar hakkında bilgin olduğuna göre sıra geldi onları güncellemeye. Görüntülenen güncel olmayan uygulamalar listesinde güncellemek istediğin uygulamanın id'sini alarak asağıdaki komutu calıştırabilirsin.

choco upgrade firefox -y

## Tüm uygulamarı tek komutla güncellemek için
## choco upgrade all

## Tüm uygulamarı bazıları hariç güncellemek için
## choco upgrade all --except="'googlechrome,nodejs'"

Bazen uygulamadan tamamen kurtulmak isteriz, işte bu durumda uygulamayı bilgisayarımızdan kaldırmak için aşağıdaki komutu kullanabiliriz.

choco uninstall firefox -y

Hızlı yaşamalı

Eğer benim gibi sık sık farklı bilgisayarlarla çalışman gereken bir iş yapıyorsan tüm sık kullandığın araçları tek bir script'de toplayabilir ve yeni takımına katıldığın ilk gün sabah tanışma toplantısına çağrılmadan hemen önce script'i başlatabilirsin. Toplantı sonunda "zaten bilgisayarını kurman bir gününü alır." cümlesi geldiğinde "kurulumum çoktan tamamlandı" diye karşılık verebilirsin. :) Aşağıda müşterilerime ilk defa gittiğimde takımın kullandığı teknolojiler neyse ona göre çok az değiştirerek kullandığım script örneğini görebilirsin. Böyle bir script'e sahip olmak ayrıca her seferinde yazılımların id'sini arayıp bulma derdinden de seni kurataracaktır. Ben de daha sonraki yazılarımda eğer uygulama kurulması gereken bir konuda yazıyorsam uygulamanın Chocolatey kurulum komutlarını paylaşacağım (Benim her teknik yazıda, "Şimdi şu sayfaya giderek ilgili bağlantıdan uygulamayı indirip kuralım." yazmaya üşeneceğimi anlamışsınızdır :) ).

### windowsSetup.ps1 olarak dosyayı kaydedin ve powershell ile ihtiyaç duyduğunuz bilgisayarda çalıştırın.
Set-ExecutionPolicy Bypass -Scope Process -Force;
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'));

# Install Desktop tools
choco install googlechrome -y
choco install firefox -y
choco install cmder -y
## Install Developer Tools
choco install git -y
choco install postman -y
choco install nodejs -y
choco install visualstudiocode -y
choco install slack -y
choco install visualstudio2019professional -y
choco install azure-cli -y
choco install azurepowershell -y
choco install docker-desktop -y
choco install docker-cli -y
choco install docker-compose -y
choco install sql-server-management-studio -y

Son söz

Gördüğünüz gibi Chocolatey paket yöneticisini kullanmanız için bilgisayar korsanı ya da yazılım geliştirme uzmanı olmanıza gerek yok, yeterince tembel olmanız ve sürekli tekrarlanan işlerden hoşlanmıyor olmanız yeterli.

Bir yazılım takımı hakkındaki ilk izlenim benim için takıma katılım aşamasında oluşur. Sizi ne kadar hızlı adapte edebiliyorlarsa o kadar olgunlaşmış süreçeleri vardır. Eğer bilgisayarımın başına oturduğum anda bana yollanan bir dokümandan (sharepoint, confluence ya da bir Readme.md farketmez) zorlanmadan tüm ihtiyacım olan araçları kurup lokal geliştirme ortamımı çalıştırabiliyorsam hele ki bunların tüm bıktırıcı olan kısımlarını otomatize edilmiş script'lerle yapabiliyorsam hem ilk günden kendime güvenle işe başlar hem de büyük ihtimalle iyi bir takımda olduğumu bilirim.

Eğer bir takıma katılır katılmaz ona katkı sağlamak istiyorsan ve lokal ortamın nasıl kurulacağı net değilse ve bu tarz script'leri bulunmuyorsa, insanlara sorarak kurulum süreçlerini çözerken bir yandan bunları dokümante edip, gerekli script'leri hazirlayarak paylaşırsan ilk güne güzel bir değer katarak başlamış olursun. Hele bir de ihtiyaç duyulan 3. parti servislerin docker (Bu başka bir yazımın konusu olsun) ile ayağa kaldırılmasını sağlarsan gelsin övgüler, gelsin teşekkürler.