Pardus /lib Dizini: Sistemin Temel Kütüphaneleri

Pardus ve genel Linux ekosisteminde, /lib ile başlayan dizinler sistemin "can damarı" olarak nitelendirilebilir. Bu dizinler, işletim sisteminin önyükleme (boot) yapabilmesi ve temel komutların çalışabilmesi için ihtiyaç duyulan paylaşımlı kütüphane dosyalarını barındırır.

/lib dizini, sistemin çalışması için kritik öneme sahip olan paylaşımlı kütüphane nesnelerini (.so dosyaları) ve çekirdek modüllerini içerir. /bin ve /sbin dizinlerindeki temel komutların (örneğin ls, cp, mkdir) çalışması için bu kütüphanelere ihtiyaç vardır.

Öne Çıkan İçerikler:

  • Çekirdek Modülleri (/lib/modules): Sistemin yüklü olan tüm kernel sürümlerine ait sürücüler ve modüller burada saklanır. Her kernel sürümü için ayrı bir alt klasör bulunur.

  • Firmware (/lib/firmware): Donanımların (Wi-Fi kartları, ekran kartları vb.) düzgün çalışması için ihtiyaç duyduğu aygıt yazılımları burada yer alır.

  • Dinamik Bağlayıcılar: Programlar çalıştırıldığında, ihtiyaç duydukları kütüphaneleri belleğe yükleyen ld-linux.so gibi dosyalar burada bulunur.


 /lib32 ve /lib64: Mimari Farklılıklar

Modern Pardus sürümleri genellikle 64-bit (x86_64) mimarisini kullanır. Ancak sistemde hem 32-bit hem de 64-bit uygulamaların bir arada çalışabilmesi için bu ayrım hayati önem taşır.

/lib64

64-bit sistemlerde, 64-bitlik temel paylaşımlı kütüphaneler bu dizinde bulunur. Çoğu modern Linux dağıtımında bu dizin, aslında /lib dizinine bir sembolik bağ (symlink) olabilir veya kütüphanelerin mimari bazlı ayrıldığı ana nokta olarak hizmet eder.

/lib32

Sisteminiz 64-bit olsa bile, bazen eski uygulamalar veya özel kapalı kaynaklı yazılımlar (bazı oyunlar veya eski sürücüler) 32-bit kütüphanelere ihtiyaç duyar. /lib32 dizini, bu 32-bitlik uygulamaların çalışabilmesi için gerekli olan çalışma zamanı (runtime) kütüphanelerini barındırır.


UsrMerge Yapısı: Modern Pardus'taki Değişim

Pardus'un son sürümlerinde (ve Debian tabanında), UsrMerge adı verilen bir yapıya geçilmiştir. Bu yapıda, kök dizindeki /lib, /lib32, /lib64, /bin ve /sbin dizinleri aslında /usr dizini altındaki karşılıklarına işaret eden birer sembolik bağdır (symlink).

Eski YolGerçek Yol (UsrMerge)Açıklama
/lib/usr/libTemel sistem kütüphaneleri
/lib64/usr/lib6464-bit kütüphaneler
/lib32/usr/lib3232-bit kütüphaneler

Neden bu yapıya geçildi?

  1. Sistem Temizliği: Tüm statik verilerin /usr altında toplanması yedeklemeyi ve sistem yönetimini kolaylaştırır.

  2. Snapshot Desteği: Dosya sistemi anlık görüntüleri (snapshot) alınırken daha tutarlı bir yapı sunar.

  3. Uyumluluk: Farklı dağıtımlar arasındaki dosya yolu farklılıklarını minimize eder.


Kütüphane Dosyalarını Anlamak (.so dosyaları)

Bu dizinlerin içinde en çok rastlayacağınız dosya uzantısı .so (Shared Object) uzantısıdır. Windows'taki .dll dosyalarının karşılığıdır.

  • Dinamik Paylaşım: Bir kütüphane (örneğin libc.so), aynı anda onlarca farklı program tarafından kullanılabilir. Bu, RAM tasarrufu ve disk alanı verimliliği sağlar.

  • Bağımlılık Yönetimi: Bir uygulamayı Pardus'ta apt ile kurduğunuzda, aslında o uygulamanın ihtiyaç duyduğu ve bu dizinlerde bulunması gereken kütüphaneler de otomatik olarak kontrol edilir.


Özet ve Teknik İpucu

Eğer bir program çalışırken "shared library not found" hatası alıyorsanız, sisteminiz bu /lib dizinlerinde ilgili dosyayı bulamıyor demektir. Pardus'ta bu sorunu çözmek için genellikle ldconfig komutu kullanılır; bu komut kütüphane yollarını tarar ve önbelleği günceller.

Dosya yollarını kontrol etmek için şu komutu kullanabilirsiniz:

Bash:

ls -ld /lib /lib32 /lib64

