อะไรคือความแตกต่างระหว่าง yum, apt-get, rpm, ./configure && ทำการติดตั้ง?


126

ฉันยังใหม่กับ Linux และกำลังใช้งาน CentOS ฉันพบวิธีอัปเดตหรือติดตั้งซอฟต์แวร์สี่วิธี

จนถึงตอนนี้ฉันได้เห็น:

  • yum install [program]
  • apt-get install [program]
  • rpm -i [program].rpm
  • wget [program].tar.gz-> unpack-> ./configure-> make->make install

อันสุดท้ายเป็นความเจ็บปวดโดยเฉพาะอย่างยิ่งที่มาจาก Windows ซึ่งการติดตั้งโปรแกรมมักจะเป็นเพียงคลิกเดียวและตัวช่วยสร้างการติดตั้งที่ดี

ดังนั้นคำถามของฉันคือ:

  • เหตุใดจึงมีวิธีการมากมายในการทำเช่นนี้ใน Linux
  • คุณแนะนำให้ใช้แบบใดและทำไม
  • มีวิธีอื่นในการติดตั้งโปรแกรมใน Linux หรือไม่?

นอกจากนี้สิ่งที่เกี่ยวกับการเทียบyum up2dateฉันไม่เคยเห็นความแตกต่างอย่างชัดเจน
Josh

apt-getสำหรับเดเบียนและไม่ควรแสดงใน CentOS จริงๆ ....
Kyle Strand

คำตอบ:


114

เครื่องมือเหล่านี้ทั้งหมดติดตั้งซอฟต์แวร์ลงในระบบของคุณ แต่ทำงานในระดับที่แตกต่างกัน

  • ./configure && ทำการติดตั้ง

    การรัน./configure && make installบิลด์และติดตั้งไลบรารีหรือเอ็กซีคิวต์โดยตรงจากซอร์สโค้ด

    make installขั้นตอนพื้นเพียงสำเนาไฟล์สุดท้ายในระบบของคุณ แหล่งที่มาหลายแห่งมีmake uninstallกฎพิเศษในการลบออกอีกครั้ง แต่ไม่รับประกันและแน่นอนจะทำงานได้ตราบใดที่คุณมีแหล่งข้อมูลที่กำหนดค่าไว้ นอกจากนี้สิ่งนี้ไม่ได้ดูแลการพึ่งพาที่จำเป็น

    บ่อยครั้งที่มีเพียงซอร์สโค้ดสำหรับแพ็คเกจบางชุดดังนั้นนี่เป็นวิธีเดียวที่จะไป นอกจากนี้./configureมักจะยอมรับตัวเลือกมากมายที่ช่วยให้คุณสามารถปรับแต่งแพคเกจของคุณ

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

  • RPM (Redhat Package Manager)

    rpmติดตั้งซอฟต์แวร์ที่กำหนดค่าและรวบรวมไว้แล้วในระบบของคุณและยังมาพร้อมกับการถอนการติดตั้งเพื่อกำจัดมันอีกครั้ง ต้องสร้างแพ็คเกจโดยผู้อื่น บุคคลนี้ได้ตัดสินใจเลือกคุณสมบัติที่จะรวมและวิธีรวมแพ็คเกจเข้ากับเค้าโครงระบบของคุณได้ดีที่สุด นอกจากนี้ยังมาพร้อมกับรายการอ้างอิง

    เนื่องจากมีการใช้ rpms สำหรับการกระจายจำนวนมากที่นั่นคุณมักจะต้องการให้แน่ใจว่า rpm นี้ถูกเขียนขึ้นสำหรับการแจกจ่ายของคุณเพื่อให้เส้นทางการติดตั้งการอ้างอิงและสิ่งอื่น ๆ ในการดูแลรวมกันเป็นอย่างดี

    บนระบบ Debian รูปแบบแพ็กเกจเทียบเท่าคือ.debและการติดตั้งและฐานข้อมูลถูกจัดการโดยdpkgเครื่องมือ

  • ยำ

    yumrpmเป็นเสื้อคลุมเพิ่มเติมรอบ มันเก็บฐานข้อมูลของไฟล์ rpm สำหรับการแจกจ่ายของคุณโดยทั่วไปในแหล่งเก็บข้อมูลออนไลน์ สำหรับเวอร์ชั่นที่เสถียรของการแจกแจงส่วนใหญ่แพ็คเกจทั้งหมดที่อยู่ในฐานข้อมูลนั้นจะเล่นได้ดีซึ่งกันและกัน ฐานข้อมูลนี้สามารถค้นหาได้ (เช่นกับyum search some_name)

    มันจะแก้ไขการขึ้นต่อกันของคุณโดยอัตโนมัติ แพคเกจ (และด้วยความช่วยเหลือพิเศษบางอย่างการพึ่งพา) สามารถถอนการติดตั้งได้อย่างง่ายดายเช่นกัน

    บนระบบ Debian เครื่องมือที่เก็บข้อมูลที่เทียบเท่าและเครื่องมือแก้ปัญหาการพึ่งพานั้นจัดทำโดย Apt ( apt-getและaptitude)

