Wcześniej korzystałem z terminala w ograniczonym zakresie do wchodzenia i wychodzenia z katalogów oraz zmiany dat plików za pomocą touch
polecenia. Zdałem sobie sprawę z pełnego zakresu terminala po zainstalowaniu zabawnego skryptu na komputerze Mac i konieczności chmod 755
uruchomienia pliku, aby później był wykonywalny.
Chciałbym jednak wiedzieć, co to /usr/local/bin
jest. /usr/
Zakładam, że jest użytkownikiem komputera. Nie jestem jednak pewien, dlaczego /local/
tam jest. Oczywiście oznacza lokalny komputer, ale skoro jest na komputerze (lub serwerze), czy naprawdę byłby potrzebny? Nie /usr/bin
byłoby dobrze?
A co to jest /bin
? Dlaczego ten obszar jest zwykle używany do instalowania skryptów na terminalu?
Blisko.
Unix zaczynał jako system operacyjny dla wielu użytkowników, więc nie jest to „użytkownik”, to „ użytkownicy ” w liczbie mnogiej.
Przed wydaniem AT&T Unix System V Release 4 (SVR4) w 1988 r. Z narzędziami zarządzania użytkownikami domyślnie tworzącymi katalogi domowe użytkowników
/home
, konwencjonalna lokalizacja to/usr
.¹ Twój$HOME
katalog mógł znajdować/usr/jfw
się w pudełku Systemu III ./usr
również zawarte, wtedy jak i teraz/usr/bin
,/usr/lib
itp Doświadczenie wykazało, że segregacji katalogów domowych była dobra praktyka zarządzania systemem, więc ze/home
zmianą polityki w SVR4, to pozostawił wszystko, co obecnie uważamy za przynależności/usr
./usr
wciąż miał dobry powód, by trzymać się tej nazwy: pozostały tylko pliki, które nie musiały być dostępne, dopóki system nie uruchomił się wystarczająco daleko, by obsługiwać normalne interaktywne użytkowanie. Oznacza to, że pozostały zorientowane na użytkownika części systemu operacyjnego. Oznaczało to, że/usr
może on znajdować się na innym woluminie fizycznym, co było dobrą rzeczą w czasach 92 MB dysków twardych wielkości pralek .Wczesne systemy uniksowe
/usr
starały się unikać podstawowych plików systemu operacyjnego, aby nadal można było uruchomić system w trybie pojedynczego użytkownika², nawet jeśli z/usr
jakiegoś powodu wolumin był niemożliwy do zamontowania . Wolumin główny zawierał wystarczające narzędzia do przywrócenia/usr
woluminu online.Kilka smaki Unix teraz pominąć tę starą zasadę konstrukcyjną, ponieważ nawet małe systemy wbudowane mają wystarczająco dużo miejsca zarówno dla tradycyjnych plików głośności korzeń i wszystko
/usr
na jednym volume.³ Red Hat Enterprise Linux, Solaris i Cygwin dowiązanie symboliczne/bin
do/usr/bin
i/lib
aby/usr/lib
tak, że nie ma dłuższa różnica między tymi katalogami.Tak. Odnosi się do faktu, że pliki poniżej
/usr/local
powinny być specyficzne dla tego pojedynczego systemu. Pliki, które są w jakikolwiek sposób ogólne, powinny znajdować się gdzie indziej.Ma to również swoje korzenie w sposobie, w jaki systemy Unix były powszechnie używane dekady temu, kiedy wszystko to zostało znormalizowane. Ponownie, dyski twarde w tamtych czasach były nieporęczne, naprawdę drogie i mało przechowywane według dzisiejszych standardów. Aby zaoszczędzić pieniądze i miejsce na dyskach, laboratorium komputerowe pełne skrzynek Unix często
/usr
dzieliło większość z NFS lub innego sieciowego protokołu udostępniania plików, więc każde pudełko nie musiało mieć własnej nadmiarowej kopii. Pliki specyficzne dla pojedynczego pole pójdzie pod/usr/local
, co byłoby oddzielnym tomem od/usr
.To historyczne dziedzictwo jest powodem, dla którego większość programów uniksowych innych firm jest instalowana
/usr/local
ręcznie. Większość takiego oprogramowania pozwala zainstalować pakiet w innym miejscu, ale nie dokonując wyboru, otrzymujesz bezpieczne ustawienie domyślne, które nie koliduje z innymi popularnymi lokalizacjami instalacji o bardziej szczegółowych celach.Istnieją dobre powody, aby zamiast tego instalować oprogramowanie w innym miejscu. Zespół Apple MacOS robi to, gdy buduje, powiedzmy,
bash
z kodu źródłowego GNU Bash . Używają/
jako prefiksu instalacji, zastępując/usr/local
domyślny, więc Bash kończy się w/bin
.Innym przykładem jest sposób, w jaki starsze systemy Linux segregowały swoje oprogramowanie GUI
/usr/X11R6
, aby oddzielić je od tradycyjnego wiersza poleceń icurses
oprogramowania opartego na oprogramowaniu. Dokonano tego po prostu nadpisując domyślny/usr/local
przedrostek za pomocą/usr/X11R6
.⁵Jest skrótem od „binarny”, co w tym kontekście oznacza „plik, który nie jest zwykłym tekstem”. Większość takich plików to pliki wykonywalne w systemie Unix, więc te dwa terminy stały się synonimami w niektórych kręgach. („Proszę, zbudujcie mnie plik binarny dla RHEL 7, Fred.”)
Pliki tekstowe na polu Unix żyć gdzie indziej:
/etc
,/usr/include
,/usr/share
, itd.Dawno, dawno temu nawet skrypty powłoki - które są zwykłymi plikami tekstowymi - były trzymane poza
bin
katalogami, ale ta linia również się zacierała. Dziśbin
katalogi zazwyczaj zawierają dowolny plik wykonywalny, czy to ściśle „binarny”, czy niePrzypisy i dygresje :
Prymitywna natura narzędzi do zarządzania użytkownikami przed SVR4 oznaczała, że
HOME=/usr/$NAME
schemat został jedynie udokumentowany jako konwencja, a nie domyślnie wymuszony przez narzędzia programowe.Możesz to zobaczyć na str. 4-8 „ Podręcznika administratora systemu AT&T Unix System V Release 3.2 : tutaj AT&T zaleca stary
/usr/$NAME
schemat ostatniej ostatniej wersji Unixa przed wydaniem SVR4.W starszych systemach uniksowych administratorzy systemu dość często wybierali inny schemat, który był dla nich bardziej sensowny. Ludzie będący ludźmi oznaczali, że wymyślono wiele różnych schematów.
Jednym ze schematów, z którym się zetknąłem,
/home/$NAME
stał się standardem/u/$NAME
.Inny system użyłem na początku 1990 mieliśmy tak wielu użytkowników, którzy nie mogli dopasować wszystkie katalogi domowe na jednym tomie fizycznej, dlatego stosowany schemat podobny
/u1/$NAME
,/u2/$NAME
i tak dalej, o ile pamiętam. To, na którym dysku skończył się Twój katalog domowy, było po prostu kwestią tego, który z nich miał miejsce w momencie tworzenia konta.Możesz uruchomić system macOS w trybie pojedynczego użytkownika, przytrzymując go Cmd-Spodczas uruchamiania. Puść, gdy ekran zmieni kolor na czarny i zobaczysz jasnoszary tekst. To tak, jakby działało pod terminalem, ale przejmuje cały ekran, ponieważ GUI jeszcze się nie uruchomił.
Uważaj, biegniesz jak
root
.Wpisz „exit” w monicie użytkownika root, aby wyjść z trybu jednego użytkownika i kontynuować uruchamianie w trybie GUI dla wielu użytkowników.
Uniksowe systemy operacyjne, które nadal wydają się utrzymywać krytyczne pliki trybu pojedynczego użytkownika,
/usr
mogą w rzeczywistości tego nie robić. Kiedyś sprawiłem, że pudełko FreeBSD 9 nie uruchamia się, przechodząc/usr
na wolumin ZFS. Zapomniałem, że funkcje ZFS-on-root nie wylądowały aż do FreeBSD 10, tworząc Catch 22 : system operacyjny potrzebował plików/usr
do zamontowania/usr
!To było wystarczająco złe, ale gdyby FreeBSD 9 nadal
/usr
nie pozwalał na uruchomienie jednego użytkownika , mógłbym to naprawić. Ponieważ nie uruchomiłby się nawet w trybie pojedynczego użytkownika, ponieważ nie można go/usr
było zamontować, jasne jest, że tradycja została w jakiś sposób naruszona. Musiałem uruchomić komputer z ratunkowej płyty CD, aby ponownie uruchomić system.Tutaj też otrzymujemy
/usr/share
: segreguje pliki, które mogą być współużytkowane nawet między skrzynkami Unix z różnymi typami procesorów. Zwykle pliki tekstowe: strony podręcznika, słownik itp.„X11R6” odnosi się do wersji systemu X Window, która stanowiła podstawę graficznych interfejsów systemu Linux w czasie, gdy ta konwencja była powszechna. Systemy Linux generalnie przestały segregować oprogramowanie GUI w momencie, gdy X11R6 zostało zastąpione X.Org .
Oryginalne systemy uniksowe zachowały swoje podstawowe skrypty powłoki
/etc
, aby uniknąć mieszania ich z prawdziwymi plikami binarnymi/bin
.źródło
Poleciłbym odwoływać się do Wikipedii w celu uzyskania ogólnych pytań dotyczących struktury, obejmie ona podstawy.
Aby jednak bezpośrednio odpowiedzieć na twoje pytanie:
Dlatego masz tendencję do znajdowania podobnej struktury między nimi; / usr / {, local /} {bin, sbin, lib}. Będąc nowym w powłoce, ten kawałek z {} jest rozszerzeniem powłoki. Spróbuj wykonać
z lokalnej powłoki, aby zobaczyć, jak to działa.
źródło
/usr/local/bin
pokazuje unikatowe korzenie najnowszego systemu Mac OS (pod nim opartego na BSD).Zmieniło się to od wczesnych wdrożeń UNIX do Linuksa i BSD, ale konwencja pozostała. Teraz
/usr/bin
byłoby dla „głównych” lub podstawowych programów i bibliotek, gdzie/usr/local/bin
byłoby dla dodatkowych i niekrytycznych programów i bibliotek.źródło
/usr/nzwulfin
domyślnie. Kolejny wspólny schemat. zanim/home
przejął program SVR4 , był/u
. Jeden system, z którego korzystałem wcześniej, miał tak wielu użytkowników, że potrzebowali wielu fizycznych dysków do przechowywania plików użytkownika, więc mieli takie rzeczy/u/d5/tangent
./usr/local/bin
jest najpopularniejszą domyślną lokalizacją plików wykonywalnych, zwłaszcza tych typu open source.Jest to jednak prawdopodobnie zły wybór, ponieważ w systemach Unix
/usr
na początku lat dziewięćdziesiątych został znormalizowany, aby zawierał hierarchię plików należących do systemu operacyjnego, a zatem może być współdzielony przez wiele systemów korzystających z tego systemu operacyjnego.Ponieważ pliki te są statyczne,
/usr
system plików można zamontować tylko do odczytu./usr/local
pokonuje ten standard, ponieważ jest projektowany lokalnie, dlatego nie jest współdzielony, więc należy go czytać i zapisywać, aby umożliwić lokalną kompilację i nie jest częścią systemu operacyjnego. Szkoda, że/opt/local
zamiast tego nie wybrano czegoś takiego ...źródło
Polecam używać
/usr/local
programów komercyjnych, które możesz zainstalować, takich jak Mathematica. Podczas konfiguracji umieść go we własnej partycji. Po uaktualnieniu systemu operacyjnego ta partycja nie zostanie zakłócona i nie będziesz musiał ponownie instalować jej zawartości. Używaj go więc do przechowywania rzeczy między aktualizacjami systemu operacyjnego.Z
/home
tego samego powodu upewnij się, że podałeś własną partycję.źródło
Ta odpowiedź może być również pomocna.
/ usr / local
Pierwotnym pomysłem
/usr/local
było posiadanie osobnego („lokalnego”) katalogu / usr na każdej maszynie oprócz tego/usr
, który mógłby być montowany tylko do odczytu z innego miejsca. Kopiuje strukturę/usr
.Obecnie
/usr/local
jest powszechnie uważany za dobre miejsce do przechowywania programów kompilowanych samodzielnie lub programów innych firm./usr/local
Hierarchia jest do wykorzystania przez administratora systemu podczas instalacji oprogramowania lokalnie. Przed aktualizacją oprogramowania systemowego należy zabezpieczyć go przed nadpisaniem.Może być używany do programów i danych, które są współużytkowane przez grupę hostów, ale nie znajdują się w
/usr
. Oprogramowanie zainstalowane lokalnie musi być umieszczone w nim/usr/local
,/usr
chyba że jest instalowane w celu wymiany lub aktualizacji oprogramowania/usr
.źródło