Тому що кожен крок робить різні речі
Підготуйте (налаштуйте) середовище для будівництва
./configure
Цей сценарій має багато варіантів, які слід змінити. Як --prefix
і --with-dir=/foo
. Це означає, що кожна система має іншу конфігурацію. Також ./configure
перевіряє відсутність бібліотек, які слід встановити. Щось тут не так, це призводить до того, що ви не створюєте свою програму . Ось чому дистрибутив має пакунки, які встановлюються в різних місцях, оскільки кожен дистрибутив вважає, що краще встановити певні бібліотеки та файли в певні каталоги. Кажуть, бігати ./configure
, але насправді слід змінювати це завжди.
Наприклад, подивіться на сайт пакетів Arch Linux . Тут ви побачите, що будь-який пакет використовує інший параметр налаштування (припустимо, він використовує автоінструменти для системи збирання).
Побудова системи
make
Це фактично make all
за замовчуванням. І кожен макіяж має робити різні дії. Деякі роблять будівництво, деякі проводять тести після будівництва, деякі виконують замовлення із зовнішніх сховищ SCM. Зазвичай не потрібно вказувати жодних параметрів, але знову ж таки деякі пакети виконують їх по-іншому.
Встановити в систему
make install
Це встановлює пакунок у місці, вказаному в налаштуваннях. Якщо ви хочете, ви можете вказати ./configure
ваш домашній каталог. Однак багато параметрів налаштування вказують на /usr
або /usr/local
. Це означає, що вам доведеться використовувати насправді, sudo make install
оскільки тільки root може копіювати файли в / usr та / usr / local.
Тепер ви бачите, що кожен крок є необхідною умовою для наступного кроку. Кожен крок - це підготовка до того, щоб справи працювали без проблемним потоком. Distros використовує цю метафору для побудови пакетів (наприклад, RPM, deb тощо).
Тут ви побачите, що кожен крок насправді є різним станом. Ось чому менеджери пакунків мають різні обгортки. Нижче наводиться приклад обгортки, яка дозволяє збирати весь пакет за один крок. Але пам’ятайте, що кожен додаток має різну обгортку (насправді ці обгортки мають таку назву, як spec, PKGBUILD тощо):
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
Тут можна використовувати автоінструменти, це означає ./configure
, make
і make install
. Але інший може використовувати SCON, налаштування, пов'язані з Python, або щось інше.
Як бачите, розщеплення кожної держави значно полегшує підтримку та розгортання, особливо для обслуговуючого пакета та дистрибутива.