Dlaczego powinienem przenieść wszystko do / opt?

16

Za każdym razem, gdy czytam wskazówki dotyczące instalowania SDK, IDE, jakiegoś rozszerzenia i tak dalej, mówi, że powinienem rozpakować je w /optfolderze. Dlaczego muszę to zrobić?

Kiedy instalowałem Ubuntu, przeczytałem, że powinienem ustawić tylko 10-20 GiB dla /systemu plików i pozostałe miejsce na /home. Czy powinienem więc rozszerzyć przestrzeń na folder główny, czy zostawić wszystkie rzeczy w /home? Czy jest jakaś różnica?

Pratic
źródło

Odpowiedzi:

20

Po pierwsze, zrozum, że każdy katalog, który nie jest jawnie punktem podłączenia dla oddzielnej partycji (lub podkatalogem takiego punktu podłączenia) jest przechowywany na /partycji root ( ). Zatem jeśli masz root ( /) i /homenie ma innych partycji, twój /optkatalog jest po prostu katalogiem root ( /). Podobnie jest w przypadku /tmp, /sbini cokolwiek innego. Zatem początkowe pytanie opiera się na fałszywym założeniu, że potrzebujesz osobnych partycji dla każdego katalogu, który prowadzi z root ( /), więc nie można na nie odpowiedzieć bezpośrednio.

Po drugie, /optjest używany do oprogramowania innych firm, co w kontekście Ubuntu oznacza wstępnie skompilowane oprogramowanie, które nie jest dystrybuowane za pośrednictwem pakietów Debiana. Czasami zobaczysz oficjalną dokumentację programu, do której się odwołuje /opt, ale dostępne są pakiety Debiana, które upuszczają te pliki w innym miejscu. W takich przypadkach powinieneś zignorować oficjalną dokumentację lub przynajmniej zignorować odniesienia do jej lokalizacji podczas korzystania z pakietu Debian. Ponadto, jeśli masz wybór użycia wstępnie skompilowanego pakietu za pomocą tarballa lub pakietu Debian, zazwyczaj najlepiej jest użyć pakietu Debian. Podsumowując, używanie /optjest obecnie dość rzadkie. Jeśli nadal uważasz, że musisz wstawić pliki /opt, dobrze jest nazwać oprogramowanie, ponieważ ludzie tutaj mogą wiedzieć, czy pakiet Debiana jest dostępny dla tego oprogramowania.

Wreszcie, łącząc dwa poprzednie punkty, bardzo rzadko instalacje Ubuntu dzielą /optsię na osobną partycję, ponieważ rzadko jest tam przechowywana znaczna ilość danych. Większość oprogramowania Ubuntu trafia do /usrinnych lokalizacji. Kiedyś dzielono /usrgo na osobną partycję, ale dzisiaj taka praktyka jest dość rzadka. Jeśli tak się stało konieczne jest zainstalowanie oprogramowania w wiele /opt, a następnie tworząc osobną partycję dla niego możema sens - ale w wielu przypadkach tak naprawdę nie będzie to pomocne. Oddzielne partycje mają sens, jeśli trzeba inaczej obchodzić się z bezpieczeństwem, jeśli pomocne będą różne funkcje systemu plików, w celu udostępniania danych w wielu instalacjach systemu operacyjnego w konfiguracji uruchamiania wielu systemów operacyjnych i z innych powodów. Rutynowa instalacja oprogramowania prawdopodobnie nie skorzysta z oddzielnej partycji; w rzeczywistości utworzenie oddzielnej partycji /optmoże powodować problemy, jeśli rozmiar zużywany przez przechowywane w niej oprogramowanie zmieni się lub jeśli początkowo źle oszacujesz rozmiar.

Rod Smith
źródło
1
Re „korzystanie z / opt jest obecnie dość rzadkie” Jesteś pewien?
Pacerier
@Pacerier z jakiegoś powodu / opt wydaje się wracać, / usr / local był z pewnością bardziej popularny w Ubuntu kilka lat temu. W każdym razie IMHO, / opt i / usr / local są równoważne. Zobacz także linuxjournal.com/magazine/pointcounterpoint-opt-vs-usrlocal i tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html „W dzisiejszych czasach” / usr / local ”jest powszechnie uważany za dobre miejsce w których można przechowywać programy kompilowane samodzielnie lub programy innych firm ”.
Panther
8

Czy ty?

Faktem jest, że nie musisz tego robić. Używanie /optjest konwencją. Poleciłbym go używać, ale nie jest to absolutnie konieczne.

