Przechodząc z systemu Windows na Linux, nie rozumiem procesu instalowania oprogramowania w systemie Linux. W systemie Windows, gdy uruchamiamy plik instalacyjny, pyta, gdzie chcesz zainstalować program, najprawdopodobniej tylko w folderze plików programu. Później edytuje rejestr. Nazywa się to instalacją w systemie Windows. Co dokładnie oznacza „instalowanie oprogramowania” w systemie Linux?
Załóżmy, że pobrałem kod źródłowy, skonfigurowałem go, a następnie zbudowałem plik binarny make
. Teraz jest to tylko program binarny, jeszcze nie nadający się do użytku. Jak to się „instaluje”? By make install
? A co dokładnie robi to polecenie?
make
installation
KawaiKx
źródło
źródło
make install
krokami z punktu widzenia programisty.Odpowiedzi:
Make to program do zarządzania przepływem zadań ogólnego przeznaczenia, zwykle używany do kompilacji. Ale można go używać do wszystkiego.
Kiedy robisz coś takiego jak „make all”, program make wykonuje regułę o nazwie „all” z pliku w bieżącym katalogu o nazwie „Makefile”. Ta reguła zwykle wywołuje kompilator w celu kompilacji kodu źródłowego do plików binarnych.
Po wykonaniu polecenia „make install” program make pobiera pliki binarne z poprzedniego kroku i kopiuje je do odpowiednich lokalizacji, aby można było uzyskać do nich dostęp. W przeciwieństwie do systemu Windows instalacja wymaga jedynie skopiowania niektórych bibliotek i plików wykonywalnych i nie ma wymogu rejestru jako takiego. W skrócie, „make install” po prostu kopiuje skompilowane pliki do odpowiednich lokalizacji.
źródło
all
wMakefile
znaczniku i jak wygląda znacznik końcowy tej sekcji, aby zobaczyć, gdzie przetwarzanie reguły dlaall
zatrzymań.make install
robi wszystko, coMakefile
chce autor. Zazwyczaj w tym momencie jest już za późno na zmianę katalogu instalacyjnego, jak to często wiadomo wcześniej podczas kompilacji, więc do plików pomocy i plików konfiguracyjnych można odwoływać się za pomocą poprawnych nazw ścieżek.Wiele projektów korzysta z GNU Autotools w celu poprawy ich przenośności między różnicami sprzętowymi i systemowymi. (Różne warianty Uniksa używają nieco innych nagłówków do deklaracji funkcji, które są nieco poza zwykłą ścieżką - z wyjątkiem większości programów, które wymagają jednego lub drugiego z tych zadeklarowanych w różnych lokalizacjach.)
Kiedy projekt korzysta z Autotools, normalną mantrą do instalacji jest:
./configure
Zazwyczaj pozwala na użycie opcji wiersza polecenia podobnego--prefix /opt/apache
lub coś podobnego, aby określić inną ścieżkę./usr/local/
jest częstym domyślnymprefix
. Lokalnie zbudowane oprogramowanie jest o wiele łatwiejsze do zamieszkania w jednym miejscu, a oprogramowanie dostarczane przez dystrybucję do życia w „głównych katalogach”:/usr/
/bin/
i tak dalej. (Pakowacze są bardzo ostrożni, aby nigdy nie dotykać plików/usr/local/
- wiedzą, że jest to wyłącznie dla administratorów systemu).W każdym razie,
./configure --prefix /path/to/new/prefix
ustawi zmienną,Makefile
która jest dostępna podczas kompilacji programu, modyfikując strony podręcznika, aby wskazywały prawidłowe lokalizacje plików, modyfikując pliki konfiguracyjne itp. Więcmake
zbuduje oprogramowanie specjalnie dla żądanej lokalizacji instalacji imake install
zainstaluje go w tej lokalizacji.Większość programów może działać nawet bez ostatniego
make install
kroku - po prostu./program_name
często je uruchamiają. Jest to z pewnością rzecz per-projektu - niektóre, jakpostfix
,qmail
itp, składają się z wielu ruchomych elementów i opierają się na nich wszystkich razem pracować. Inne, takie jakls
lubsu
mogą być wystarczająco samodzielne, aby dobrze wykonać z katalogu, w którym zostały wbudowane. (To nie jest często przydatne - ale czasami bardzo przydatne).Jednak nie wszystkie projekty używają Autotools - są ogromne , skomplikowane i nieszczęśliwe w utrzymaniu. Odręczne pisanie
Makefile
jest znacznie prostsze do napisania, a ja osobiście uważam, że dystrybucja prostejMakefile
z dostępnymi zmiennymi konfiguracyjnymi jest o wiele łatwiejsza zarówno dla programistów, jak i użytkowników. (Chociaż./configure ; make ; make install
mantra jest naprawdę łatwa dla użytkowników, gdy działa).źródło
make install
robi nic innego niż wykonanieinstall
funkcji / sekcji w twoimMakefile
źródło
make clean
, po prostu wykonuje kody w sekcji.Najważniejszą rzeczą, o której należy wspomnieć podczas instalowania oprogramowania w systemie Linux, jest to, że jest on o wiele bardziej niezawodny i łatwiejszy do zainstalowania oprogramowania z Twojej dystrybucji (jest to jego cel!). Używaj tylko
make install
wtedy, gdy nie ma innej możliwości (rozważ również programy alternatywne).Częstym błędem użytkowników systemu Windows jest pobieranie programów z różnych miejsc i próba ich zainstalowania, zapominając o sprawdzeniu ich pakietów dystrybucyjnych, które można zainstalować za pomocą jednego kliknięcia lub polecenia (w menedżerze pakietów).
Pamiętaj również, że jednym z głównych powodów braku infekcji wirusowych w systemie Linux jest to, że oprogramowanie jest (lub powinno być) instalowane z centralnej (zaufanej) lokalizacji zamiast z wielu losowych stron.
Jako dodatkową uwagę, chociaż dystrybucje takie jak Ubuntu zawsze zawierają nieaktualne pakiety, istnieją również takie dystrybucje jak Arch Linux, które są zawsze aktualne (chociaż nie oferują dosłownie każdego programu kiedykolwiek wydanego dla Linuksa, takiego jak Debian / Ubuntu).
Jeśli chodzi o to, co dokładnie się stanie, gdy użyjesz menedżera pakietów, sprawdziłby on zależności, pobierał pakiety, rozpakowywał, umieszczał wszystkie pliki w odpowiednich katalogach, zgodnie z wytycznymi FHS i własnymi dystrybucjami oraz innymi procedurami, o których prawdopodobnie możesz się dowiedzieć ze strony man menedżera pakietów.
źródło