/ usr / bin vs / usr / local / bin w Linuksie

Dlaczego jest tak wiele miejsc, w których można umieścić plik binarny w Linuksie? Jest co najmniej tych pięciu:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

A na mojej skrzynce biurowej nie mam uprawnień do zapisu do niektórych z nich.

Jaki typ pliku binarnego należy do którego z nich bin s?

Komentarze

  • Zapomniałeś /usr/sbin/ .
  • I ~/bin/ na sprawy osobiste.
  • Obecnie jest mniej miejsc, ponieważ /bin został połączony z /usr/bin, a /sbin został połączony z /usr/sbin – patrz Przypadek dla scalenia / usr .
  • @Calmarius, co? czy nie ' czy używasz /usr/local/bin?
  • @Pacerier ~ / bin jest przeznaczone tylko dla bieżącego użytkownika. Na przykład na serwerach Linux dla wielu użytkowników, na których nie jesteś administratorem, ' jest jedynym sposobem ” ” rzeczy dla siebie.

Odpowiedz

  1. /bin (i /sbin) były przeznaczone dla programów, które musiały znajdować się na małej partycji / przed większą /usr itp. partycje zostały zamontowane. Obecnie służy głównie jako standardowa lokalizacja dla kluczowych programów, takich jak /bin/sh, chociaż pierwotna intencja może nadal mieć znaczenie np. instalacje na małych urządzeniach wbudowanych.

  2. /sbin, w odróżnieniu od /bin, jest dla programów do zarządzania systemem (zwykle nie używanych przez zwykłych użytkowników) potrzebnych przed zamontowaniem /usr.

  3. /usr/bin jest przeznaczony dla normalnych programów użytkownika zarządzanych przez dystrybucję.

  4. Istnieje /usr/sbin z taką samą relacją do /usr/bin jako /sbin musi /bin.

  5. /usr/local/bin jest przeznaczone dla zwykłych programów użytkownika nie zarządzanych przez menedżera pakietów dystrybucyjnych, np. pakiety skompilowane lokalnie. Nie należy ich instalować w /usr/bin, ponieważ przyszłe aktualizacje dystrybucji mogą je modyfikować lub usuwać bez ostrzeżenia.

  6. , jak można się pewnie domyślić w tym miejscu, to /usr/local/bin jako /usr/sbin do /usr/bin.

Ponadto istnieje również /opt, który jest przeznaczony dla monolitycznych pakietów nierozprowadzających, chociaż zanim zostały prawidłowo zintegrowane, różne dystrybucje umieściły tam Gnome i KDE. Generalnie powinieneś zarezerwować go dla dużych, źle zachowujących się pakietów stron trzecich, takich jak Oracle.

Komentarze

  • Myślę, że ta odpowiedź świetnie się sprawdza w wyjaśnianiu wspólny zestaw konwencji, ale ten post Roba Landleya to naprawdę świetna lektura, jeśli chcesz wglądu w bzdury … lists.busybox.net/pipermail/busybox/2010 -December / 074114.html
  • refspecs.linuxfoundation.org/fhs.shtml dla aktualnego kanonicznego odniesienia. Łącze @kojiro jest nieaktualne i nie ' nie ma nowej specyfikacji.
  • Gdzie umieścić kosz pobrany z Internetu? Z twojego opisu wygląda na to, że powinien znajdować się w / usr / local / bin lub / usr / bin. Czy / usr / bin jest czymś, czego nigdy nie powinienem ręcznie dotykać i pozwalać bawić się tylko menedżerowi pakietów?
  • @DidierA. umieść go w ~/bin i dodaj ten katalog do swojej PATH jako użytkownik … Dziękuję za notatkę, usunąłem mój poważnie nieaktualny komentarz.
  • Znalazłem tutaj odpowiedź na pierwszą część mojego pytania: superuser.com/a/238993/425838 . Pierwszeństwo jest oparte na kolejności w zmiennej systemowej PATH, a echo $PATH dla mnie pokazuje /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games , co oznacza, że pliki wykonywalne w /usr/local/bin mają pierwszeństwo przed plikami w /usr/bin, które mają pierwszeństwo przed plikami w /bin.

Odpowiedź

Polecam przyjrzeć się stronie podręcznika hierarchii systemów plików:

man hier 

który jest również dostępny online, na przykład: http://linux.die.net/man/7/hier . Odpowiednie fragmenty zostały skopiowane poniżej. W zależności od systemu może to oznaczać coś innego.

Nazwa

    hier – opis hierarchii systemu plików

Opis

    Typowy system Linux zawiera między innymi następujące katalogi:

    /bin

      Ten katalog zawiera programy wykonywalne, które są potrzebne dla jednego użytkownika tryb i aby uruchomić system lub go naprawić.

    /sbin

      Podobnie jak /bin, ten katalog zawiera polecenia potrzebne do uruchomienia systemu, które zwykle nie są wykonywane przez zwykłych użytkowników.

    /usr/bin

      Jest to główny katalog programów wykonywalnych. Większość programów wykonywanych przez zwykłych użytkowników, które nie są potrzebne do uruchamiania lub naprawy systemu i które nie są instalowane lokalnie, należy umieścić w tym katalogu.

    /usr/local/bin

      Pliki binarne programów lokalnych dla serwisu.

    /usr/local/sbin

      Lokalnie zainstalowane programy do administrowania systemem.

    /usr/sbin

      Ten katalog zawiera pliki binarne programów do administrowania systemem, które nie są niezbędne do procesu uruchamiania, do montowania /usr lub do naprawy systemu .

