"build-essential" และ "build-dep" คืออะไร


64

ฉันกำลังค้นคว้าวิธีติดตั้ง Ruby 1.9.1 ใน Xubuntu 10.04 และฉันเจอคำสั่งbuild-essentialและbuild-depหลายครั้ง บางครั้งมีการติดตามด้วยแพ็กเกจและบางครั้งมีทั้งก่อนหน้าและโพสต์โดยแพ็กเกจ

2 ตัวอย่างที่ฉันกำลังดู:

sudo apt-get install จำเป็นต่อการสร้าง zlib1g zlib1g-dev zlibc libruby1.9 libxml2 libxml2-dev libxslt-dev

sudo apt-get build-dep ruby1.9

และ

sudo apt- รับการติดตั้ง rubb irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby-libruby-extras libfcgi-ruby1.8 libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev


3
โปรดทราบว่ามันไม่ใช่คำสั่ง แต่เป็นแพ็คเกจในระบบ Debian package (APT) คุณสามารถรับแพ็คเกจโดยใช้เครื่องมือ GUI

ขอบคุณ มันเกี่ยวข้องกับ Ruby อย่างไร? ฉันถือว่า Ruby ต้องการให้มันรัน แต่บางทีฉันผิด
classer

คำตอบ:


49

แพ็คเกจ build-essentials เป็นข้อมูลอ้างอิงสำหรับแพ็คเกจทั้งหมดที่จำเป็นในการรวบรวมแพ็คเกจ Debian โดยทั่วไปจะมีคอมไพเลอร์และไลบรารี GCC / g ++ และยูทิลิตี้อื่น ๆ ตรวจสอบเอกสาร: ที่นี่!


2
ตกลง แต่ก็ยังไม่ตอบคำถามของฉันอย่างเต็มที่ ฉันเข้าใจว่า 'build-essential' มีรายการข้อมูลซึ่งจำเป็นสำหรับการสร้างแพ็คเกจ Debian แต่สิ่งที่ถือว่าเป็นแพคเกจเดเบียน? ทับทิม? คอมไพเลอร์ gcc / g ++? และแพคเกจ Debian และ 'build-essential' เกี่ยวข้องกับ Ruby อย่างไรและ Ruby ถูกสร้างขึ้นบนแพคเกจ Debian อีกวิธีหนึ่งหรือไม่ Ruby ต้องการแพ็คเกจที่จำเป็นสำหรับการทำงานหรือไม่ฉันต้องการเห็นการแสดงภาพของ ความสัมพันธ์ระหว่างส่วนต่าง ๆ เหล่านี้
classer

3
หากคุณต้องการ (หรือแพ็คเกจอื่น ๆ ที่คุณต้องการติดตั้ง) ต้องใช้คอมไพเลอร์ C / C ++ คุณจะต้องติดตั้ง build-essential โดยปกติแล้วมันเป็นสิ่งแรกที่ฉันติดตั้งในการติดตั้ง Ubuntu ใหม่ :-)

4
@Adam เนื่องจาก Ruby เป็นภาษาที่ตีความแล้วล่ามจึงต้องการคอมไพเลอร์ C หรือ C ++ เพื่อสร้างตัวเองเพื่อให้ทำงานบนเครื่องของคุณ build-essentialเป็น metapackage (แพ็คเกจที่ติดตั้งแพ็คเกจอื่น ๆ เช่น g ++ และ gcc: คอมไพเลอร์ GNU C & C ++) มันจำเป็นถ้าคุณต้องการรวบรวมอะไรจากแหล่งที่มาและถ้าคุณต้องการทำงานกับเกือบทุกภาษาการเขียนโปรแกรม HTH!
squircle

6
คำตอบนี้ผิด คำตอบด้านล่างคือคำตอบที่ถูกต้อง build-depเป็นคำสั่ง apt-get และbuild-essentialเป็นแพ็กเกจ
เดวิด

