C# Geliştiricileri için Linux Paketlerini Güncelleme
Linux üzerinde C# uygulamaları geliştirirken, sistem paketleriniz yalnızca işletim sisteminden daha fazlasını etkiler. Web uygulamalarını test etmek için tarayıcı motorları, .NET SDK, paylaşılan kitaplıklar ve güvenlik yamaları, hepsi paket yöneticisi aracılığıyla gelir. Bayat paketler çalıştırmak yapı sorunlarına, güvenlik açıklarına veya en son .NET özellikleriyle uyumsuzluğa neden olabilir.
Tim Corey, "C# Geliştiricileri İçin Linux Paketlerini Güncelleme" başlıklı videosunda, daha büyük C# on Linux serisinin bir parçası olarak grafiksel Güncelleme Yönetici'si ve komut satırını kullanarak bir Linux kurulumunu güncel tutmanın nasıl bir yolculuk olduğunu anlatıyor. Bu makalede her iki yöntemi de kapsayacağız, her komutun aslında ne yaptığını açıklayacağız ve sisteminizi güncel tutmanın özellikle .NET geliştirme için neden önemli olduğunu açıklayacağız.
Linux Paket Yönetimi ile Windows Farklılıkları
[0:00 - 0:38] Tim, Windows'dan gelen geliştiriciler için yaygın bir engeli ele alarak başlar. Windows'ta her uygulama genellikle kendi güncellemelerini yönetir. Visual Studio, Edge'den bağımsız olarak güncellemeleri kontrol eder, ki bu da yazıcı sürücülerinizden ayrı olarak güncellenir. Makinenize yüklenen her şeyi izleyen tek bir sistem yoktur.
Linux merkezi bir yaklaşımı benimser. apt (Gelişmiş Paket Aracı) gibi bir paket yöneticisi, resmi depolardan yüklenen her bir yazılım parçasını izler. Bir güncelleme çalıştırdığınızda, apt her kurulu paket için depoları aynı anda sorgular. Tarayıcı güncellemeleri, kütüphane yamaları, SDK yükseltmeleri ve güvenlik düzeltmeleri hepsi aynı hat üzerinden gelir.
C# geliştiricileri için bunun gerçek etkileri vardır. .NET çalışma zamanınız, HTTPS çağrılarınızın bağlı olduğu OpenSSL kütüphaneleri ve uygulamalarınızın karşı link verdiği sistem seviyesindeki bağımlılıklar bu sistem tarafından yönetilir. Eğer ilk kez Windows dışı bir platformda C# ile başlıyorsanız, paket yöneticisinin nasıl çalıştığını bilmek, daha sonra gizemli derleme hatalarını araştırmanızın önüne geçer. Tek bir apt upgrade, Windows üzerinde birçok ayrı güncelleyici arasında koordine etmeniz gereken tüm yığını hizalanmış tutar.
GUI: Güncelleme Yöneticisi
[0:38 - 1:34] Görsel bir iş akışını tercih eden geliştiriciler için Tim, önce Güncelleme Yöneticisi'ni anlatıyor. Linux Mint, Windows Update'e benzer şekilde çalışan bir yönetici içeriyor. Görev çubuğunun sağ alt köşesindeki küçük bir simge onu açar ve neyin güncelleneceğini tam olarak göreceksiniz: Microsoft Edge, Firefox, curl, libssh ve daha fazlası. Her bir giriş, mevcut sürümü, yeni sürümü ve indirme boyutunu gösterir.
Tüm paketler varsayılan olarak seçilir, ancak belirli bir güncellemeyi atlamak istiyorsanız, öğeleri işaretini kaldırabilirsiniz. Bu, projeniz için belirli bir aracın sürümünün gerekli olduğu ve sürümün sprint ortasında değişmesini istemediğiniz durumlarda faydalıdır.
"Güncellemeleri Yükle"ye tıklarsınız, parolanızı istenildiğinde girersiniz ve sürecin tamamlanmasını beklersiniz. Şifre istemi, sistem paketlerini değiştirme işleminin yönetsel bir işlem olmasından dolayı vardır; bunu bir sonraki bölümde ele alacağız.
GUI'nin iyi yaptığı bir şey: güncellemeleri risk seviyesine göre sınıflandırır ve sistem kararlılığını etkileyebilecek değişiklikler konusunda daha temkinli davranır. Linux'a yeni başlayan ve ayrıntılarla uğraşmadan ortamını sağlıklı tutmak isteyen bir geliştirici için Güncelleme Yöneticisi sağlam bir varsayılandır.
sudo'yu Anlamak
[1:34 - 1:51] Terminale geçmeden önce, Tim her komut satırı paket işleminde göründüğü için sudo hakkında bir açıklama yapıyor. Yazmaya başlamadan önce ne yaptığını anlamak faydalı olacaktır. Çoğu Windows kullanıcı hesabı varsayılan olarak yönetici hesabıdır ve bu, sistem yazılımını yüklemek, kaldırmak ve değiştirmek için tam erişim sağlar. Linux tam tersini uygular: Hesabınız sınırlı izinlerle çalışır ve yalnızca gerektiğinde yönetici ayrıcalıklarına yükseltirsiniz.
Bir komutu sudo ile başlatmak, kimliğinizi doğrulamak için bir şifre istemini tetikler. Kimlik doğrulaması tamamlandığında, o komut root yetkileriyle çalışır ve ardından izinler normale döner. Paket yönetimi (yazılım yükleme, kaldırma veya güncelleme), makinedeki her uygulamayı etkileyebilecek bir sistem düzeyi işlemdir, bu yüzden ifade edilen sudo öneki, başka bir şey yapmayı planladığınızda sistem paketlerini kazara değiştirmenizi önler.
Windows kullandıysanız, bunu bir uygulamanın tamamını değil, sadece bireysel komutları yükselttiğiniz Linux'ta Yönetici olarak Visual Studio'yu çalıştırmaya benzetebilirsiniz. Bu, daha hedeflenmiş bir modeldir.
Komut Satırı: apt update
[1:51 - 2:28] sudo kapsamına alındıktan sonra, Tim terminale geçiyor. Orada çalışmak, güncelleme süreci üzerinde daha ayrıntılı bir kontrol sağlar ve sırayla üç komutu açıklar. Her birinin ne yaptığını anlamak önemlidir çünkü, onun da belirttiği gibi, adlandırma yanıltıcıdır.
İlk komut:
sudo apt updatesudo apt updateYaygın bir varsayım, bu komutun paketleri güncellediğidir. Etmez. apt update, mevcut yazilimlarin yerel bir katalogu olan paket dizinini yeniler. Zamanla bu katalog eski hale gelir, çünkü bakıcılar yeni sürümler yayınlarlar, bu yüzden bu komutu çalıştırmak, depolama sunucularından en son sürümü indirir. Makinenizde yazılım değişikliği yok. Bu yalnızca bilgi toplama adımıdır.
Çalıştırdıktan sonra, apt daha yeni sürümleri mevcut olan kaç paketin olduğunu raporlar. Herhangi bir değişiklik yapmadan önce tam listeyi inceleyebilirsiniz:
apt list --upgradeableapt list --upgradeableBu, daha yeni bir sürümü mevcut olan her paketi satır satır gösterir ve mevcut ile yeni sürüm numaralarını içerir. Bu makinede .NET ile çalışıyorsanız, burada uygulamanızın bağlı olduğu SDK güncellemelerini, çalışma zamanı yamalarını veya kütüphanelerdeki değişiklikleri fark edebilirsiniz. Makinenizde hangi .NET sürümlerinin kullanıldığını anlamak, belirli bir yükseltmenin güvenli bir şekilde uygulanıp uygulanamayacağına veya önce test edilmesi gerekip gerekmediğine karar vermenize yardımcı olur.
Komut Satırı: apt upgrade
[3:01 - 3:40] Dizin yenilendikten sonra, Tim daha yeni sürümleri gerçekten yükleyen ikinci komuta geçiyor:
sudo apt upgradesudo apt upgradeİsimlendirmeye dikkat edin: update en son bilgileri alır, upgrade ise paketleri değiştiren şeydir. O iki aşamalı ayrım kasıtlıdır. "Nelerin mevcut olduğunu kontrol et" adımını, "değişiklikleri uygula" adımından ayırarak, bir şeyler taşınmadan önce gözden geçirmek, araştırmak veya yedeklemek için size zaman tanır.
Alt yapıda, upgrade ne yapacağı ve ne yapmayacağı konusunda katı kurallara uyar. Bu, sisteminizde zaten bulunan paketlerin daha yeni sürümlerini indirir ve yükler, ancak mevcut bir paketi asla kaldırmaz veya önceden bulunmayan yeni bir paketi yüklemez. Yeni bir sürüm, yüklü olmayan bir bağımlılığa ihtiyaç duyduğunda, upgrade yeni bağımlılığı otomatik olarak getirmek yerine o paketi geri tutar.
Olumlu yanı öngörülebilirliktir. .NET yığınınızı güncel tutmak önemlidir, ancak bunu kontrollü bir şekilde yapmak da önemlidir. Daha fazla bilgi için buraya tiklayin. Sistem, neyin değişeceğine dair bir özetle sizi uyarır ve devam etmeden önce onayınızı ister, böylece sizin açık izniniz olmadan hiçbir şey gerçekleşmez.
Komut Satırı: apt full-upgrade
[3:40 - 4:19] Güvenli güncellemeler uygulandıktan sonra, Tim her şeyi upgrade kasten geri tuttuğu üçüncü komutu tanıtıyor:
sudo apt full-upgradesudo apt full-upgradefull-upgrade, upgrade'un bilerek kaçındığı durumları ele alır. Bir paket güncellemesi, yeni bağımlılıkların yüklenmesini veya çakışan paketlerin kaldırılmasını gerektiriyorsa, full-upgrade bunu yapacaktır. Çekirdek güncellemeleri, ana sistem kütüphanesi değişiklikleri ve işletim sistemi seviyesindeki yamalar burada uygulanır.
Bu işlemi ayrı bir adım olarak çalıştırmak, size katmanlı bir yaklaşım sunar. Eğer karmaşık bağımlılık çözümlemesi sırasında bir şeyler ters giderse, zaten basit güncellemeleri uyguladınız ve sadece daha karmaşık olanları gidermeniz gerekiyor.
C# uygulamalarını Linux'ta derleyen bir derleme hattını yöneten ekipler için, bu aşamalı iş akışı özellikle önemlidir. Otomatik bir CI/CD ortamında, stabilite için yalnızca apt upgrade çalıştırmayı tercih edebilirsiniz ve full-upgrade ise, daha derin sistem değişikliklerinden sonra her şeyin hala derlendiğini ve geçtiğini doğrulayabileceğiniz planlı bakım pencereleri için saklanır.
Paket Sayılarının Neden Farklı Olduğu
[2:28 - 3:01] İnsanları sıkça yanıltan bir şey: Güncelleme Yöneticisi 23 güncelleme gösterirken, komut satırı 79 paket rapor edebilir. Bunlar farklı güncelleme setleri değil; farklı sayılan aynı sistem.
GUI, ilgili paketleri mantıksal birimlere gruplar. Güncelleme Yöneticisi'ndeki tek bir "Firefox güncellemesi", aslında Firefox ikili dosyasını, yerelleştirme paketini, bağımlı olduğu paylaşılan kütüphaneleri ve her biri apt tarafından ayrı bir paket olarak izlenen bir yapılandırma paketini içerebilir. Yani, Update Manager'in tek bir güncelleme olarak sunduğunu, apt dört veya beş ayrı paket yükseltmesi olarak listeler.
Bunu öğrendikten sonra, çelişki şaşırtıcı olmaktan çıkar. Bir kişi, "100 paketi güncellemem gerekiyordu" diyebilir, ancak Güncelleme Yöneticiniz bu değişiklikleri 30 güncelleme olarak gösterir.
Flatpak: Ayrı Bir Paket Yöneticisi
[5:56 - 6:41] Gözden kaçırılması kolay bir durum var: Linux'ta birden fazla paket yöneticisi kurulabilir ve apt yalnızca kendi yönettiği paketleri bilir. Flatpak, bu tür alternatiflerden biridir; kendi bağımlılıklarıyla uygulamaları paketleyen ve onları sistemin geri kalanından izole eden taban tabanlı bir sistemdir.
Flatpak ile yazılım yüklediyseniz, apt upgrade bu uygulamalara dokunmaz. Onları ayrı ayrı güncellemeniz gerekiyor:
flatpak list
flatpak updateflatpak list
flatpak updateflatpak list komutu, Flatpak aracılığıyla yüklenmiş olan her şeyi gösterir ve flatpak update bu paketleri en son sürümlerine getirir. IDEs, veritabanı araçları veya iletişim uygulamalarını yüklediyseniz, özellikle bunları düzenli olarak kontrol etmek iyi bir uygulamadır.
Linux'ta yazılım, apt, Flatpak, Snap veya manuel kurulumlar aracılığıyla gelebilir. Her birinin kendi güncelleme mekanizması vardır, bu nedenle kapsamlı bir güncelleme rutini hepsini hesaba katmalıdır. Her uygulamanın kendi güncelleyicisiyle gönderilmesine alışık iseniz, burada ana fark, hangi paket yöneticisinin hangi yazılım parçasına sahip olduğunu bilmeniz ve her biri için doğru güncelleme komutunu çalıştırmanız gerektiğidir.
Hangi Yöntemi Kullanmalısınız?
Tim'in görüşü, her iki yaklaşımın da geçerli olduğu ve doğru seçimin iş akışınıza bağlı olduğudur. Görsel bir arayüzle daha rahat ediyorsanız, Güncelleme Yöneticisi, apt'in yaptığı güncellemeleri nokta ve tıkla arayüzü aracılığıyla yönetir. Komutları ezberlemenize veya adımları yanlış sırayla çalıştırma endişesi duymanıza gerek yok. Bununla birlikte, komut satırına alışmak için iyi bir neden var: otomasyon. Haftalık olarak cron kullanarak çalışmasını zamanlamak ve tam güncelleme sırasını çalıştıran basit bir kabuk scripti oluşturabilirsiniz. Sisteminizin güncel kalmasını sağlarken sizin bunu düşünmenize gerek bırakmayan üç satırlık bir komut dosyası, zamanla artan küçük bir yatırımdır.
Otomasyonun ötesinde, komut satırı belirli yükseltme seviyelerini duruma bağlı olarak seçici bir şekilde uygulamanıza veya çıktıyı analiz için diğer araçlara aktarmanıza olanak tanır. Bu seçenekler GUI aracılığıyla mevcut değil.
Yüklü Paketlerinizi Denetleme
Güncelleme sürecinin ayrıca kullanışlı bir yan etkisi vardır: güncelleme listenizi gözden geçirmek, sisteminizde kurulu olanların bir denetimi olarak da hizmet eder. Güncelleme sırasında bir paket gördüğünüzde, hala ihtiyaçınız olup olmadığını sormak faydalı olabilir.
Güncelleme listesinde genellikle Edge kullanırken Firefox veya tam tersi bir durumu görebilirsiniz. Web uygulamalarının çapraz tarayıcı testi için iki tarayıcı kurulu tutmak mantıklıdır, ancak daha geniş ilke, güncelleme listesinin geliştirme ortamınızın tam ayak izini ortaya koymasıdır. Önceki projeden kalan eski araçlar, bağımlılık olarak çekilen ve asla temizlenmeyen geliştirme kütüphaneleri, altı ay önce yüklediğinizi unuttuğunuz paketler: hepsi burada ortaya çıkar.
Böyle bir düzenlilik, beklediğinizden daha fazla karşılığını verir. Temiz bir geliştirme ortamı, ekip üyeleri arasında çoğaltılması daha kolay, konteynerleştirilmesi daha basit ve "benim makinemde çalışıyor" hatalarını üretme olasılığı daha düşüktür. Linux kutunuzda Dockerfile'ınızın içermediği paketler yüklüyse, üretimde mevcut olmayacak bir şeye güveniyor olabilirsiniz. C# uygulamalarını Docker'a dağıtma konusunda bilgi sahibi olmak, yerel paketleriniz ile üretim ortamınız arasındaki bu bağı çok daha somut hale getirir.
Sonuç
[7:54 - 8:25] Tim'in gösterdiği gibi, süreç — Update Manager veya komut satırı aracılığıyla — en fazla birkaç dakika sürer ve size işletim sistemi seviyesindeki teknik borç birikiminden korur. Bunu arada bir yapılan bir iş olmaktan çıkarıp haftalık bir alışkanlık haline getirmek, geliştirme araçlarınızı, çalışma zamanı bağımlılıklarınızı ve sistem kütüphanelerinizi hizalı tutar ve bu hizalama, çapraz platform C# geliştirmenin sinir bozucu olmaktan çıkarıp güvenilir hale gelmesini sağlar.
Adım adım tam kılavuz için, Tim Corey'nin YouTube kanalındaki videosunu inceleyin.

