- Geleneksel Linux dağıtımlarındaki dizin alışkanlıklarını büyük ölçüde değiştirerek sistem yapısını program başına dizinler üzerinden anlamayı sağlayan deneysel bir dağıtımdır
- Ayrı bir paket veritabanı yerine dosya sisteminin kendisini veritabanı olarak kullanır; programlar
/Programs/Nano/8.3gibi yollarda sürümlerine göre yerleştirilir - En yeni sürüm 017.01, önceki ISO sürümünden yaklaşık 5 yıl sonra gelen bir hata düzeltme güncellemesidir ve bu süre içinde ortaya çıkan bazı önemli sorunları ele alır
- Kurucu Hisham Muhammad, 25 yıllık yönetimin ardından görevden ayrıldı; projeyi GitHub kullanıcısı
@fyrak1sdevraldı - Live ortam olarak doğrudan çalıştırılabilir veya sabit diske kurulabilir; böylece geleneksel dağıtımlardan farklı dosya sistemi yapısı pratikte denenebilir
Paketleri dosya sistemiyle düzenleme yaklaşımı
- GoboLinux, tüm dosya sistemi hiyerarşisini yeniden tanımlayan deneysel bir Linux dağıtımıdır
- Temel fikir, ayrı bir paket veritabanı tutmak yerine dosya sistemini veritabanı olarak kullanmaktır
- Her program kendi dizinine yerleştirilir
- Örnekler:
/Programs/Nano/8.3,/Programs/GCC/14.2.0
- Yapısı geleneksel Linux dağıtımlarından farklı olduğu için, ilk kez kullanacakların önce belgeleri okuması iyi olur
017.01 sürümü ve yönetimin devri
- Güncel sürüm 017.01’dir
- USB sürücülerden ve DVD’den çalıştırılabilen bir Live ortamdır
- Sabit diske de kurulabilir
- ISO, Downloads sayfasından indirilebilir
- v017.01, yaklaşık 5 yıllık aradan sonra çıkan bir hata düzeltme güncellemesidir
- Önceki ISO sürümünden sonra ortaya çıkan bazı önemli sorunları ele alır
- Ayrıntılı değişiklikler release notes sayfasında görülebilir
- Projenin yönetimi de değişti
- Kurucu ve 25 yıl boyunca GoboLinux’a liderlik eden Hisham Muhammad resmen görevden ayrıldı
- Proje,
@fyrak1syönetimi altında devam ediyor - Lucas Correia Villa Real, diğer adıyla
paranoidd, Haziran 2021’e kadar Hisham ile birlikte GoboLinux’un bakımını yürütmüştü
- Topluluk merkezleri sohbet, forum ve wiki olarak ayrılıyor
- Zulip Chat ve
irc.libera.chatüzerindeki#gobolinuxIRC kanalı - GoboLinux forum
- GoboLinux wiki
- Zulip Chat ve
1 yorum
Hacker News yorumları
GoboLinux tasarımına karşı güçlü bir ani reddetme hissi duyan biriyseniz, 20 yıllık “I am not clueless”¹ belgesinde arka plan ve mantığın epey fazlası var
Reddetme hissim hâlâ tamamen kaybolmuş değil, ama eskisi kadar güçlü de değil ;)
¹ https://gobolinux.org/doc/articles/clueless.html
“Farklı olduğumuzu biliyoruz. Çok basit. Alışık olmayabilirsiniz ama anlaması ve yönetmesi kolay. Kullanmak zorunda değilsiniz. Biz bunu seviyoruz ve memnunuz” diye özetlenebilir
make all programs relocatablebölümünde tüm uygulamalarınlibprefixkullanacak şekilde yeniden yazılması gerektiği söyleniyor; buradalibprefixile ne kastedildiğini merak ediyorumWeb aramasında işe yarar bir sonuç çıkmıyor
Örneğin ilk tepkinin önemli bir kısmı büyük harf kullanımından geliyor; büyük P’li
Programs, Windows’takiProgram Filesı çağrıştırdığı için duygusal olarak itici geliyorlibx11yerineLibX11yazmak zorunda kalsam biraz sinir bozucu olurdu gibi de geliyorLinux dosya sistemi genelde büyük/küçük harf duyarlıdır, ama paket adları yalnızca büyük/küçük harfi farklı olan tekrarları muhtemelen önler; kullanıcı dostu bir katmanı hedefleyen bir dağıtımın kökte yalnızca büyük/küçük harfi farklı dizinler koyması da pek olası görünmüyor
Yine de örnekler
/packages/libx11/1.6.9,/packages/gcc/9.2.0olsaydı ilk tepki çok daha hafif olurdu gibi geliyor; bu adlarla da avantajlar hiç azalmazdıGoboLinux fikrinin ana akım Linux topluluğunda yer edinememiş olması gerçekten üzücü
Linux’un dosya sistemi yapısı tam bir karmaşa
Bunu düzgün çalışır hâle getirmek her zaman önemsiz değil; verimli yapmak daha da zor
Ancak son birkaç yılda, yazılımların çoğunun dağıtımı için bu modelin gerçekten sürdürülebilir bir düzeye yaklaştığını hissediyorum
GoboLinux modelinde
/Programs/Xorg/7.0gibi sürüm dizinlerini elle yönetmek gerekiyor; Nix ise paketin kurulum yolunu derleme tarifinin hash’ine göre belirleyerek bu sorunu ortadan kaldırıyor/homeve/tmpolduğunu düşünüyorumGeri kalanı, istediğini istediğin yere koyduğun bir ıvır zıvır yığınına yakın
GoboLinux, Linux’ta gerçekten istediğin gibi yapabileceğini bana ilk gösteren projeydi
/optve/srv, zevke göre de/usr/local/opt, bileşenleri GoboLinux’taki gibi tek tek yönetmenin avantajlarını epey sunuyorDağıtım açısından bakınca her şeyin kendince bir mantığı var
dpkg -S this-fileyazınca/usriçindeki bir dosyanın neden orada olduğunu hemen anlayabiliyorsunuz; dağıtım da büyük resmi çizme rolünü üstleniyorEn çok hangi kısmı dağınık bulduğunuzu merak ediyorum
Geleneksel yolları GoboLinux’taki karşılıklarına eşleyerek Unix mirasıyla uyumluluğu şeffaf biçimde koruması ilginç
Özel bir sihir yok;
/bin,/System/Index/binbağlantısı ve/usr/binile/usr/sbinde aynı şekilde tüm “binary” dizinlerinin aynı yere işaret etmesini sağlıyorBu sayede hangi standart yoldan erişilirse erişilsin dosya çalışıyor; dolayısıyla gerçek dosyanın
/usr/local/bin/fooaltında olduğu ama betiğin/usr/bin/fooya başvurduğu için bozulduğu sıradan dağıtımlardan aslında daha uyumlu bile olabilirBilmediğim için soruyorum: macOS bir ölçüde böyle mi çalışıyor?
Uygulamaların her zaman sürükle-bırakla yönetilen tek bir “dosya” gibi görünmesi gerçekten hoşuma gitmişti
Ubuntu’da bir şeyin nerede olduğunu ve nereye kurulduğunu anlamaya çalışınca kendimi aptal gibi hissediyorum
Neden yaptıklarını anlıyorum
Ortalama bir Linux kurulumunun dizin yapısı teknik kişiler için bile kafa karıştırıcı bir labirent; büyük dağıtımların hedeflediği sıradan kullanıcılar için daha da öyle
Ama sonuçta bu, nedeni değil semptomu ele alan bir yaklaşım; daha fazla Linux dağıtımının Gobo gibi dosya sistemi yapısını modernleştirmeyi ciddi biçimde düşünmesi gerektiğini düşünüyorum
Kendim de denemek istiyorum
Hedef, makul ölçüde kendi kendini açıklayan, acemileri tehlikeli alanlardan uzak yönlendiren ve dosya yöneticisinin neredeyse hiçbir şeyi gizlemese bile sorun çıkarmayan bir yapı oluşturmak
~/Librarygibi tuhaf konumlara bir şeyler saçıyorMinecraft başlatıcısı gibi her şeyin, dünyaların ve kayıt dosyalarının bile bundle içinde olduğu durumlar ilginçleşiyor
~/Libraryve/Libraryiçine çeşitli dosyalar koyuyormacOS’te bile bazı uygulamaları silmek için birden fazla manuel silme adımını izlemek gerekmesi nadir değil
Özellikle giriş öğeleri ekleyen uygulamalarda bu daha önemli
Windows’un Program Ekle/Kaldır aracı en azından kaldırmayı çalıştırmak için merkezi bir nokta sunuyor ve çoğu uygulama bu yönteme düzgün uyuyor
dpkgile de aynı şey yapılamıyor mu?İlk dizin adının büyük harfle başlaması pek iyi değil
Yolda gezinirken ek bir iş gibi hissettiriyor; her seferinde harf ya da rakamla birlikte Shift’e basmak, günlük komut satırı kullanımında epey can sıkıcı
/Programsyazmak,/usrile tam olarak aynı sayıda tuş vuruşu gerektiriyormuşSlash, küçük p, Tab yeterli
Kullanılabilirlikten feragat edip PDP-11’in kıymetli tiklerini ve belleğini korumaya zorlamıyor
“Büyük/küçük harf duyarlılığı en iyisi!” diyen hayranların, bunun aslında ilk sistemin kısıtlarından doğmuş bir sonuç olduğunu kaçırması hep komik geliyor
Bu bir özellik değil
Üstelik bu konu açıkça ele alınmış
Sadece
set completion-ignore-case Onbile hayatı ciddi ölçüde kolaylaştırırÇünkü GoboLinux kullanmasanız bile büyük harfle başlayan her dosya adında Shift’e bir kez daha az basarsınız
Ya da 1977’deki gibi yaşamaya devam edebilirsiniz
Sizin VT100’ünüz, sizin kurallarınız
Sonradan “neden normal gezinme için bash’i olduğu gibi kullanmayıp başka kabuk kuruyorsun” dendiğini gördüm; bu, kişinin kendi kabuğunu bile doğru dürüst bilmediği anlamına geliyor
Ayrıca herhangi bir kabuk büyük/küçük harf duyarsız otomatik tamamlama sunabilir; Fish bunu varsayılan olarak yapıyor
Windows hissi veriyor
Bu projenin bilişsel yükümüzü epey azaltma potansiyeli var
Başarılı olmasını isterim
Düzenleme: Şimdi fark ettim, 20 yıllık bir projeymiş
https://github.com/gobolinux/Recipes/commits/master/
Öylesine mantıklı ki insanın gözleri doluyor
Kütüphanelerin birden fazla kopyasını tekilleştirme işini, gerçekten gerekliyse dosya sistemi halledebilir
Sonuçta dosya düzeyinde bir yineleme söz konusu; o yüzden o düzeyde çözülmeli
Çok kötü kapalı kaynak uygulamalar, kullanıcının sisteminden çok fazla şey bekliyor
Steam istemcisi buna bir örnek:
shbetiği değilbashbetiği sağlıyor; Linux mount userspace konteyner gereksinimleri nedeniyle Debian/Ubuntu tarzı dosya yerleşimini güçlü biçimde varsayıyor ve çeşitli komutların GNU’ya özgü garip seçeneklerini de istiyor32 bit kütüphaneler de çok
Yine de ABI’yi hâlâ kontrol altında tutuyor gibi görünüyorlar; muhtemelen binutils gas’in
.symveryönergesini kullanıyorlarEn azından mevcut karmaşa Steam tarafından boğazımıza itiliyor ve oyun oynatmayan bir dağıtım değilse bundan kaçınmak zor
Oyuncu kitlesi içinde bile kayda değer bir kısmın ayrıca oyun için ayrılmış bir PC’si olması oldukça olası
Benden çok daha zeki biri, bunun neden snap/Flatpak ya da NixOS gibi dağıtımlardan daha iyi olduğunu, ya da gerçekten daha iyi olup olmadığını açıklasa iyi olur
Derinlemesine anlamadan dışarıdan bakınca bu yaklaşım en basiti gibi görünüyor
Elbette bunu kendi bilgi eksikliğimi varsayarak söylüyorum
Flatpak ve NixOS’un daha karmaşık olmasının geçerli sebepleri var
Örneğin diskte bağımlılıkların tam olarak aynı sürümünü tekrar tekrar saklamazlar
Tırnak kullanmamın nedeni güvenlik sorunları olması
NixOS mevcut programlarla uyumluluğu bozarken Gobo bunu yapmıyor
Ancak NixOS’un paket deposu Gobo’ya kıyasla ezici biçimde daha iyi yönetiliyor; Gobo tarafı eksik ve yıllarca geriden geliyor
Yine de burada anılanların hepsi, Android’in uygulamaları saklama biçiminin gerisinde kalıyor
Android’de her uygulama dağıtımı kolay tek bir dosya olarak dağıtılabiliyor, düzgün biçimde sandbox’a alınıyor ve kendi dizinine sahip oluyor
Diğer yaklaşımların kaçırdığı bir nokta da şu: Her uygulamanın kendi durumunu saklamak için uygulama dizini altında bir alt dizini var ve bu kullanıcı bazında da ayrılıyor
GoboLinux geliştiricileri, insanların anlayabileceği bir dosya sistemi yerleşimini gerçekten “akıllıca” oluşturmuştu
Bugün kullandığımız eski UNIX teamüllerinin; 8.3 ad sınırı, depolama alanı yetersizliği, 1 GB üzeri dosya sorunları gibi kısıtların artık olmadığı bir çağda epey anlaşılmaz kaldığını düşünüyorum
Eskiden sürüm kontrol yazılımlarını barındıran bir sunucuda GoboLinux 012~015’i birkaç yıl çalıştırdım ve genel olarak çok iyiydi
Takıldığım nokta, gereken paket yoksa recipe yazmak zorunda kalmaktı
GoboLinux’un recipe yazma dili başlı başına anlaşılması kolaydı; ancak bir paketin çoğu zaman on küsur ya da onlarca kütüphaneye bağımlı olması yüzünden bunları izlemek, sürümleri eşleştirmek, kütüphane ve paket URL’lerini bulmak, sonra yeniden recipe hazırlamak için çok zaman harcadım
Sonunda Debian’a geçtim ama yapılandırma dosyalarının hâlâ
/etcaltında, ikili dosyaların da/usr/binya da/usr/local/biniçinde olduğunu görünce hâlâ irkiliyorumsystemd’nin zahmetli ve ahtapot gibi olduğunu düşünen taraftayım
İlgili
.servicedosyasını bulmak için sık sıkfindkullanmak gerekiyor; tek bir yerde olduğuna güvenemiyorsunuz ve komut satırı da sezgisel değilBuna karşılık Gobo’da servisleri yöneten betik seti çok basitti ve kullanması kolaydı
Yine de gereken şeyi
apt getya dadpkg -iile hemen kurabilme rahatlığı, GoboLinux’un çok daha makul olan akıllı tasarımına ağır basıyorGünümüzde desteklenen Linux dağıtımlarının sayısı, eskiden olduğu gibi sayısız seçenekten azaldı; neredeyse her zaman Debian veya Ubuntu varsayılan olarak dahil edildiği için depo dışında olsa bile bir paketi ya da programı kuramama ihtimali düşük
macOS da kesinlikle GoboLinux’a benzer bir yaklaşımı bir ölçüde kullanıyor; bu yüzden son dönemdeki epey kullanıcı düşmanı sürümlerden önce macOS’u komut satırından yönetmek oldukça kolaydı
Örneğin USB sürücüler
/Volumesaltında, program yapılandırma dosyaları ise~/Libraryaltında bulunursystemctl status fooçalıştırmak bile ikinci satırdan itibaren hangi dosyaların işin içinde olduğunu tam olarak söylerÖrneğin
systemctl status getty@tty1.serviceçıktısındaLoaded: loaded (/lib/systemd/system/getty@.service; enabled; preset: enabled)gibi göründüğü için/lib/systemd/system/getty@.servicedosyasını doğrudan öğrenebilirsiniz