Karena setiap langkah melakukan hal yang berbeda
Siapkan lingkungan (pengaturan) untuk membangun
./configure
Skrip ini memiliki banyak opsi yang harus Anda ubah. Suka --prefix
atau --with-dir=/foo
. Artinya setiap sistem memiliki konfigurasi yang berbeda. Juga ./configure
memeriksa pustaka yang hilang yang harus diinstal. Ada yang salah di sini yang menyebabkan tidak membangun aplikasi Anda . Itulah mengapa distro memiliki paket yang diinstal di tempat yang berbeda, karena setiap distro berpikir lebih baik menginstal pustaka dan file tertentu ke direktori tertentu. Dikatakan berjalan ./configure
, tetapi sebenarnya Anda harus selalu mengubahnya.
Misalnya, lihat situs paket Arch Linux . Di sini Anda akan melihat bahwa setiap paket menggunakan parameter konfigurasi yang berbeda (asumsikan mereka menggunakan autotools untuk sistem build).
Membangun sistem
make
Ini sebenarnya make all
secara default. Dan setiap merek memiliki tindakan yang berbeda untuk dilakukan. Beberapa membangun, beberapa melakukan tes setelah membangun, beberapa melakukan checkout dari repositori SCM eksternal. Biasanya Anda tidak perlu memberikan parameter apa pun, tetapi beberapa paket menjalankannya secara berbeda.
Instal ke sistem
make install
Ini menginstal paket di tempat yang ditentukan dengan konfigurasi. Jika mau, Anda dapat menentukan ./configure
untuk menunjuk ke direktori home Anda. Namun, banyak opsi konfigurasi yang mengarah ke /usr
atau /usr/local
. Itu berarti Anda harus menggunakan sebenarnya sudo make install
karena hanya root yang dapat menyalin file ke / usr dan / usr / local.
Sekarang Anda melihat bahwa setiap langkah merupakan prasyarat untuk langkah berikutnya. Setiap langkah adalah persiapan untuk membuat segala sesuatunya berjalan lancar. Distro menggunakan metafora ini untuk membangun paket (seperti RPM, deb, dll.).
Di sini Anda akan melihat bahwa setiap langkah sebenarnya adalah keadaan yang berbeda. Itulah mengapa manajer paket memiliki pembungkus yang berbeda. Di bawah ini adalah contoh pembungkus yang memungkinkan Anda membangun seluruh paket dalam satu langkah. Namun perlu diingat bahwa setiap aplikasi memiliki pembungkus yang berbeda (sebenarnya pembungkus ini memiliki nama seperti spek, PKGBUILD, dll.):
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
Di sini seseorang dapat menggunakan autotools, itu artinya ./configure
, make
dan make install
. Tetapi yang lain dapat menggunakan SCons, pengaturan terkait Python atau sesuatu yang berbeda.
Seperti yang Anda lihat, memisahkan setiap status membuat pemeliharaan dan penerapan menjadi lebih mudah, terutama untuk pengelola paket dan distro.