Co to jest Linux równoważny C: \ Program Files?

64

Rozumiem, że w systemach Windows, Linux i Unix program | aplikacja | oprogramowanie może być zainstalowany w dowolnym katalogu. Również jeśli pakiety są instalowane przy użyciu systemu pakowania dystrybucji, pliki zostaną umieszczone we właściwej lokalizacji.

Ale czasami instalacja oprogramowania monituje o ścieżkę do umieszczania plików. W przypadku dystrybucji Linuksa, gdzie jest to domyślne miejsce ( C:\Program Fileslub C:\progra~1odpowiednik)? Czy jest inaczej dla różnych dystrybucji? Jeśli tak, to gdzie będzie to dla RHEL, Susei Ubuntu?

Tomasz
źródło

Odpowiedzi:

60

Projekt dokumentacji systemu Linux zawiera opis hierarchii systemu plików Linux, w której wyjaśniają różne foldery i ich (częściowo historyczne) znaczenie.

Jak już wskazano ksenoterrakid /bini /optsą to standardowe katalogi, które można porównać do „Program Files” w systemie Windows.

/binzawiera kilka przydatnych poleceń, które są przydatne zarówno dla administratora systemu, jak i dla użytkowników nieuprzywilejowanych. Zwykle zawiera muszli jak bash, cshitd .... i powszechnie używane polecenia, takie jak cp, mv, rm, cat, ls.

( cytowany z TLDP )

/optjest zarezerwowany dla całego oprogramowania i dodatków, które nie są częścią domyślnej instalacji. Na przykład pakiety StarOffice, Kylix, Netscape Communicator i WordPerfect zwykle znajdują się tutaj.

( cytowany z TLDP )

Axel Knauf
źródło
9
Czy opcja / opt nie jest używana tylko w przypadku pakietów, które nie są zawarte w repozytoriach? Foldery aplikacji dla inkscape, gimp, rhythmbox itp. Znajdują się w / usr / share. Czy nie byłby to odpowiednik?
c76c3r8c42b347r8,
5
Zobacz linuxfoundation.org/en/FHS dla nowszych informacji na temat hierarchii systemu plików (FHS). (Uwaga: strona jest obecnie niedostępna, ale wkrótce powinna zostać ponownie utworzona).
jw013,
@Toxicbits: Przynajmniej w Gentoo w / opt istnieją pakiety binarne - szczególnie te, których nie można zainstalować w / usr z powodu niestandardowej hierarchii systemu plików.
Maciej Piechotka,
TLDP wydaje się świetny! Na marginesie; Gdy pierwszy raz zobaczyłem TLDP, pomyślałem: „zbyt długo nie osiągnęło ... maksimum?
Ege Özcan
3
To jest niepoprawne. / bin zawiera tylko programy wykonywalne. Katalog plików programu Windows zawiera podkatalog dla każdej zainstalowanej aplikacji, który zawiera wszystkie pliki wykonywalne, pliki dll, pliki danych i wszystko inne potrzebne / dostarczone z aplikacją.
psusi
45

Nie ma bezpośredniego odpowiednika. Struktura katalogów jest bardzo różna. W systemie Windows masz jeden katalog dla każdego zainstalowanego pakietu / oprogramowania, który zawiera wszystkie pliki związane (np C:\Program Files\MyProgram.). W systemie Linux każde oprogramowanie jest „rozproszone” w wielu katalogach zgodnie z typem pliku i innymi zasadami.

Jako przykład możemy zbadać, gdzie xscreensaverinstalowane są różne pliki związane z programem:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

Nie martw się, zazwyczaj, gdy instalator pyta gdzie zainstalować, poprawna odpowiedź jest jedną z następujących czynności: /, /opt, /usr,/usr/local

Jak widać, całkiem wszystkie (1) pliki xscreensaversą instalowane /usrzgodnie z prostą zasadą: pliki wykonywalne w /usr/bin, strony podręcznika w /usr/share/man, dokumentacja w /usr/share/doc/packages/PROGRAMNAMEitd.

Kiedy instalator prosi o instalację prefix, zwykle chce teraz podstawową ścieżkę, pod którą należy zainstalować program. W moim xscreensaverprzykładzie tak jest /usr.

Jako prosta zasada: /powinien zawierać tylko program potrzebny do uruchomienia systemu (as C:\windows\system32), /usr/localpowinien zawierać programy potrzebne tylko na tym unikalnym komputerze, /opt(2) wszystkie programy opcjonalne , które mają niestandardową strukturę katalogów i /usrcałe standardowe oprogramowanie .

W każdym razie istnieje standard, który szczegółowo określa wszystkie te reguły: Standard systemu plików

(1) Pliki konfiguracyjne dla całego systemu muszą znajdować się w /etc