Bu komut, bu dizinlerin gerçek bir klasör mü yoksa /usr dizinine yönlendirilmiş birer link mi olduğunu size gösterecektir.

Uygulamalı Örnek: Bir Program Hangi Kütüphaneleri Kullanır?

Pardus üzerinde bir komutun veya uygulamanın hangi paylaşımlı kütüphanelere (.so dosyalarına) ihtiyaç duyduğunu ve bu kütüphanelerin hangi dizinlerden (/lib, /lib64 vb.) çekildiğini görmek için ldd (List Dynamic Dependencies) komutunu kullanırız.

ldd Komutu ile İnceleme

Gelin, sistemin en temel komutlarından biri olan ls komutunun hangi kütüphaneleri kullandığına bakalım:

Bash:
ldd /usr/bin/ls

Örnek Çıktı:

Plaintext:
linux-vdso.so.1 (0x00007ffd395f3000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f3e8a21d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3e8a03c000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f3e89fa5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3e8a27a000)

Bu Çıktı Bize Ne Anlatıyor?

  1. Kütüphane Adı: En soldaki sütun (libc.so.6 gibi), programın çalışması için gerekli olan kütüphanenin adıdır.

  2. Yol (Path): Ok işaretinden (=>) sonraki kısım, Pardus'un bu kütüphaneyi sistemde hangi dizinde bulduğunu gösterir. Dikkat ederseniz kütüphanelerin çoğu mimari bazlı ayrılmış olan /lib/x86_64-linux-gnu/ altında tutulmaktadır.

  3. Bellek Adresi: Parantez içindeki hex kodları, program çalıştığında kütüphanenin RAM üzerinde hangi adrese yüklendiğini belirtir.

  4. Dinamik Bağlayıcı: En alttaki /lib64/ld-linux-x86-64.so.2 dosyası ise tüm bu kütüphaneleri bulup birbirine bağlayan "ana yükleyici"dir.

Neden Önemli?

Bir sistem yöneticisi olarak, bir uygulama "Shared library not found" hatası verdiğinde ldd komutunu kullanarak hangi dosyanın eksik olduğunu anında tespit edebilirsiniz. Eğer çıktıdaki bir satırda not found yazıyorsa, o kütüphaneyi içeren paketi apt ile kurmanız gerekir.


Blog İçin İpucu: Mimari Kontrolü

Eğer bir dosyanın 32-bit mi yoksa 64-bit mi olduğunu ve hangi kütüphane yapısını kullanması gerektiğini merak ediyorsanız file komutunu kullanabilirsiniz.

Bash:
file /usr/bin/ls

Bu komut size dosyanın "ELF 64-bit LSB shared object" olduğunu söyleyecek, bu da onun neden /lib64 veya /lib/x86_64-linux-gnu/ dizinindeki kütüphanelere ihtiyaç duyduğunu kanıtlayacaktır.


Sorun Giderme: "Library Not Found" Hatası Nasıl Çözülür?

Pardus'ta (veya herhangi bir Debian tabanlı sistemde) bir programı çalıştırmak istediğinizde şu hata ile karşılaşabilirsiniz: error while loading shared libraries: libexample.so.1: cannot open shared object file: No such file or directory

Bu, programın çalışmak için /lib dizinlerinde aradığı kütüphaneyi bulamadığı anlamına gelir. İşte bu sorunu çözmek için izlemeniz gereken 3 adım:

1. Adım: Eksik Kütüphanenin Hangi Pakette Olduğunu Bulun

Kütüphane dosyasının adını biliyorsunuz ancak hangi paketi kurmanız gerektiğini bilmiyorsanız apt-file aracı hayat kurtarır.

Bash:
# Önce aracı kurun ve veritabanını güncelleyin
sudo apt update
sudo apt install apt-file
sudo apt-file update

# Eksik kütüphaneyi aratın
apt-file search libexample.so.1

Bu komut size libexample1 gibi bir paket adı döndürecektir.

2. Adım: Paketi Kurun

Paket adını öğrendikten sonra standart kurulum işlemini yapın:

Bash:
sudo apt install libexample1

3. Adım: Kütüphane Önbelleğini Güncelleyin

Kütüphaneyi el ile (manuel) bir dizine kopyaladıysanız veya kurulumdan sonra sistem hala görmüyorsa, Pardus'un kütüphane yollarını yeniden taramasını sağlayın:

Bash
sudo ldconfig

Özel Durum: 64-bit Sistemde 32-bit Kütüphane Hatası

Eğer 64-bit bir Pardus kullanıyorsanız ve eski bir uygulama (örneğin eski bir yazıcı sürücüsü veya oyun) çalıştırıyorsanız, /lib32 dizinindeki eksiklikler nedeniyle hata alabilirsiniz.

Bunu çözmek için sisteme 32-bit mimarisini tanıtmanız gerekir:

Bash:
# 32-bit mimarisini ekle
sudo dpkg --add-architecture i386
sudo apt update