Z hierarchii systemu plików Linux: Rozdział 1. Hierarchia systemu plików Linux :

1.13 /optować

Ten katalog jest zarezerwowany dla całego oprogramowania i dodatków, które nie są częścią instalacji domyślnej. Na przykład pakiety StarOffice, Kylix, Netscape Communicator i WordPerfect zwykle znajdują się tutaj. Aby zachować zgodność z FSSTND, wszystkie aplikacje innych firm powinny być zainstalowane w tym katalogu. Każdy pakiet do zainstalowania tutaj musi zlokalizować swoje pliki statyczne (tj. Dodatkowe czcionki, clipart, pliki bazy danych) musi zlokalizować swoje pliki statyczne w osobnym drzewie katalogów / opt / „package” lub / opt / „provider” (podobnie do sposobu w którym system Windows zainstaluje nowe oprogramowanie we własnym drzewie katalogów C: \ Windows \ Progam Files \ „Nazwa programu”), gdzie „pakiet” to nazwa opisująca pakiet oprogramowania, a „dostawca” to zarejestrowana nazwa LANANA dostawcy.

Chociaż większość dystrybucji zaniedbuje tworzenie katalogów / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib i / opt / man, są one zarezerwowane do użytku lokalnego administratora systemu. Pakiety mogą zawierać pliki „front-end” przeznaczone do umieszczenia (przez łączenie lub kopiowanie) w tych zastrzeżonych katalogach przez administratora systemu, ale muszą działać normalnie w przypadku braku tych zastrzeżonych katalogów. Programy, które mają być wywoływane przez użytkowników, znajdują się w katalogu / opt / 'package' / bin. Jeśli pakiet zawiera strony podręcznika UNIX, znajdują się one w katalogu / opt / 'package' / man i należy użyć tej samej podbudowy co / usr / share / man. Pliki pakietów, które są zmienne, muszą być zainstalowane w / var / opt. Pliki konfiguracyjne specyficzne dla hosta są instalowane w / etc / opt.

W żadnym wypadku inne pliki pakietów nie mogą istnieć poza hierarchiami / opt, / var / opt i / etc / opt, z wyjątkiem plików pakietów, które muszą znajdować się w określonych lokalizacjach w drzewie systemu plików, aby poprawnie funkcjonować. Na przykład pliki blokady urządzenia w / var / lock i urządzenia w / dev. Dystrybucje mogą instalować oprogramowanie w / opt, ale nie mogą modyfikować ani usuwać oprogramowania zainstalowanego przez lokalnego administratora systemu bez zgody lokalnego administratora systemu.

Korzystanie z / opt w przypadku oprogramowania dodatkowego jest ugruntowaną praktyką w społeczności UNIX. Interfejs binarny aplikacji System V [AT&T 1990], oparty na definicji interfejsu System V (wydanie trzecie) i Intel Binary Compatibility Standard v. 2 (iBCS2), zapewnia strukturę / opt bardzo podobną do zdefiniowanej tutaj.

Zasadniczo wszystkie dane wymagane do obsługi pakietu w systemie muszą znajdować się w katalogu / opt / „pakiet”, w tym pliki przeznaczone do skopiowania do / etc / opt / „pakiet” i / var / opt / „pakiet”, a także zastrzeżone katalogi w / opt. Niewielkie ograniczenia dystrybucji za pomocą / opt są konieczne, ponieważ możliwe są konflikty między zainstalowanym oprogramowaniem a lokalnie zainstalowanym oprogramowaniem, szczególnie w przypadku ustalonych nazw ścieżek znalezionych w niektórych programach binarnych.

Struktura katalogów poniżej / opt / „dostawca” jest pozostawiona programowi pakującemu oprogramowanie, chociaż zaleca się, aby pakiety były instalowane w / opt / „dostawca” / „pakiet” i były zgodne z podobną strukturą jak wytyczne dla / opt / package. Prawidłowym powodem odejścia od tej struktury są pakiety wsparcia, które mogą mieć pliki zainstalowane w / opt / 'provider' / lib lub / opt / 'provider' / bin.

Torrien
źródło
To dziwne, ponieważ większość ludzi zaleca podzielenie małej ilości miejsca na katalog główny i pomyślałem, ponieważ nie będzie to wiele zmieniać. Wydaje się, że muszę przypomnieć tym radom, aby postępowały zgodnie z konwencjami?
Praytic
2
@Praytic Niezupełnie. W przeszłości /optczęsto był to osobny dysk. Zostałby wykorzystany do zainstalowania zastrzeżonego oprogramowania, które często wymagało ogromnej ilości miejsca na dysku z powodu łączenia wszystkich wymaganych bibliotek i innych zasobów. W dzisiejszych czasach dyski są tak duże, że wykonalne i łatwiej jest po prostu użyć jednego katalogu głównego na jednym dysku.
bain
4

