เพราะแต่ละขั้นตอนทำไม่เหมือนกัน
จัดเตรียม (ตั้งค่า) สภาพแวดล้อมสำหรับการสร้าง
./configure
สคริปต์นี้มีตัวเลือกมากมายที่คุณควรเปลี่ยน กดไลค์--prefix
หรือ--with-dir=/foo
. นั่นหมายความว่าทุกระบบมีการกำหนดค่าที่แตกต่างกัน นอกจากนี้ยังมี./configure
การตรวจสอบสำหรับห้องสมุดที่หายไปว่าควรจะติดตั้ง มีอะไรผิดพลาดที่นี่ทำให้ไม่สามารถสร้างแอปพลิเคชันของคุณได้ นั่นเป็นเหตุผลที่ distros มีแพ็กเกจที่ติดตั้งในที่ต่างๆเนื่องจากทุก distro คิดว่าการติดตั้งไลบรารีและไฟล์บางไฟล์ลงในไดเร็กทอรีบางอย่างจะดีกว่า ว่ากันว่าวิ่ง./configure
แต่อันที่จริงคุณควรเปลี่ยนเสมอ
ตัวอย่างเช่นมีลักษณะที่เว็บไซต์แพคเกจ Arch ลินุกซ์ ที่นี่คุณจะเห็นว่าแพ็คเกจใด ๆ ใช้พารามิเตอร์กำหนดค่าที่แตกต่างกัน (สมมติว่าพวกเขากำลังใช้เครื่องมืออัตโนมัติสำหรับระบบบิลด์)
การสร้างระบบ
make
นี่เป็นmake all
ค่าเริ่มต้นจริงๆ และทุกการทำมีการกระทำที่แตกต่างกันไป บางคนทำการสร้างบางคนทำการทดสอบหลังการสร้างบางคนชำระเงินจากที่เก็บ SCM ภายนอก โดยปกติคุณไม่จำเป็นต้องให้พารามิเตอร์ใด ๆ แต่อีกครั้งบางแพ็คเกจจะดำเนินการต่างกัน
ติดตั้งเข้ากับระบบ
make install
สิ่งนี้จะติดตั้งแพ็คเกจในตำแหน่งที่ระบุด้วยการกำหนดค่า หากคุณต้องการคุณสามารถระบุ./configure
ให้ชี้ไปที่โฮมไดเร็กทอรีของคุณ อย่างไรก็ตามจำนวนมากตัวเลือกการกำหนดค่าจะชี้ไปหรือ/usr
/usr/local
นั่นหมายความว่าคุณต้องใช้งานจริงsudo make install
เพราะรูทเท่านั้นที่สามารถคัดลอกไฟล์ไปยัง / usr และ / usr / local
ตอนนี้คุณเห็นแล้วว่าแต่ละขั้นตอนเป็นข้อกำหนดเบื้องต้นสำหรับขั้นตอนต่อไป แต่ละขั้นตอนคือการเตรียมการที่จะทำให้สิ่งต่างๆดำเนินไปอย่างลื่นไหลไร้ปัญหา Distros ใช้อุปมานี้เพื่อสร้างแพ็คเกจ (เช่น RPM, deb ฯลฯ )
คุณจะเห็นว่าแต่ละขั้นตอนเป็นสถานะที่แตกต่างกัน นั่นเป็นเหตุผลที่ผู้จัดการแพ็คเกจมีเครื่องห่อที่แตกต่างกัน ด้านล่างนี้เป็นตัวอย่างของ Wrapper ที่ให้คุณสร้างแพ็คเกจทั้งหมดได้ในขั้นตอนเดียว แต่จำไว้ว่าแต่ละแอปพลิเคชันมี Wrapper ที่แตกต่างกัน (จริงๆแล้ว Wrapper เหล่านี้มีชื่อเช่น 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
นี่คือหนึ่งสามารถใช้ autotools นั่นหมายความว่า./configure
, และmake
make install
แต่อีกอันหนึ่งสามารถใช้ SCons การตั้งค่าที่เกี่ยวข้องกับ Python หรือสิ่งที่แตกต่างออกไป
อย่างที่คุณเห็นการแยกแต่ละสถานะทำให้การบำรุงรักษาและการปรับใช้ง่ายขึ้นมากโดยเฉพาะอย่างยิ่งสำหรับผู้ดูแลและแจกจ่ายแพ็คเกจ