# 32-bit kütüphaneyi kur (Paket adının sonuna :i386 eklenir)
sudo apt install libexample1:i386

Not: /lib ve türevi dizinler sistemin kararlılığı için kritiktir. Bu dizinlerin içindeki dosyaları manuel olarak silmek veya isimlerini değiştirmek, sistemin bir sonraki açılışta "Kernel Panic" hatası vermesine veya hiç açılmamasına neden olabilir. Her zaman paket yöneticisini (apt) kullanmaya özen gösterin.


Pardus’ta /usr/lib Dizini

Kullanıcı Alanı Kütüphaneleri ve Uygulama Altyapısı


1️⃣ /usr/lib Nedir?

/usr/lib, kullanıcı alanındaki (user-space) programların ihtiyaç duyduğu:

  • Paylaşımlı kütüphaneleri (.so)

  • Dil çalışma zamanlarını

  • Masaüstü ortamı bileşenlerini

  • Donanım soyutlama katmanlarını

barındırır.

📌 /lib = sistemin ayağa kalkması
📌 /usr/lib = sistemin iş yapması


2️⃣ /usr/lib İçeriği Nasıl Yapılanır?

Pardus (Debian tabanlı) sistemlerde multiarch yapısı kullanılır:

/usr/lib ├── x86_64-linux-gnu/ │ ├── libc.so.6 │ ├── libgtk-3.so.0 │ ├── libQt5Core.so.5 │ ├── libX11.so.6 │ ├── pulseaudio/ │ └── systemd/ ├── firmware/ ├── python3/ ├── java/ └── locale/

🔹 Neden x86_64-linux-gnu?

  • Aynı sistemde farklı mimariler desteklenebilir

  • Kütüphane çakışmaları önlenir

  • 32-bit ve 64-bit ayrımı netleşir


3️⃣ /usr/lib ile /lib Arasındaki Temel Fark

Özellik/lib/usr/lib
Sistem açılışıZorunluGerekli değil
BağımlılıkÇekirdek & initUygulamalar
SilinirseSistem çökerUygulama çalışmaz
GüvenlikÇok kritikKritik

📌 Initramfs sadece /lib içerir, /usr/lib içermez.


4️⃣ /usr/lib İçindeki Önemli Alt Bileşenler

🖥Masaüstü Ortamları

  • Cinnamon

  • GNOME

  • KDE

/usr/lib/cinnamon /usr/lib/gnome-shell /usr/lib/qt5

🔊 Ses & Multimedya

  • PipeWire

  • PulseAudio

  • GStreamer

🧠 Dil Çalışma Zamanları

  • Python

  • Java

  • Mono

  • Node.js

Pardus’ta /lib/modules

Kernel Modülleri, Donanım Desteği ve Sistem Kararlılığı


6️⃣ /lib/modules Nedir?

/lib/modules, çalışan Linux çekirdeğine ait tüm modülleri barındırır.

uname -r

çıktısı neyse, karşılığı burada vardır:

/lib/modules/6.1.0-23-amd64/

7️⃣ Dizin Yapısı

/lib/modules/6.x.x/ ├── kernel/ │ ├── drivers/ │ │ ├── input/ │ │ ├── usb/ │ │ ├── net/ │ │ ├── gpu/ │ └── fs/ ├── modules.dep ├── modules.alias ├── modules.symbols

🔹 Önemli Dosyalar

DosyaGörev
modules.depModül bağımlılıkları
modules.aliasDonanım ↔ modül eşleşmesi
modules.symbolsKernel sembolleri

8️⃣ Kernel Modülleri Nasıl Çalışır?

🔄 Otomatik Yükleme

  • Donanım algılanır

  • udev tetiklenir

  • modprobe çağrılır

  • İlgili .ko dosyası yüklenir

Manuel Kontrol

lsmod modprobe i915 rmmod i915

9️⃣ ETAP 23 Akıllı Tahta Özel Notlar

BileşenModül
Dokunmatikhid_multitouch
Wi-Fiiwlwifi, rtl8xxxu
GPUi915, amdgpu
Kamerauvcvideo

📌 /lib/modules bozulursa:

  • Dokunmatik çalışmaz

  • Wi-Fi kaybolur

  • Grafik arayüz açılmaz


🔐 /lib/modules Güvenlik Politikası

chmod -R 755 /lib/modules chown -R root:root /lib/modules

Ek olarak:

lsattr -R /lib/modules

İleri seviye:

  • Secure Boot

  • Modül imza doğrulama

  • Kara liste (blacklist)


10️⃣ Özet Karşılaştırma

DizinKatmanRol
/libÇekirdek altıAçılış
/usr/libKullanıcı alanıUygulamalar
/lib/modulesKernel alanıDonanım

Genel Sonuç

  • /usr/lib, Pardus’un uygulama motorudur

  • /lib/modules, Pardus’un donanım sinir sistemidir

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Başlangıç Onarma