NixOS'te Karşılaştığım En Sıra Dışı Hata: 0-Byte Boyutunda X11 Paketi ve NixOS'in Kurtarıcı Gücü
Linux dünyasında işletim sisteminin aniden çökmesi, açılmaması veya kritik paketlerin bozulması gibi durumlar genellikle saatler süren ve insanı çileden çıkaran hata ayıklama süreçlerine yol açar. Geçtiğimiz günlerde NixOS kullanırken tam olarak bu cinsten, ancak NixOS'in benzersiz mimarisi sayesinde bilgisayarımı kullanmaya devam edebilmemi sağlayan çok ilginç bir hata yaşadım.
Bu yazıda, hem yaşadığım bu garip 0-byte X11 paketi hatasını, hem NixOS'e geçiş hikayemi, hem de bu sistemin kritik anlarda hayatı nasıl kurtardığını paylaşacağım.
Arch Linux'tan NixOS'e: Neden Geçtim?
NixOS öncesinde uzun süre Arch Linux kullandım. Her zaman güncel paketleri almayı (rolling-release) ve sistem üzerinde tam kontrol sahibi olmayı çok seviyordum. Fakat Arch Linux'ta kronikleşen bir problemim vardı: Bir gün aniden pacman -Syu ile sistemi güncelliyordum ve bilgisayarı yeniden başlattığımda siyah ekranla karşılaşıyordum. Sistemi tekrar ayağa kaldırmak bazen saatlerimi alıyordu.
- sınıf öğrencisiyim; okulum, sınavlarım ve asıl odaklanmak istediğim kendi yazılım projelerim varken, işletim sistemini tamir etmekle vakit kaybetmek motivasyonumu inanılmaz derecede düşürüyordu. Hem rolling-release mantığından vazgeçmeyeceğim hem de Arch kadar kırılgan olmayan bir dağıtıma geçmem gerekiyordu.
openSUSE gibi alternatifler de masadaydı ama ben daha önce hakkında çok şey duyduğum fakat derinlemesine bilmediğim NixOS'i denemeye karar verdim. Konfigürasyon dosyasındaki her değişiklikte sisteme yeni bir sürüm (generation) ekleme mantığı beni çok heyecanlandırmıştı. Yaklaşık 9 ay önce bu kararı verdim ve NixOS dünyasına adım attım.
NixOS'e Başlarken Zaman Kazanmak
NixOS'e sıfırdan başlamak ve tüm konfigürasyonu kendi başına yazmak gerçekten çok zordur. Ben de bu zorluğu aşmak için mantıklı bir karar verdim: Sıfırdan başlamak yerine GitHub'da gözüme kestirdiğim, güzelce yapılandırılmış hazır bir NixOS konfigürasyonunu (dotfiles) klonladım ve kendi sistemime kurdum. Daha sonra bu hazır yapıyı kendi ihtiyaçlarıma göre özelleştirdim. Bu sayede sistemi öğrenirken vakit kaybetmedim ve doğrudan projelerime odaklanabildim.
NixOS'in en büyük avantajları şunlar:
- Tek Bir Yapılandırma Dosyası: Tüm sisteminiz, uygulamalarınız ve ayarlarınız tek bir konfigürasyondan ibaret. Dosyanızı paylaştığınızda arkadaşınızın bilgisayarı sizinkiyle birebir aynı oluyor. Veya format attıktan sonra bu dosyayı yükleyerek saniyeler içinde eski sisteminize kavuşabiliyorsunuz.
- Devasa Paket Havuzu: NixOS, Arch Linux ile birlikte en çok pakete sahip olan dağıtım. Toplamda 200.000'den fazla paket barındırıyor ve bu alanda şu an lider konumda.
Ancak bu stabilite cenneti, iki gün öncesine kadar sürdü.
Gizemli Hata: Kurulu Olan Paket Nasıl "Yok" Olabilir?
Konfigürasyon dosyamda bazı değişiklikler yapıp yeni paketler ekledim ve sistemi yeniden derlemek (rebuild etmek) istedim. Ancak sistem, yeni eklediğim paketlerin kurulabilmesi için gerekli olan başka bir paketin sistemde bulunmadığı uyarısını vererek derlemeyi yarıda kesti.
İşin tuhafı, sistemin "yok" dediği paket zaten halihazırda bilgisayarımda kuruluydu ve aktif olarak kullanıyordum. Hatayı 3 gün boyunca konfigürasyon dosyamdaki satırlarda aradım. Dosyayı defalarca inceledim ama hiçbir hata bulamadım. Derleme yapılamadığı için yeni NixOS sürümümü oluşturamıyor, dolayısıyla çalışmam için gereken yeni paketleri yükleyemiyordum. 3 günün sonunda kendime şu dersi verdim: "Eğer hatayı 3 gündür aynı yerde arayıp bulamıyorsan, yanlış yerde arıyorsun demektir."
Odağımı konfigürasyon dosyasından çıkarıp doğrudan sistemdeki paketin kendisine çevirdim. Ve karşılaştığım manzara şok ediciydi:
Mevzu bahis kritik X11 paketi sistemde yüklü görünüyordu ama içeriği tamamen boştu! Dosya boyutu tam olarak 0 byte idi ve son değiştirilme tarihi Unix zaman başlangıcı olan 1970 yılı olarak görünüyordu. Paketin içeriği bir şekilde tamamen silinmiş, içi boşalmıştı. Bu yüzden sistem paketi bulamıyor ve derlemeyi durduruyordu. Paketi tamir edip yeniden yüklediğimde sorun anında çözüldü.
NixOS Mucizesi: X11 Bozukken Bilgisayar Nasıl Çalıştı?
X11, Linux'un grafik arayüzünü (ekran görüntüsünü) sağlayan en kritik paketlerden biridir. Normal bir Linux dağıtımında X11 paketi bozulduğunda veya içi silindiğinde masaüstünüz çöker, ekran kararır ve terminal ekranına bile ulaşmakta zorlanırsınız.
Peki benim bilgisayarım X11 paketi tamamen silinmişken nasıl çalışmaya devam etti? Ben nasıl Firefox'ta hatanın çözümünü arayıp Discord'da arkadaşlarımla yazışabildim?
İşte bu NixOS'in en sevdiğim özelliği olan Generation (Sürüm) İzolasyonu sayesinde oldu. NixOS'te çalışan sisteminiz, derleme yaptığınız andaki paketlerin durumunu dondurur. Derleme sırasında X11 paketim sağlamdı ve çalışan sistemim o sağlam sürümü kullanıyordu. Ben yeni bir derleme yapmaya çalıştığımda sistem yeni paket için X11'i aramış ve bozuk olduğunu fark etmişti. Yani hata sadece geleceğe yönelik (yeni sürüm oluşturma) bir engel teşkil ediyordu; halihazırda çalışan kararlı sistemimi kesinlikle etkilemiyordu.
Çıkarılan Dersler
Bu ilginç hata bana iki büyük ders verdi:
- Hata Ayıklama İnatçılığı: Bir hatayı bir yerde arıyor ve günlerce bulamıyorsanız, orada aramaya ısrar etmeyin. Farklı ve en alakasız görünen yerlere bile bakın.
- NixOS Tercihi: Ne yaşarsanız yaşayın, başınıza ne gelirse gelsin asla sizi yarı yolda bırakmayan ve sunum yaparken veya iş görüşmesine girmek üzereyken "bilgisayar bir anda açılmadı" stresi yaşatmayan bir sisteme sahip olmak paha biçilemez. İyi ki NixOS'e geçmişim!