2
นี่ไม่ใช่คำตอบที่ถูกต้อง ลิงก์ที่ให้ไว้นั้นไม่ได้ให้ข้อมูลเชิงลึกหรือคำอธิบายเกี่ยวกับสิ่งที่อยู่ในแพ็คเกจการสร้างที่จำเป็น
andDevW

54

คำสั่งsudo apt-get build-dep packagenameหมายถึง "เป็นรากติดตั้งการอ้างอิงทั้งหมดสำหรับ 'packagename' เพื่อให้ฉันสามารถสร้างได้" ดังนั้น build-dep เป็นคำสั่ง apt-get เช่นเดียวกับการติดตั้ง, ลบ, อัปเดตและอื่น ๆ

build-essential เป็นแพ็คเกจที่มีการอ้างอิงถึงแพ็คเกจจำนวนมากที่จำเป็นสำหรับการสร้างซอฟต์แวร์โดยทั่วไป


1
ขอบคุณที่อธิบายคำสั่ง 'build-dep' ดังนั้นตามที่ฉันเข้าใจในกรณีนี้ Ruby1.9 มีรายการการพึ่งพาที่ติดอยู่กับที่ Linux ดูเหมือนว่าเป็น 'รายการสิ่งที่ต้องทำ / สร้าง' และหนึ่งโดยหนึ่งสร้างแต่ละรายการเหล่านั้น โครงสร้างพื้นฐานขั้นสุดท้ายที่สร้างขึ้นช่วยให้ Ruby1.9 ทำงานได้อย่างถูกต้อง สิ่งที่ฉันไม่เข้าใจคือเหตุผลที่ว่า 'build-essential' หรือแพ็คเกจอื่น ๆ ทั้งหมดในบรรทัดบนสุด (zlib1g zlib1g-dev zlibc libruby1.9 ฯลฯ ฯลฯ ) จะไม่รวมอยู่ในรายการ 'To Do / Build ติดกับ Ruby1.9 มันจะไม่ง่ายกว่านี้ถ้ามีเพียงคำสั่งเดียว?
classer

5

build-essentialมีคุณสมบัติที่มีมนต์ขลังหนึ่งรายการ: ไม่จำเป็นต้องระบุว่าเป็นรายการขึ้นต่อกันภายใต้Build-Dependsฟิลด์ควบคุม ( debian-packages) ของแพคเกจแหล่งข้อมูลตามที่ได้รับการบันทึกไว้ที่https://www.debian.org/doc/debian-policy/ch-source.html# s-pkg ความสัมพันธ์

คุณสามารถรับรายการแพ็คเกจที่จำเป็นสำหรับการสร้างได้ที่:

cat /usr/share/doc/build-essential/list

นอกจากนี้คุณยังสามารถตรวจสอบว่าแพคเกจเป็นส่วนหนึ่งของbuild-essentialด้วย:

apt-get show gcc

ซึ่งพูดว่า:

Build-Essential: yes

4

"build-essential" มีเครื่องมือ (เช่นคอมไพเลอร์ gcc, สร้างเครื่องมือ ฯลฯ ) สำหรับการรวบรวม / สร้างซอฟต์แวร์จากแหล่งที่มา ดังนั้นคุณจึงเริ่มต้นด้วยไฟล์ซอร์ส (โดยปกติคือ C) และสร้างไฟล์เอ็กซีคิ้วท์ได้

หากคุณเพียงแค่พยายามติดตั้ง Ruby ฉันขอแนะนำอย่างยิ่งให้ใช้RVM (Ruby Version Manager) :

ทำตามคำแนะนำภายใต้ "Github Repository (แนะนำ)"

โปรดทราบว่าคุณจะต้องติดตั้งซอฟต์แวร์ควบคุมเวอร์ชัน Git ก่อน ใช้apt-get install git-coreถ้าคุณยังไม่มี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.