Dlaczego jest tak wiele miejsc, w których można umieścić plik binarny w Linuksie? Jest co najmniej tych pięciu:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/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
Odpowiedz
-
/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. -
/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
. -
/usr/bin
jest przeznaczony dla normalnych programów użytkownika zarządzanych przez dystrybucję. -
Istnieje
/usr/sbin
z taką samą relacją do/usr/bin
jako/sbin
musi/bin
. -
/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. -
, 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
, aecho $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Ą!
/usr/sbin/
.~/bin/
na sprawy osobiste./bin
został połączony z/usr/bin
, a/sbin
został połączony z/usr/sbin
– patrz Przypadek dla scalenia / usr ./usr/local/bin
?