Do którego katalogu należy zainstalować programy w systemie Linux?

43

Chcę zainstalować program w systemie Linux i uruchomić go jako demona. (Team Speak 3 w tym przypadku, ale pytanie ma charakter ogólny). Nie ma pakietu, tylko binarne pliki binarne. Gdzie w strukturze katalogów powinienem umieścić taki program zgodnie z konwencją?

W Internecie odkryłem, że / opt jest dla „opcjonalnych aplikacji dodatków”, podczas gdy / usr jest dla „programów użytkownika”. Znalazłem jeden samouczek sugerujący / opt, podczas gdy drugi sugerował / usr.

Który z nich jest „bardziej poprawny”?

Eiver
źródło
1
„Poprawniejsze” zależy od twojej dystrybucji. Powinieneś sprawdzić wytyczne dystrybucji, gdzie umieścić oprogramowanie, które nie jest zarządzane przez menedżera pakietów (często /usr/local) LUB jak stworzyć dla niego własny pakiet.
Leiaz
Dziękuję Leiaz. Twój komentarz pomógł mi znaleźć odpowiedź ( askubuntu.com/questions/1148/… ). Myślę, że w moim przypadku powinien to być / opt (przy użyciu Linux Mint, który jest oparty na Ubuntu), a aplikacja korzysta z jednego folderu. Jeśli przekształcisz swój komentarz w odpowiedź, zaakceptuję go.
Eiver

Odpowiedzi:

27

„Poprawniejsze” zależy od twojej dystrybucji. Powinieneś sprawdzić wytyczne dystrybucji, gdzie umieścić oprogramowanie, które nie jest zarządzane przez menedżera pakietów (często /usr/local) LUB jak stworzyć dla niego własny pakiet.

Jak powiedziałeś, TeamSpeak po prostu umieścił wszystko w jednym folderze (i reorganizacja może nie być łatwa), tak /opt/jest prawdopodobnie najlepszy.

(Ale na przykład w Archlinuxie menedżer pakietów może tam zainstalować, więc nadal chciałbym zainstalować PKGBUILD /opt.)

Również dystrybucje zwykle starają się postępować zgodnie ze standardem hierarchii systemu plików , więc tutaj należy szukać bardziej ogólnej konwencji.

Leiaz
źródło
czy istnieje jakiś alias, aby wiedzieć, gdzie znajduje się każdy katalog według użycia? (na przykład gdzie umieścić konfiguracje root, gdzie umieścić pliki binarne, zależności, szablony ...)
Sandburg
5

Jeśli będziesz kompilować własne oprogramowanie, ostatecznie kontrolujesz lokalizację instalacji. Zgodnie z konwencją oprogramowanie kompilowane i instalowane ręcznie (nie za pomocą menedżera pakietów, np. Apt, yum, pacman) jest instalowane w /usr/local. Niektóre pakiety (programy) utworzą wewnątrz podkatalog, w /usr/localktórym będą przechowywane wszystkie odpowiednie pliki, takie jak /usr/local/openssl. Inne pakiety zainstalują niezbędne pliki w istniejących katalogach, takich jak /usr/local/sbini /usr/local/etc. Są to po prostu domyślne lokalizacje, które można zmienić podczas kompilacji.

Podczas kompilowania oprogramowania lokalizację instalacji można określić, korzystając z --prefix=opcji podczas działania ./configure. Zdecydowanie zaleca się sprawdzenie wszystkich dostępnych opcji pakietu poprzez uruchomienie $ ./configure --help | less. Ponadto przeglądanie dokumentów INSTALL i README dostarczonych z pakietem jest dobrym pomysłem. Zazwyczaj zawierają instrukcje instalacji i informacje o zależnościach specyficzne dla pakietu.

Należy również zauważyć, że chociaż możesz przechowywać oprogramowanie w dowolnym miejscu, zgodnie z FHS , kod źródłowy dla oprogramowania zainstalowanego lokalnie powinien być przechowywany w obszarze /usr/local/src Standaryzacja, w którym przechowujesz drzewa źródłowe, pozwoli ci łatwo zlokalizować drzewo, jeśli chcesz skopiować zapas plik konfiguracyjny lub binarny. Mimo że niektóre pakiety go używają, kodu źródłowego nie należy przechowywać, /usr/srcponieważ jest on przeznaczony dla oprogramowania systemowego, takiego jak jądro.

Wreszcie musisz upewnić się, że miejsce instalacji jest uwzględnione w twoim $PATH. Jeśli zdecydujesz się zainstalować pakiet, /optale nie ma go w $PATHpowłoce, nie znajdziesz plików wykonywalnych i będziesz musiał użyć bezwzględnej ścieżki, aby wywołać swoje programy. Oto kilka świetnych dyskusji z AU na temat konfiguracji twojego$PATH

Dodatkowe czytanie: man hier

zatoczka
źródło
5

Linux Standard Base , a standard hierarchii systemu plików są prawdopodobnie standardy, gdzie i jak należy zainstalować oprogramowanie w systemie Linux i sugeruje umieszczenie oprogramowania, które nie są zawarte w dystrybucji albo w /optlub /usr/local/czy raczej w nim podkatalogi ( /opt/<package> /opt/<provider> /usr/local/bin).

Najlepszą praktyką jest konwertowanie pobieranego oprogramowania na instalowalny pakiet oprogramowania natywny dla Twojej dystrybucji, na przykład formaty dpkg lub rpm. Ułatwi to raportowanie, aktualizację i czyste usuwanie oprogramowania.

HBruijn
źródło
To po prostu ponownie określa pytanie, zamiast na nie odpowiadać. PO był tego świadomy /opti /usr/local/były dwiema dostępnymi opcjami, ale potrzebował konkretnych informacji, z których jednej z nich skorzystać. To może być prawidłowa odpowiedź, jeśli zamiast tego twierdzi, że dwie lokalizacje są wymienne (chociaż kwestionowałbym, że w takim przypadku byłaby to prawidłowa odpowiedź).
JBentley
1

Pliki binarne przechodzą do binfolderu według wspólnych konwencji. To, jak zorganizujesz strukturę pakietu, zależy od ciebie. Mogę pomyśleć, /opt/<prog_name>/czy jest to tylko lista plików binarnych.

bbsanem
źródło
Obawiam się, że faceci Team Speak 3 stworzyli program w taki sposób, że wszystko, czego potrzebuje, znajduje się w jednym folderze (pliki binarne, pliki konfiguracyjne, logi), więc nie używa / bin lub / etc ani / var / log
Eiver
1

Miałem to samo pytanie podczas instalowania Eclipse za pomocą instalatora Eclipse.

Zauważyłem, że Gimp, Perl i Vim są zainstalowane w /usr/sharefolderze i postanowiłem je tam zainstalować.

senpai
źródło
0

Istnieją dwa sposoby instalowania programów w zależności od sposobu ich pakowania.

  1. Przez menedżera oprogramowania (apt, synaptic, Gdebi itp.) - program ma postać pakietu, zwykle .deb lub rpm. Menedżerowie oprogramowania w większości przypadków obsługują zależności i zwykle instalują pliki binarne /usr/bin, pliki konfiguracyjne /etci tak dalej. Zwykle mogą też utworzyć plik konfiguracyjny programu w domu ~/.foo. Jeśli możesz edytować ten plik, możesz w ten sposób łatwo zmienić ustawienia swojej sesji. Po usunięciu pakietu menedżer znajdzie wszystkie pliki i usunie je czysto (zapisał wszystkie lokalizacje w specjalnym pliku tekstowym). Ale może zachować niektóre pliki konfiguracyjne, na przykład ten w folderze domowym.

  2. Pobierasz program (zwykle skompresowany) w postaci wstępnie skompilowanych plików binarnych dla swojej architektury. Plik wykonywalny programu znajduje się zwykle w jednym folderze obok innych plików (dynamicznie linkowanych bibliotek itp.) Cały ten folder można skopiować, z uprawnieniami administratora, do /optlub /usr/bini, jeśli pozwalają na to uprawnienia, może być używany przez dowolnego użytkownika. Sam umieszczam foldery z plikami binarnymi w moim folderze domowym ~/bin. Teraz powinieneś być w stanie uruchomić program, wywołując jego plik bin.

Štěpán Doan
źródło