Komentarze

  • To nie ' t odpowiedz na pytanie użytkownika '.
  • Strona podręcznika zawiera wpis dla każdego z katalogów bin, wyjaśniając, co wchodzi do nich, co było jednym z pytań.

Odpowiedź

Hierar systemu plików chy Standard w Wikipedii pomógł mi odpowiedzieć na to samo pytanie, kiedy go miałem, a ponadto zawiera bardzo objaśniającą tabelę.

Fragment tej strony 1 :

/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route. 

1 Pobrano 19 czerwca 2019 r .; link stały .

Odpowiedź

Katalogi sbin zawierają programy, które zazwyczaj służą jedynie do administrowania systemem. Programy dla zwykłych użytkowników nigdy nie powinny się do nich przenosić.

Podczas uruchamiania potrzeba kilku programów, które kończą się w /bin/ lub /sbin/. Muszą być one dostępne przed podłączeniem systemów plików. Elementy takie jak mount i fsck, które są wymagane do sprawdzania i montowania systemów plików, muszą tam być.

Większość pakietów programy kończą na /usr/bin/ i /usr/sbin/. Mogą one znajdować się w systemie plików innym niż główny system plików. W niektórych przypadkach mogą znajdować się na dysku podłączonym do sieci.

Lokalne programy i skrypty należą do /usr/local/bin/ i /usr/local/sbin/ . To identyfikuje je jako wyraźnie niestandardowe i prawdopodobnie dostępne tylko na miejscu.

Aby uzyskać dalsze wyjaśnienia, spróbuj uruchomić polecenie man hier, które powinno dostarczyć opis zalecanej hierarchii systemu plików dla twojej dystrybucji. Możesz również przeczytać o hierarchii systemu plików w Wikipedii

Komentarze

  • +1 Naprawdę zwięzłe wyjaśnienie, jeśli top to trochę za dużo.
  • ” Lokalne programy i skrypty należą do / usr / local / bin / i / usr / local / sbin / ” – Masz na myśli programy lokalne jak w „, które nie są w ogóle częścią systemu operacyjnego, ale zdecydowałem się zainstalować i chcesz ich użyć „?

Odpowiedź

W latach 70-tych UNIX miał wszystkie oficjalne pliki wykonywalne w /bin, a /usr/bin był lokalizacją poniżej katalogów domowych użytkowników (np. /usr/dmr), który był dostępny dla każdego użytkownika do przechowywania własnych plików binarnych, które mogłyby być interesujące również dla innych.

Wynik tego otwarcia /usr/bin było złomem nieudokumentowanego oprogramowania, więc Stephen Bourne wro te skrypt crona, który co noc sprawdzał dostępność nowych plików binarnych i usuwał wszystkie pliki binarne, które nie miały dokumentacji lub które zostały zaktualizowane bez aktualizacji dokumentacji.

Pod koniec lat 70. /usr/bin został zintegrowany z podstawową dystrybucją systemu operacyjnego i ludzie zaczęli używać /usr/local/bin do celów poprzedniego otwartego /usr/bin .

Po chwili administratorzy systemów używali /usr/local/bin do przechowywania nielokalnego oprogramowania zaimportowanego z sieci (np. USENET), a ponieważ firmy UNIX nie lubiły powtarzać tego samego błędu co w przypadku /usr/bin, około 1987 r. odbyła się konferencja na temat hierarchii systemów plików, na której wszystkie firmy UNIX zgodziły się zrezygnować id = „5dd614bde0”>

i zamiast tego użyj/opt/<vendor>/bin.

Niestety dystrybucje Linuksa nie zastosowały się do tej decyzji ….

Komentarze

  • Chociaż bardzo interesujące, nic z tego próbuje nawet odpowiedzieć na zadane pytanie, które nie dotyczyło /opt i nie systemu UNIX, ale Linuksa. To jest jak odpowiedź ” Dlaczego samochody mają 4 koła? ” za pomocą ” Rowery mają 2! Niestety samochody nie ' t. „, co nie ' nie pomaga operatorowi zrozumieć, dlaczego samochody mają 4.
  • Jeśli nie możesz użyć podanego wyjaśnienia jako wyjaśnienia tła Linuksa i faktu, że Linux lubi naśladować UNIX, możesz nie mieć potrzebnego tła.
  • Interesujące, ale coś, co mnie gubi i co może być tylko historyczne. Dzisiaj pobranie pojemnika online od pojemnika firmowego nie jest ' bardzo różne. Jeśli Joe Blow tworzy program, a ja go pobieram, dlaczego nie umieścić go w / opt / JowBlow / bin zamiast / usr / local / bin. Czy to kwestia zaufanego dostawcy czy niezaufanego? To nie ' wydaje mi się sensowne.
  • Żałuję, że to ' dokładnie ' kilka lat wstecz. a) Zastanawiałem się, dlaczego AIX unikał / usr / local, używa / opt / IBM i / opt / ibm, a bullfreeware używa / opt / freeware – i dlaczego POWINIENEM użyć innej ścieżki (nie tylko / opt / * sbin). Co do częściowego związku z Linuksem – lepsze narzędzia GNU – domyślnym –prefix w narzędziach automatycznych jest / usr / local. Szkoda, że autotools (automake, autoconf itp. Nie są zgodne z …). Ale wszyscy przeżywamy i dowiadujemy się, gdzie dystrybutor umieścił swoje programy.
  • Czy możemy zorganizować kolejną z tych konferencji? Tylko tym razem WSZYSCY SŁUCHAJĄ!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *