Gdzie jest zainstalowane oprogramowanie przechowywane w systemie Linux? [duplikować]

11

Możliwa duplikat:
Gdzie jest zainstalowany typowy program Linux

Jestem nowy w Linuksie i chcę zapytać trochę więcej o pakietach.

W systemie Windows pobieram .exeplik i instaluję go. Podczas instalacji określam ścieżkę, w której chcę przechowywać tę aplikację. W tym folderze mam wszystkie pliki wymagane dla aplikacji.

Jednak gdy instaluję pakiet w systemie Linux za pomocą yumlub apt-get, nie wiem, gdzie pakiet jest zainstalowany i gdzie są przechowywane wymagane pliki dla tej aplikacji. Widziałem, że większość konfiguracji znajduje się w /etckatalogu. Ale dlaczego Linux przechowuje wymagane pliki dla aplikacji w różnych katalogach?

Czy ktoś może mi powiedzieć, w jaki sposób pakiety są instalowane oraz gdzie i jak są przechowywane? A jeśli moje rozumienie zarządzania pakietami jest błędne, proszę mnie poprawić.

Społeczność
źródło
Jeśli używana jest twoja dystrybucja rpm, możesz użyć, rpm -q --whatprovidesaby znaleźć nazwę pakietu dla określonego pliku, a następnie rpm -q -adowiedzieć się, jakie pliki zainstalował pakiet.
David Schwartz,
Z apt-get, jeśli pakiet jest zainstalowany, użyj dpkg -L PKGNAME, jeśli nie jest używany apt-file list.
Thor

Odpowiedzi:

16

Wiele programów (pliki binarne / scripts) kończy się w /binlub /usr/binz innymi częściami w różnych katalogach konfiguracyjnych (często w / poniżej etc), jak już zaznaczył.

Dla każdego konkretnego polecenia możesz sprawdzić whereis

whereis prog_name

i poda informacje o tym, gdzie można znaleźć to polecenie. Można również spróbować które

which prog_name

Również ta grafika i objaśnienia / przykłady mogą być pomocne.

Levon
źródło
1
+1 dla whereis - bardzo przydatne dla początkujących w Linuksie
ale po prostu konfiguracja zapisana w osobnym katalogu?
@KOU Nie znam historii tego, ale może być tak, że programy mogą być aktualizowane bez zmiany informacji o konfiguracji, ponieważ będą one w innym katalogu. W ten sposób różne wersje mogą korzystać z tych samych informacji o konfiguracji (przy założeniu, że format itp. Nie został zmieniony, tj. Był zgodny). Po prostu się tu zastanawiam. Będziesz musiał zbadać historię systemu plików Unix / Linux, aby uzyskać jednoznaczną odpowiedź.
Levon
1
Nie jestem pewien historii decyzji o umieszczeniu wszystkich plików konfiguracyjnych w całym systemie /etc/, ale posiadanie jednej centralnej lokalizacji dla plików konfiguracyjnych bardzo ułatwia ich tworzenie kopii zapasowych. (Wyobraź sobie tworzenie kopii zapasowych plików konfiguracyjnych systemu w systemie Windows, gdzie są one rozproszone po całym systemie plików i rejestrze ...)
Li-aung Yip
@ Li-aungYip Dobry punkt
Levon
5

W systemie Windows, szczególnie w starszych wersjach, programy do przechowywania plików konfiguracyjnych i nietrwałych danych często znajdowały się w ich C:\Program Fileskatalogu. Wynika to ze sposobu, w jaki programy były zwykle instalowane i uruchamiane w systemie DOS dla jednego użytkownika, nie podłączonego do sieci i bez uprawnień dostępu do plików.

Z punktu widzenia bezpieczeństwa jest to zły pomysł. Miejsca, w których funkcjonuje kod wykonywalny, powinny być oddzielone od modyfikowalnych danych. W ten sposób łatwiej jest zastosować odpowiednie uprawnienia do plików, aby zapobiec modyfikacji zainstalowanych plików binarnych przez nieautoryzowanych użytkowników. Podobnie katalogi bibliotek, które mogą być aktualizowane osobno od głównych plików wykonywalnych, również powinny znajdować się w osobnym katalogu.

Wraz z pojawieniem się irytujących systemów Vista i UAC ta tradycja w końcu zaczyna poważnie tracić przyczepność.

UNIX i Linux, będąc znacznie wcześniejszym systemem dla wielu użytkowników, miały tendencję do oddzielania katalogów wykonywalnych od innych katalogów znacznie wcześniej, ponieważ konieczne było uniemożliwienie użytkownikom innym niż root modyfikowania zainstalowanych plików binarnych. Jest to również powód, /usra nawet /sbinczasem oddzielne partycje - szczególnie świadomy bezpieczeństwa administrator może montować te partycje tylko do odczytu i ponownie montować je w trybie odczytu / zapisu, gdy trzeba zainstalować / odinstalować.

Pakiety są zwykle instalowane z menedżera pakietów. Istnieją różne menedżery pakietów, takie jak aptitude(Debian i dystrybucje pochodne), yum(Redhat i dystrybucje pochodne), pacman(zapomnij, która to dystrybucja to ...) i inne.

Menedżer pakietów pozwala przeglądać repozytoria, pobierać, instalować, wyszukiwać i usuwać oprogramowanie, podobnie jak wyrafinowany (i bezpłatny) „sklep z aplikacjami”. Przyjmuje odpowiedzialność za dbanie o zależności i śledzenie tego, co jest obecnie zainstalowane.

Zwykle menedżer pakietów zezwala również na te same operacje na pakiecie, który pobrałeś ręcznie poza repozytoriami. Narzędzia są również dostępne, jeśli chcesz tworzyć własne na podstawie oprogramowania, które sam stworzyłeś lub skompilowałeś.

Ponieważ sam pakiet NIE jest plikiem wykonywalnym, nie musisz uruchamiać niezaufanego pliku wykonywalnego, którego tak naprawdę nie wiesz, co on robi. (Windows wreszcie pojawia się z aktualizacjami, dystrybuując .msuzamiast zamiast .exe- ale .msijuż od jakiegoś czasu ...)

LawrenceC
źródło
1
Re. pacman, to dla Arch Linux .
2

Możesz uzyskać listę plików yuminstalowanych przez dany pakiet, wykonując:

yum install yum-utils

Następnie możesz uruchomić go w następujący sposób:

repoquery --list yum-utils

(Oczywiście zamień „yum-utils” w tym drugim na nazwę pakietu, którego listę plików chcesz zobaczyć.)

Dla apt-get, można użyć:

dpkg -L package-name
sblom
źródło
1

Zwykle poniżej /usr/bin, choć zależy to od konkretnej instalowanej aplikacji lub biblioteki.

kprobst
źródło
1

W systemie Linux / Unix większość programów zwykle nie kończy się w jednym katalogu, ale różne jego części (pliki wykonywalne, pliki konfiguracyjne, pliki dziennika, dokumentacja, inne zasoby) są rozproszone w systemie plików - zwykle poprzez symlinkowanie. Artykuł w Wikipedii opisuje bardziej szczegółowo standardową strukturę katalogów w normalnej hierarchii systemu plików, pokazując różne katalogi i to, czego można się w nich znaleźć.

mgibsonbr
źródło
0

/optKatalog jest zarezerwowany dla systemu Windows, takich jak instalacjach, w których każdy ma swój własny pakiet drzewo katalogów. Nikt go nie używa. Nie jestem pewien dlaczego; może się zdarzyć, że dodawanie /opt/PACKAGE/bindo niego przy $PATHkażdej instalacji pakietu jest zbyt denerwujące.

Alan Curry
źródło
/optwydaje się być najczęściej używany przez komercyjne / niewolne pakiety oprogramowania, takie jak MATLAB.
Li-aung Yip,
Na moim Ubuntu 12.04 instaluje się Google Chrome, /optale także LibreOffice 3.5, który zainstalowałem bezpośrednio z tego miejsca .
0

Oprogramowanie w systemie Linux różni się nieco w paradygmacie od systemu Windows lub Mac. W nich plik wykonywalny i wszystkie jego pliki pomocnicze są instalowane w jednym folderze: Windows zwykle je trzyma c:\Program Files\program name, Apple w /Applications/program.app. Pod Linuksem istnieje bardziej ... wspólna struktura. Pliki binarne są na ogół włączone /usr/bin, konfiguracja ogólnosystemowa jest /etcwłączona, konfiguracja specyficzna dla użytkownika jest zwykle na ~/.program. Biblioteki są włączone, często /usr/libobsługują pliki (np. Dzieła sztuki) /usr/share/programitp. Istnieje nawet standard sugerujący, gdzie należy się udać.

Programy są zazwyczaj instalowane przez menedżerów pakietów, rpmoraz dpkg; są one automatycznie wyszukiwane i wyszukiwane (w tym zarządzanie zależnościami) odpowiednio przez yumi aptitude/ apt-get. Na bardziej technicznym poziomie, pakiety to proste skompresowane pliki (uważam, że rpm i deb to oba .tar.gz). Archiwa te zawierają kopię lustrzaną elementów systemu plików z katalogu głównego, do którego trafiają pliki (np. Plik, w którym ma zostać zainstalowany, /usr/bin/programbędzie znajdował się w usr/bin/programodpowiednim folderze w pakiecie.

Aby znaleźć informacje o konkretnym pakiecie, użyj menedżera pakietów dla swojego systemu, jak wyjaśnili inni tutaj.

Kevin
źródło
0

Hier podręcznika może zapewnić pewne spostrzeżenia

Anonimowy Czyhacz
źródło
2
Chociaż ten link może odpowiedzieć na pytanie, lepiej dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie.
MaQleod,
@MaQleod Jeśli obawiasz się, że link może stać się nieważny, podłączyłem link tylko dla wygody. Mógłbym po prostu napisać „man hier” zwykłym tekstem, ponieważ można go znaleźć w dowolnej głównej dystrybucji Linuksa.
AnonymousLurker
2
„patrz instrukcja” również nie jest odpowiednią odpowiedzią, jest komentarzem. Odpowiedzi powinny faktycznie odpowiedzieć na pytanie. Jak to odpowiada na postawione pytanie? w jaki sposób znaczenie ma hierarchia? Dlaczego OP (lub ktokolwiek inny) uważa tę odpowiedź za wartą uwagi? Skopiuj odpowiednie fragmenty linku (lub strony podręcznika) i wyjaśnij, dlaczego są one istotne w kontekście pytania, wtedy odpowiesz na pytanie, a nie po prostu skomentujesz.
MaQleod,