ดังนั้นเพื่อสรุป: หากคุณต้องการลองใช้ซอฟต์แวร์yumก่อน หากไม่มีให้คุณสามารถลองค้นหาrpmแพ็คเกจที่มีอยู่ได้ หากไม่มีหรือคุณมีความต้องการพิเศษให้สร้างจากแหล่งที่มา


สิ่งที่ฉันจะพูด เพิ่มในการกล่าวถึงเทียบเท่า debian และสัมผัสการจัดรูปแบบ
ต้มตุ๋น quixote

2
@quack: ขอบคุณ แต่เราทุกคนไม่สามารถapt-getทำอะไรได้เลยหรือยังแนะนำให้ทำอะไร?
Benjamin Bannier

2
คุณพูดถูกความถนัดก็น่าจะดีกว่าที่จะแนะนำ ผมรวมapt-getเพราะมันเรียกกันอย่างแพร่หลายในและผู้อ่านที่ไม่ทราบเกี่ยวกับความถนัดอาจเคยได้ยินapt-get
ต้มตุ๋น quixote

4
มีอะไรผิดปกติกับ apt-get หรือไม่
เรียกซ้ำ

5
@recursive: บางครั้งapt-getไม่ได้บันทึกการขึ้นต่อกันอัตโนมัติและทิ้งไว้ข้างหลังหลังจากการถอนการติดตั้งในขณะที่aptitudeแนะนำการติดตามการพึ่งพาที่เหมาะสม apt-getนอกจากนี้แล้วก็ยังให้คุณสมบัติเพิ่มเติมบางอย่างไม่สามารถใช้ได้ใน ฉันไม่แน่ใจ แต่ฉันคิดว่าในบางจุดapt-getและaptitudeสถานที่ที่ได้รับการปรับปรุงให้ใช้แบ็กเอนด์ขั้นสูงแบบเดียวกันซึ่งมีฟังก์ชันการทำงานมากมาย
Benjamin Bannier

5

Yum คือ RPM เป็นสิ่งเดียวกันยกเว้นว่า yum ได้รับแพ็คเกจจากเน็ตโดยอัตโนมัติและติดตั้ง (ใช้rpm -i) ในขั้นตอนเดียว ควรใช้ทุกครั้งที่เป็นไปได้เพื่อความสะดวกในการอัปเดต ใช้rpmเฉพาะเมื่อไม่มีแพ็คเกจที่จะค้นหาได้yumและใช้makeวิธีเฉพาะเมื่อไม่มีแพ็คเกจ. rpm หรือคุณต้องการเปลี่ยนตัวเลือกการรวบรวมเวลา

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