/optjest używany do (czasem zastrzeżonych) aplikacji zewnętrznych, które nie są uważane za część dystrybucji Linuksa. Aplikacje te mogą mieć zakodowane ścieżki, więc będą działały poprawnie tylko po zainstalowaniu /opt- ale jeśli nie ma zakodowanych ścieżek, możesz je zainstalować na dowolnej ścieżce. Zainstalowany program /optpowinien być samodzielny.

Głównym powodem użycia /optjest zapewnienie wspólnej standardowej ścieżki, w której można zainstalować oprogramowanie zewnętrzne bez ingerencji w resztę zainstalowanego systemu. /optnie pojawia się w standardowych ścieżkach kompilatora lub łącznikiem ( gcc -print-search-dirslub /etc/ld.so.confitp), więc nagłówki i biblioteki zainstalowane tam są nieco odizolowana od głównego systemu i nie powinny kolidować z już zainstalowanych programów.

Użycie /optjest określone przez Fileystem Hierarchy Standard : / opt , który zauważa, że /optoryginalnie pochodzi z Uniksa.

/ opt: dodatkowe pakiety aplikacji

Cel, powód

Opcja / opt jest zarezerwowana do instalacji dodatkowych pakietów aplikacji.

Pakiet do zainstalowania w / opt musi zlokalizować swoje pliki statyczne w osobnym drzewie katalogów / opt / <package> lub / opt / <provider>, gdzie <package> to nazwa opisująca pakiet oprogramowania, a <Provider> to zarejestrowana nazwa LANANA dostawcy.

Wymagania

Katalogi / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib i / opt / man są zarezerwowane do użytku lokalnego administratora systemu. Pakiety mogą zawierać pliki „front-end” przeznaczone do umieszczenia (przez łączenie lub kopiowanie) w tych zastrzeżonych katalogach przez lokalnego administratora systemu, ale muszą działać normalnie przy braku tych zastrzeżonych katalogów.

Programy, które mają być wywoływane przez użytkowników, muszą znajdować się w katalogu / opt / <package> / bin lub w hierarchii / opt / <provider>. Jeśli pakiet zawiera strony podręcznika UNIX, muszą one znajdować się w / opt / <package> / share / man lub w hierarchii / opt / <provider>, i musi być użyta taka sama podkonstrukcja jak / usr / share / man.

Pliki pakietów, które są zmienne (zmiana w normalnym działaniu) muszą być zainstalowane w / var / opt. Więcej informacji znajduje się w sekcji / var / opt.

Pliki konfiguracyjne specyficzne dla hosta muszą być zainstalowane w / etc / opt. Więcej informacji znajduje się w sekcji / etc.

Żadne inne pliki pakietów nie mogą istnieć poza hierarchiami / opt, / var / opt i / etc / opt, z wyjątkiem plików pakietów, które muszą znajdować się w określonych lokalizacjach w drzewie systemu plików, aby działać poprawnie. Na przykład pliki blokady urządzenia muszą być umieszczone w / var / lock, a urządzenia muszą znajdować się w / dev.

Dystrybucje mogą instalować oprogramowanie w / opt, ale nie mogą modyfikować ani usuwać oprogramowania zainstalowanego przez lokalnego administratora systemu bez zgody lokalnego administratora systemu.

Racjonalne uzasadnienie

Korzystanie z / opt w przypadku oprogramowania dodatkowego jest ugruntowaną praktyką w społeczności UNIX. Interfejs binarny aplikacji System V [AT&T 1990], oparty na definicji interfejsu System V (wydanie trzecie), zapewnia strukturę / opt bardzo podobną do zdefiniowanej tutaj.

Intel Binary Compatibility Standard v. 2 (iBCS2) również zapewnia podobną strukturę dla / opt.

Zasadniczo wszystkie dane wymagane do obsługi pakietu w systemie muszą znajdować się w katalogu / opt / <package>, w tym pliki przeznaczone do skopiowania do / etc / opt / <package> i / var / opt / <package>, a także zastrzeżone katalogi w / opt.

Drobne ograniczenia dystrybucji za pomocą / opt są konieczne, ponieważ możliwe są konflikty między oprogramowaniem zainstalowanym w dystrybucji a oprogramowaniem zainstalowanym lokalnie, szczególnie w przypadku ustalonych ścieżek znalezionych w niektórych programach binarnych.

