Mój 64-bitowy system Ubuntu 13.04 ma następujące katalogi /
:
lib
lib32
lib64
libx32
libexec
W /usr
katalogu znajduje się:
lib
lib32
libx32
libexec
Wydawało się, że można na to łatwo odpowiedzieć przy wyszukiwaniu, ale nie znalazłem nic online, poza tym, że te katalogi przechowują biblioteki współdzielone (oprócz libexec). Ale które biblioteki współdzielone znajdują się w których folderach (inne niż 32-bitowe w lib32 i 64-bitowe w lib64)? Czy ktoś mógłby wyjaśnić różnicę między tymi wszystkimi katalogami?
directory-structure
libraries
gsingh2011
źródło
źródło
Odpowiedzi:
Ach tak, jest to bardzo mylące, jeśli zajmujesz się Uniksami przez dłuższy czas. Istnieje standard, który większość uniksów „próbuje” przestrzegać, zwany FHS - Standard systemu plików .
Biorąc pod uwagę, że używam głównie dystrybucji opartych na systemie Red Hat, jestem najbardziej zaznajomiony z ich podejściem do FHS dla dystrybucji Fedora, CentOS i RHEL Linux. Ale użyłem również dystrybucji opartych na Debianie i BSD i nie różnią się one tak bardzo pod względem miejsca przechowywania, pod względem systemu plików.
Teraz na twoje pytania. Rzuciłbym okiem na dokument FHS , który luźno reguluje te struktury katalogów. Ogólnie:
Katalog -
/lib
Zawiera niezbędne współdzielone biblioteki i moduły jądra.
Cel: katalog / lib zawiera obrazy biblioteki współdzielonej potrzebne do uruchomienia systemu i uruchomienia poleceń w głównym systemie plików, tj. przez pliki binarne w / bin i / sbin.
Uwaga 1: Biblioteki współdzielone, które są niezbędne tylko dla plików binarnych w / usr (takich jak dowolne pliki binarne X Window), nie mogą znajdować się w / lib. Mogą być tu tylko biblioteki współużytkowane wymagane do uruchamiania plików binarnych w / bin i / sbin.
Uwaga 2: Biorąc pod uwagę, że głównym celem / lib jest przechowywanie bibliotek narzędzi rozmieszczonych w katalogach / bin i / sbin, biblioteki w / lib mogą być 32-bitowe lub 64-bitowe.
Na przykład (system 64-bitowy Fedora 14)
Oto próbka plików z mojego / lib
Katalog -
/lib<qual>
Niezbędne biblioteki współdzielone w innym formacie (opcjonalnie). Byłyby to katalogi / lib32, / lib64 itp.
Cel: Może istnieć jeden lub więcej wariantów katalogu / lib w systemach, które obsługują więcej niż jeden format binarny wymagający osobnych bibliotek. Jest to powszechnie używane do obsługi 64-bitowej lub 32-bitowej w systemach obsługujących wiele formatów binarnych, ale wymagających bibliotek o tej samej nazwie.
Uwaga: W tym przypadku / lib32 i / lib64 mogą być katalogami bibliotek, a / lib dowiązaniem symbolicznym do jednego z nich.
Katalog -
/usr/lib
Biblioteki do programowania i pakietów.
Cel: / usr / lib obejmuje pliki obiektowe, biblioteki i wewnętrzne pliki binarne, które nie są przeznaczone do bezpośredniego uruchamiania przez użytkowników lub skrypty powłoki.
Uwaga 1: Różne pliki statyczne i podkatalogi, niezależne od architektury, muszą być umieszczone w / usr / share.
Aplikacje mogą korzystać z jednego podkatalogu w katalogu / usr / lib. Jeśli aplikacja korzysta z podkatalogu, wszystkie dane zależne od architektury wykorzystywane wyłącznie przez aplikację muszą zostać umieszczone w tym podkatalogu.
Uwaga 2: Na przykład podkatalog perl5 dla modułów i bibliotek Perl 5.
Katalog -
/usr/lib<qual>
Biblioteki formatu alternatywnego (opcjonalnie).
Cel:
/usr/lib<qual>
spełnia tę samą funkcję jak / usr / lib na alternatywnym formacie binarnym, oprócz tego, że dowiązania symboliczne/usr/lib<qual>/sendmail
i/usr/lib<qual>/X11
nie są wymagane.Uwaga: Przypadek, w którym / usr / lib i
/usr/lib<qual>
są takie same (jeden jest dowiązaniem symbolicznym do drugiego), te pliki i podkatalogi dla poszczególnych aplikacji będą istnieć.TLDR;
Ogólnie:
Jeśli istnieją biblioteki wymagane przez plik wykonywalny w katalogach / bin lub / sbin, biblioteki te powinny znajdować się w katalogach / lib *.
Jeśli istnieją biblioteki programów użytkowych i pakietów, znajdują się w katalogu / usr / lib / *. Jeśli istnieją pliki wykonywalne, które są potrzebne konkretnej bibliotece, ale te pliki wykonywalne nie powinny być wywoływane przez użytkowników bezpośrednio lub przez root, przechodzą do katalogu / usr / libexec.
źródło
file
narzędzia z bibliotekami w tych katalogach, aby zobaczyć różnicę.