Sistem 64 bit Ubuntu 13.04 saya memiliki direktori berikut di /
:
lib
lib32
lib64
libx32
libexec
Dalam /usr
direktori ada:
lib
lib32
libx32
libexec
Ini sepertinya sesuatu yang dapat dengan mudah dijawab dengan pencarian, tetapi saya tidak menemukan apa pun secara online, selain itu direktori ini menyimpan perpustakaan bersama (kecuali libexec). Tapi pustaka bersama mana yang masuk folder mana (selain 32bit di lib32 dan 64 bit di lib64)? Bisakah seseorang menjelaskan perbedaan antara semua direktori ini?
directory-structure
libraries
gsingh2011
sumber
sumber
Jawaban:
Ah ya ini adalah bagian yang sangat membingungkan jika Anda sudah berurusan dengan Unix untuk waktu yang lama. Ada standar yang sebagian besar Unix "coba" ikuti disebut FHS - Filesystem Hierarchy Standard .
Mengingat saya terutama menggunakan distro berbasis Red Hat Saya paling akrab dengan mereka mengambil FHS untuk distro Fedora, CentOS, dan RHEL Linux. Tapi saya sudah menggunakan distro berbasis Debian & BSD juga dan mereka tidak jauh berbeda dalam hal di mana semuanya disimpan, bijaksana filesystem.
Sekarang untuk pertanyaan Anda. Saya akan melihat dokumen FHS , yang secara longgar mengatur struktur direktori ini. Secara umum:
Direktori -
/lib
Berisi pustaka bersama penting dan modul kernel.
Tujuan: Direktori / lib berisi gambar-gambar perpustakaan bersama yang diperlukan untuk mem-boot sistem dan menjalankan perintah di sistem file root, yaitu. oleh binari di / bin dan / sbin.
Catatan1: Pustaka bersama yang hanya diperlukan untuk binari di / usr (seperti binari X Window) tidak boleh di / lib. Hanya pustaka bersama yang diperlukan untuk menjalankan binari di / bin dan / sbin mungkin ada di sini.
Note2: Mengingat tujuan utama / lib adalah untuk berisi pustaka untuk alat yang digunakan untuk direktori / bin & / sbin, pustaka di / lib dapat berupa 32-bit atau 64-bit.
Misalnya (Fedora 14 sistem 64-bit)
Berikut adalah contoh file dari my / lib
Direktori -
/lib<qual>
Format alternatif pustaka bersama yang penting (opsional). Ini akan menjadi direktori / lib32, / lib64, dll.
Tujuan: Mungkin ada satu atau lebih varian direktori / lib pada sistem yang mendukung lebih dari satu format biner yang membutuhkan pustaka yang terpisah. Ini biasanya digunakan untuk dukungan 64-bit atau 32-bit pada sistem yang mendukung banyak format biner, tetapi membutuhkan pustaka dengan nama yang sama.
Catatan: Dalam hal ini, / lib32 dan / lib64 mungkin direktori pustaka, dan / lib symlink ke salah satunya.
Direktori -
/usr/lib
Perpustakaan untuk pemrograman dan paket.
Tujuan: / usr / lib termasuk file objek, pustaka, dan binari internal yang tidak dimaksudkan untuk dieksekusi langsung oleh pengguna atau skrip shell.
Catatan1: File statis dan subdirektori khusus arsitektur-independen aplikasi-spesifik harus ditempatkan di / usr / share.
Aplikasi dapat menggunakan subdirektori tunggal di bawah / usr / lib. Jika aplikasi menggunakan subdirektori, semua data yang bergantung pada arsitektur yang digunakan secara eksklusif oleh aplikasi harus ditempatkan di dalam subdirektori itu.
Note2: Misalnya, subdirektori perl5 untuk modul dan pustaka Perl 5.
Direktori -
/usr/lib<qual>
Pustaka format alternatif (opsional).
Tujuan:
/usr/lib<qual>
melakukan peran yang sama dengan / usr / lib untuk format biner alternatif, kecuali bahwa tautan simbolis/usr/lib<qual>/sendmail
dan/usr/lib<qual>/X11
tidak diperlukan.Catatan: Kasus di mana / usr / lib dan
/usr/lib<qual>
sama (satu adalah tautan simbolis ke yang lain) file-file ini dan subdirektori per-aplikasi akan ada.TLDR;
Secara umum:
Jika ada pustaka yang dibutuhkan oleh executable di direktori / bin atau / sbin, pustaka tersebut harus berada di direktori / lib *.
Jika ada pustaka untuk menggunakan program dan paket mereka masuk / usr / lib / *. Jika ada file executable yang diperlukan oleh perpustakaan tertentu, tetapi file executable ini tidak seharusnya dipanggil oleh pengguna secara langsung atau dengan root, mereka dapat dijalankan di / usr / libexec.
sumber
file
utilitas dengan perpustakaan di direktori ini untuk melihat perbedaannya.