Struktura katalogów poniżej / opt / <Provider> jest pozostawiona programowi pakującemu oprogramowanie, chociaż zaleca się, aby pakiety były instalowane w / opt / <provider> / <package> i postępowały zgodnie z podobną strukturą jak wytyczne dla / opt / package. Prawidłowym powodem odejścia od tej struktury są pakiety wsparcia, które mogą mieć pliki zainstalowane w / opt / <provider> / lib lub / opt / <provider> / bin.

bain
źródło
3

Nie ma w tym nic świętego /opt, powszechną praktyką jest umieszczanie wstępnie skompilowanego oprogramowania, które powinno być dostępne dla wszystkich użytkowników systemu w tym katalogu. Jeśli jesteś jedynym użytkownikiem systemu, nie ma nic złego w wyodrębnieniu go z katalogu domowego. I nawet jeśli w systemie jest kilku użytkowników, którzy potrzebują dostępu do tego oprogramowania, ale chcesz wykorzystać miejsce na /homepartycji, nie ma nic złego w tworzeniu publicznie dostępnego /home/softwarenamekatalogu i rozpakowywaniu tam swojego oprogramowania (jedynym zastrzeżeniem jest to, że się zdarzysz aby mieć nazwę użytkownika softwarename, nie będzie można jej używać w katalogu osobistym użytkownika).

fkraiem
źródło
2

Szczegółowe odpowiedzi są bardzo dobre, ale (oprócz oprogramowania, które może zawierać w sobie twarde ścieżki bezwzględne - nie jest to najlepsza praktyka programowania), najważniejsze jest to, że oprogramowanie niesystemowe / nie-dystrybucyjne nie powinno być przechowywane w połączeniu z zwykłe pliki systemowe.

Wkładanie /optlub /usr/localutrzymywanie rzeczy w czystości i bezpieczeństwo.

W szczególności ścieżka wyszukiwania oprogramowania ($ PATH) określa kolejność wyszukiwania lokalizacji podczas szukania programu o określonej nazwie do wykonania. Zazwyczaj miejsca takie jak /opti /usr/localznajdują się na końcu listy.

Jeśli zainstalujesz pakiet z programem o nazwie cp, domyślna kolejność wyszukiwania dostarczona z dystrybucją znajdzie normalną, ponieważ katalog, w którym jest przechowywany, jest przeszukiwany przed takimi miejscami /opt.

Jeśli to nie zadziała w ten sposób, kto wie, co może złamać lub otworzyć lukę w zabezpieczeniach, jeśli program o nazwie, cpktóry robi coś innego, zostanie uruchomiony, gdy myślisz, że próbujesz po prostu skopiować niektóre pliki.

Jeśli coś takiego się wydarzy, może minąć trochę czasu, zanim ktoś pomyśli o uruchomieniu polecenia typu type cp(co może nawet nie wystarczyć, aby pokazać, że coś jest nie tak), aby dowiedzieć się, że to, co jest uruchamiane, nie jest tym, co myślisz. Do tego momentu utknąłeś w „Wszystko jest dokładnie tak, jak powinno być, pomijając drobny szczegół, że to nie działa!”

Zasadniczo pomaga w zapobieganiu nieoczekiwanym zdarzeniom, a także pozwala uniknąć sytuacji, w których aktualizacje systemu mogą usunąć lub zastąpić niektóre lub wszystkie „niestandardowe” zainstalowane pakiety. Z drugiej strony niektóre „niestandardowe” programy mogą nadpisywać programy dostarczane przez system, na których może polegać wiele innych programów lub skryptów.

Z administracyjnego punktu widzenia mieszanie programów / plików „systemowych” i „opcjonalnych” w tych samych lokalizacjach powoduje, że system znajduje się w „niezdefiniowanym” lub przynajmniej „dwuznacznym” stanie.

Jeśli masz problem z systemem lub programem i potrzebujesz pomocy, jednym z pierwszych pytań jest „Co zmieniłeś?” i „Czy możemy tymczasowo wyłączyć niektóre z tych zmian, abyśmy wiedzieli, że przyglądamy się prawdziwemu problemowi, a nie tylko objawowi czegoś innego”.

Dzięki osobnym lokalizacjom zmiany te można szybko zidentyfikować, a wszystko, co musisz zrobić (przynajmniej dla samych programów), to tymczasowo usunąć ich katalogi ze ścieżki.

Joe
źródło