(2) dość przestarzałe pod Linuksem

andcoz
źródło
/optjest preferowane w przypadku oprogramowania innych firm /usr/localod dłuższego czasu.
Steve-o
7
Samo wyjaśnienie /usr/sharenazywa się „udostępnij”, ponieważ jest dzielone między różnymi architekturami (dokumentacja, skrypty, obrazy), podczas gdy /usr/lib*dotyczy plików zależnych od architektury (a nie plików wykonywalnych, które /usr/bin).
eudoxos,
12

Ususually, /bin, /usr/bin, /usr/local/bin, lub /opt/bin. Myślę, że /usr/bini /opt/binsą najbliżej Program Files, ponieważ zwykle są one dla niezarejestrowanych krytycznych binariów systemowych, które są instalowane przez administratora systemu, choć w przeciwieństwie do okien oba te zawierają programy zainstalowane w menedżerze pakietów. Gdzie /usr/local/binjest dla oprogramowania niepakowanego w dystrybucji. /binjest przeznaczony do krytycznych dla systemu plików binarnych, takich jak /bin/sh.

ksenoterracid
źródło
dlaczego cztery opcje? /bin, /usr/bin, /usr/local/binLub /opt/bin. Czy nie ma jednej standardowej lokalizacji? Powodem, dla którego pytam, jest to, że instaluję oprogramowanie na kilku maszynach wirtualnych, a domyślna lokalizacja zajmuje miejsce, na którym kiedykolwiek partycja ma najwięcej miejsca. Chcę zmienić przestrzeń partycji na katalog, do którego zazwyczaj przechodzi oprogramowanie i nie umieszczam oprogramowania inaczej we wszystkich maszynach wirtualnych.
Thomas
1
standard określa wiele lokalizacji idk, dlaczego ścieżka nie działa, ale tutaj jest link do buforowanego FHS, który zawiera więcej definicji tego, co to jest, i tak naprawdę zależy to od tego, co instalujesz. RHEL, Suse i Ubuntu są różne, więc mogą umieszczać to samo w nieco innych lokalizacjach. /optna przykład jest zwykle używany w oprogramowaniu prawnie zastrzeżonym.
ksenoterrakid,
Ponadto zwykle ... zazwyczaj wszystkie znajdują się na tej samej partycji ... czasami /usr/jest oddzielną partycją.
ksenoterracid
1
Niektórzy ludzie (np projektu Hurd) twierdzić, że /bini /usr/bindyskryminacja jest przestarzały teraz; Historycznie rzecz biorąc, układ krytyczne rzeczy byłoby /bin, /lib... (bezpośrednio w katalogu głównym), natomiast /usr(z /usr/bin, /usr/lib...) zostaną zamontowane później (być może za pośrednictwem sieci), nie jest to konieczne dla podstawowej funkcjonalności systemu.
eudoxos,
1
@ Thomas, /optnie powinien wyjść. W przeszłości niektórzy sądzili, że dobrym pomysłem jest posiadanie niektórych aplikacji w innym miejscu niż wszystkie inne aplikacje. /binjest na partycji root. Ponieważ w niektórych systemach przestrzeń na partycji głównej jest ograniczona, przeniesiono do niej nieistotne pliki binarne (tj. Wszystkie aplikacje użytkownika) /usr/bin.
Jan
8

Spójrz na man hierto „Opis hierarchii systemu plików”.

vasily-vm
źródło
3

Jak zauważyli inni, programy zainstalowane za pomocą menedżera pakietów są rozproszone w kilku katalogach. Podczas gdy zwykle znajduje się plik binarny /usr/bin, dostępne są systemowe pliki konfiguracyjne /etci tak dalej.

Jeśli aplikacja nie zostanie zainstalowana za pomocą menedżera pakietów, pliki powinny zostać zainstalowane w miejscu, w którym nie będą kolidować z menedżerem pakietów. To miejsce jest /usr/local.

Jeśli zostaniesz poproszony o podanie ścieżki instalacji, najczęstszym wyborem będzie /usr/local/appname

Jan
źródło
3

Wpisz echo $PATHswój terminal, aby zobaczyć ścieżki, w których powłoka będzie szukać polecenia. Sprawdza plik w kolejności, w jakiej jest drukowany.

Jaseem
źródło
1
Nie odpowiada to na pytanie OP.
Francesco Turco
1

No nie znajdziesz wszystkie rozwiązania /bini sbindlatego trzymają głównie poleceń systemowych (czyli poleceń używanych przez system).

/usr/binidealnie można go nazwać "Program Files"światem unix. Jeśli chodzi o /optbardzo niewiele pakietów, wybierz tę lokalizację do instalacji, to samo dotyczy pakietów używających /etc/lub /varjako lokalizacji

pankajdoharey
źródło