Gdzie podczas instalowania aplikacji użytkownika „najlepsze praktyki” sugerują ich lokalizację?

210

Czasami instaluję aplikacje ręcznie, zamiast używać aptlub innego menedżera pakietów.

Jakie lokalizacja ( /usr/, /usr/local/, /opt/, /home/, itd.) Jest sugerowane przez „najlepszych praktyk” w zakresie instalacji aplikacji użytkownika?

citadelgrad
źródło
Lubiąc instalować rzeczy ze źródła co jakiś czas, napisałem małe narzędzie, które to robi, które samodzielnie wprowadza zmiany w pliku startowym powłoki (a także modyfikuje prefiks biblioteki, jeśli jest to wymagane, dla programów zależnych od bibliotek współużytkowanych ). Niezbyt bogaty w funkcje, ale działa 99% czasu.
new123456
Powiązany post: askubuntu.com/q/138547/62483
Lucio
1
Świetna dyskusja na temat rozróżnienia między /opti /usr/local: unix.stackexchange.com/q/11544/11917
blong

Odpowiedzi:

184

To naprawdę zależy. Jeśli aplikacja ma plik makefile lub na przykład dla aplikacji python, jeśli aplikacja korzysta z distutils (np. Ma setup.pyplik) lub podobnego systemu kompilacji / instalacji, należy go zainstalować /usr/local/. Jest to często zachowanie domyślne.

Z tego, co rozumiem, /usr/local/ma hierarchię podobną do /usr/. Jednak katalogi takie jak /usr/bin/i /usr/lib/są zwykle zarezerwowane dla pakietów instalowanych za pośrednictwem apt. Tak więc program, który ma zostać „zainstalowany”, /usr/powinien dobrze działać /usr/local/.

Jeśli potrzebujesz tylko wyodrębnić plik archiwum i uruchomić bezpośrednio (np. Firefox), włóż go do /opt/. Program, który potrzebuje tylko jednego katalogu i pobierze wszystkie pliki / biblioteki względem tego katalogu, może uzyskać jeden katalog dla siebie /opt/.

Umang
źródło
24
Wydaje się, że tak wielu ludzi zapomina opt/- moim zdaniem trafiłeś w sedno jak w jego cel.
Marco Ceppi
3
Utwórz dowiązanie symboliczne z / usr / bin lub dodaj go do PATH w ~ / .bashrc
Alex
1
Co ~/.local/share? @Marco
ultimatex
1
Możesz zainstalować rzeczy w ~swoim katalogu domowym, ale dzięki temu aplikacja będzie dostępna tylko dla jednego użytkownika. Inni użytkownicy w twoim systemie będą musieli zainstalować i utrzymywać własne instalacje tego oprogramowania. Jeśli chodzi o najlepsze praktyki instalowania aplikacji, zainstaluj katalog domowy, uważam, że nie ma tak mocnych wskazówek, ponieważ nie będziesz ingerował w pakiety systemowe.
Umang
1
Czy źle jest instalować aplikacje, które są „rozpakowane z tar” w / home / ubuntu / myapp - jakie to ma różnice w porównaniu z / opt / myapp?
JARC
116

Warto pamiętać, że /usrnie oznacza to zasobów systemowych użytkownika, a raczej unix .

Jako taki, mam tendencję do stwierdzenia, że ​​każda dystrybucja ma prawo do deptania po całej zawartości /usr,i że moje specyficzne dodatki do systemu wchodzą /usr/local, co zachowuję przed wykonaniem aktualizacji.

Tymczasem aplikacje i inne rzeczy wchodzą /opt.

Niektórzy ludzie czują się swobodnie wkładając różne rzeczy /home, chociaż rzadko stosuję się do tej konwencji.

To powiedziawszy: najpierw pozwalam menadżerowi pakietu dystrybucyjnego robić rzeczy po swojemu, a potem robić powyższe rzeczy, gdy robię to ręcznie.

Walt Stoneburner
źródło
35
Warto pamiętać, że „zasoby systemowe unix” to zmiana nazwy wykonywana PO dodaniu „/ home”. W dawnych, starych, dawnych czasach (Unix Version 6 i in.) Można było zobaczyć katalogi takie jak / usr / jimmy, / usr / siobhan, / usr / ahmed itp., Ponieważ katalogi „user” były przechowywane w / usr .
Mark Leighton Fisher
5
OK, ugryzę: co oznacza opt?
Seth
3
@Seth Myślę, że to „opcjonalne” - pierwotnie dotyczyło oprogramowania, które nie było częścią domyślnej instalacji.
Carl H,
5
/ usr jest User. Stało się tak, ponieważ użytkownicy Linuksa byli programistami. Po pierwsze, gdy zaczął się on dzielić na deweloperów i użytkowników, wprowadzono /homedir. A potem ktoś wpadł na pomysł, aby powiedzieć, że to oznacza Unix System Resources, co nie bardzo ma sens, ponieważ mamy Unix system Resourcesin/dev
Info ekranem
2
Prawidłowo, / usr to skrót. Cel zmienił się od czasów, kiedy Unix działał na PDP-7 w 1969 roku.
Walt Stoneburner
34

