Ponieważ każdy krok ma inne znaczenie
Przygotuj (skonfiguruj) środowisko do budowania
./configure
Ten skrypt ma wiele opcji, które powinieneś zmienić. Like --prefix
lub --with-dir=/foo
. Oznacza to, że każdy system ma inną konfigurację. ./configure
Sprawdza również brakujące biblioteki, które powinny zostać zainstalowane. Cokolwiek tu jest nie tak, powoduje, że aplikacja nie jest tworzona . Dlatego dystrybucje mają pakiety, które są instalowane w różnych miejscach, ponieważ każda dystrybucja uważa, że lepiej jest zainstalować określone biblioteki i pliki w określonych katalogach. Mówi się, że działa ./configure
, ale w rzeczywistości należy to zawsze zmieniać.
Na przykład spójrz na witrynę pakietów Arch Linux . Tutaj zobaczysz, że każdy pakiet używa innego parametru konfiguracji (załóżmy, że używają narzędzi automatycznych dla systemu kompilacji).
Budowanie systemu
make
W rzeczywistości jest to make all
ustawienie domyślne. Każda marka ma inne czynności do wykonania. Niektórzy budują, niektórzy wykonują testy po zbudowaniu, niektórzy robią zakupy z zewnętrznych repozytoriów SCM. Zwykle nie musisz podawać żadnych parametrów, ale znowu niektóre pakiety wykonują je inaczej.
Zainstaluj w systemie
make install
Spowoduje to zainstalowanie pakietu w miejscu określonym w pliku configure. Jeśli chcesz, możesz wskazać ./configure
katalog domowy. Jednak wiele opcji konfiguracyjnych wskazuje na /usr
lub /usr/local
. Oznacza to, że musisz użyć faktycznie, sudo make install
ponieważ tylko root może kopiować pliki do / usr i / usr / local.
Teraz widzisz, że każdy krok jest warunkiem wstępnym następnego kroku. Każdy krok jest przygotowaniem do bezproblemowego przepływu rzeczy. Dystrybucje używają tej metafory do tworzenia pakietów (takich jak RPM, deb itp.).
Tutaj zobaczysz, że każdy krok jest w rzeczywistości innym stanem. Dlatego menedżerowie pakietów mają różne opakowania. Poniżej znajduje się przykład opakowania, które pozwala zbudować cały pakiet w jednym kroku. Pamiętaj jednak, że każda aplikacja ma inne opakowanie (w rzeczywistości te opakowania mają takie nazwy jak specyfikacja, PKGBUILD itp.):
def setup:
... #use ./configure if autotools is used
def build:
... #use make if autotools is used
def install:
... #use make all if autotools is used
Można tu korzystać z autotools, co oznacza ./configure
, make
i make install
. Ale inny może użyć SCons, konfiguracji związanej z Pythonem lub czegoś innego.
Jak widać, podzielenie każdego stanu znacznie ułatwia konserwację i wdrażanie, szczególnie dla opiekunów pakietów i dystrybucji.