Instalowanie niestabilnych programów, takich jak firefox devel w / home / user / opt /, znacznie ułatwia usuwanie i nie ma wątpliwości dla innych użytkowników, co do wersji, z której powinni korzystać ... Więc jeśli nie jest to program do użytku globalnego, zainstaluj w podfolderze w twoim katalogu domowym.

Nigdy nie instaluj programów w / usr /, może to powodować chaos, rzeczy zainstalowane w / usr / przeznaczone są wyłącznie do pakietów dystrybucyjnych. / usr / local / jest dla pakietów kompilowanych lokalnie. Struktura działa dokładnie w ten sam sposób! pliki w / usr / local / będą miały pierwszeństwo przed plikami w / usr /

/ opt / powinien być używany do instalacji wstępnie skompilowanych (binarnych) pakietów (Thunderbird, Eclipse, Netbeans, IBM NetSphere itp.) i tym podobnych. Ale jeśli są one tylko dla jednego użytkownika, należy je umieścić w katalogu domowym.

Jeśli chcesz mieć możliwość uruchomienia programu zainstalowanego w „dziwnym” miejscu (jak / home / user / opt / firefox /) bez wpisywania całej ścieżki, musisz dodać go do zmiennej $ PATH, możesz to zrobić dodając taką linię w swoim /home/user/.profile

export PATH=/home/user/opt/firefox:$PATH

Nazwa folderu powinna być tą, w której znajduje się plik wykonywalny, który należy uruchomić.

LassePoulsen
źródło
26

Wskazuje standard hierarchii systemu plików Linux /usr/local.

Od http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

Pierwotną ideą „/ usr / local” było posiadanie osobnego katalogu („local”) „/ usr” na każdej maszynie oprócz „/ usr”, który może być montowany tylko do odczytu z innego miejsca. Kopiuje strukturę „/ usr”. W dzisiejszych czasach „/ usr / local” jest powszechnie uważane za dobre miejsce do przechowywania samodzielnie opracowanych programów lub programów innych firm. Hierarchia / usr / local jest używana przez administratora systemu podczas lokalnej instalacji oprogramowania. Przed aktualizacją oprogramowania systemowego należy zabezpieczyć go przed nadpisaniem. Może być używany do programów i danych, które można udostępniać w grupie hostów, ale nie można ich znaleźć w / usr. Oprogramowanie zainstalowane lokalnie musi być umieszczone w katalogu / usr / local zamiast / usr, chyba że jest instalowane w celu zastąpienia lub aktualizacji oprogramowania w / usr.

Popey
źródło
1
Wygląda na to, że przeczy temu / usr / local rzeczy z informacjami na stronie opt: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html „” Ten katalog jest zarezerwowany dla całego oprogramowania i pakietów 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. Aby zachować zgodność z FSSTND, wszystkie aplikacje innych firm powinny być zainstalowane w tym katalogu. „...” (podobnie do sposobu, w jaki system Windows instaluje nowe oprogramowanie we własnym drzewie katalogów C: \ Windows \ Progam Files \ "Nazwa programu ")"
Pod
6

Zwykle mam folder o nazwie „Programy” w moim domu, w którym instaluję te programy, dość dziwne (lub nie), że wszystkie są teraz w języku Java.

Ma to dla mnie jedną wielką zaletę: kiedy ponownie instaluję lub zmieniam komputery, są przenoszone wraz z resztą mojego domu. Ma to wyraźną wadę, aplikacje te są dostępne tylko dla mojego użytkownika.

Javier Rivera
źródło
Jak mogę ponownie zainstalować Ubuntu 16.04 bez utraty danych w folderze domowym? Próbowałem to zrobić tylko przez sformatowanie /katalogu, a następnie wpisanie tej samej starej nazwy użytkownika i hasła, ale okazało się, że Ubuntu tworzy inny folder domowy.
Ibrahim Disouki
1

Użyj „checkinstall”, aby przekonwertować pakiet obcy na deb, aby można go było odinstalować za pomocą menedżera pakietów.

Pamiętaj, że pliki konfiguracyjne często nie będą traktowane jako pliki konfiguracyjne (być może ignorowane lub traktowane jako część aplikacji) i że skrypty przed instalacją i po instalacji czasami się psują, chociaż zwykle ostrzega cię, gdy myśli, że deb będzie miał zły skrypt przed instalacją lub po instalacji.

Student na uniwersytecie
źródło