อะไรคือความแตกต่าง / การใช้งานของ homebrew, macports หรือเครื่องมือติดตั้งแพ็คเกจอื่น ๆ ? [ปิด]


238

ฉันเพิ่งเปลี่ยนมาใช้ Mac จาก Ubuntu ฉันผิดหวังที่ mac ไม่สะดวกsudo apt-getใน Ubuntu ฉันได้ยินมาว่าฉันควรใช้ homebrew แต่ฉันไม่แน่ใจว่า homebrew หรือ macports ทำอะไร


4
เกี่ยวข้องกันมาก: apple.stackexchange.com/questions/32724/…
cregox

8
ไม่กี่ปีที่ผ่านมาหน้าแรกของ homebrew มีข้อความว่า "homebrew ดีกว่าเพราะเขียนด้วย Ruby" ฉันไม่มีอะไรกับทับทิมในใจคุณเลย ฉันชอบโอปและทับทิมเป็นภาษาอูพ สิ่งที่ฉันมีปัญหาคือผู้พัฒนาซอฟต์แวร์ใด ๆ ที่คิดว่าภาษาหนึ่งดีกว่าภาษาอื่น ๆ ทั้งหมด ด้วยเหตุผลนั้นเพียงอย่างเดียวฉันจึงไม่สนใจภาษาฮีบรู นอกจากนี้ macports ก็ทำงานได้ดีสำหรับฉันมาหลายปีแล้ว
Mike Makuch

คำตอบ:


145

MacPorts เป็นวิธีที่จะไป

  1. เช่นเดียวกับ @ user475443 ชี้ว่า MacPorts มีแพ็คเกจอีกมากมาย ด้วยการชงคุณจะพบว่าตัวเองติดอยู่ในไม่ช้าเพราะไม่มีสูตรที่คุณต้องการ

  2. MacPorts เป็นแอปพลิเคชั่นดั้งเดิม: C + TCL คุณไม่ต้องการทับทิมเลย ในการติดตั้ง Ruby บน Mac OS X คุณอาจต้องใช้ MacPorts ดังนั้นให้ไปกับ MacPorts และคุณจะมีความสุข

  3. MacPorts นั้นมีเสถียรภาพจริงๆใน 8 ปีที่ฉันไม่เคยมีปัญหากับมันและระบบนิเวศ Unix ทั้งหมดของฉันส่งต่อไป

  4. หากคุณเป็นนักพัฒนา PHP คุณสามารถติดตั้ง Apache เวอร์ชันล่าสุด (Mac OS X ใช้ 2.2), PHP และส่วนขยายทั้งหมดที่คุณต้องการจากนั้นอัพเกรดทั้งหมดด้วยคำสั่งเดียว ลืมที่จะทำเช่นเดียวกันกับ Homebrew

  5. กลุ่มสนับสนุน MacPorts

    foo@macpro:~/ port select --summary
    
    Name        Selected      Options
    ====        ========      =======
    db          none          db46 none
    gcc         none          gcc42 llvm-gcc42 mp-gcc48 none
    llvm        none          mp-llvm-3.3 none
    mysql       mysql56       mysql56 none
    php         php55         php55 php56 none
    postgresql  postgresql94  postgresql93 postgresql94 none
    python      none          python24 python25-apple python26-apple python27 python27-apple none
    

    หากคุณมีทั้ง PHP55 และ PHP56 ติดตั้ง (มีส่วนขยายที่แตกต่างกันจำนวนมาก) คุณสามารถสลับระหว่างพวกเขาด้วยคำสั่งเดียว ส่วนขยายที่เกี่ยวข้องทั้งหมดเป็นส่วนหนึ่งของกลุ่มและจะเปิดใช้งานภายในกลุ่มที่เลือก: php55 หรือ php56 ฉันไม่แน่ใจว่า Homebrew มีคุณสมบัตินี้

  6. Rubists ชอบที่จะเขียนทุกอย่างใน Ruby เพราะสิ่งเดียวที่พวกเขาสบายใจก็คือ Ruby นั่นเอง


26
Rubists ชอบที่จะเขียนใหม่ - ฮิฮิดูที่ NodeJS พวกใช้โปรโตคอลไบนารี่สำหรับ MySQL ใน JS! :)
kolypto

37
คุณไม่จำเป็นต้องใช้ MacPorts เพื่อติดตั้ง Ruby - Ruby มาพร้อมกับ OS X และ Brew ใช้ระบบ Ruby
Michael Ekstrand

5
@Michael Ekstrand OS X ไม่ได้รวม Ruby รุ่นล่าสุด
คำนาม

89
ไม่สามารถลงคะแนนนี้ มันน่าสะอิดสะเอียนเกินไปและความเย่อหยิ่งทำลายข้อมูล
OldPeculier

34
การ upvoting เพื่อต่อต้าน upvotes "anti-snarky" ที่ถูกละเว้น ข้อมูลใด ๆ ที่ได้รับจากมนุษย์จะมีอคติตามธรรมชาติอยู่เสมอ ("ความบ้าคลั่ง" ในกรณีนี้) ฉันขอขอบคุณมุมมองของผู้ใช้รายนี้อาจเป็นเพราะคำตอบไม่ได้อ่านเหมือนรายการวิกิพีเดีย
rinogo

109

Homebrew และ macports แก้ปัญหาเดียวกันนั่นคือการติดตั้งไลบรารีทั่วไปและยูทิลิตี้ที่ไม่ได้รวมอยู่กับ osx

โดยทั่วไปแล้วสิ่งเหล่านี้คือไลบรารีที่เกี่ยวข้องกับการพัฒนาและการใช้งานเครื่องมือเหล่านี้ส่วนใหญ่นั้นใช้สำหรับนักพัฒนาที่ทำงานบน

ทั้งคู่ต้องการเครื่องมือบรรทัดคำสั่ง xcode ที่ติดตั้ง (ซึ่งคุณสามารถดาวน์โหลดแยกต่างหากจากhttps://developer.apple.com/ ) และสำหรับแพ็คเกจเฉพาะบางชุดคุณจะต้องติดตั้ง IDE xcode ทั้งชุด

xcode สามารถติดตั้งได้จาก mac app store ซึ่งเป็นการดาวน์โหลดฟรี แต่ใช้เวลาสักครู่ตั้งแต่ประมาณ 5GB (ถ้าฉันจำได้ถูกต้อง)

macports เป็นเวอร์ชัน osx ของยูทิลิตี้พอร์ตจาก BSD (เนื่องจาก osx มาจาก BSD นี่เป็นตัวเลือกที่เป็นธรรมชาติ) สำหรับทุกคนที่คุ้นเคยกับการแจกแจง BSD ใด ๆ macports จะรู้สึกเหมือนอยู่บ้าน

ความแตกต่างที่สำคัญอย่างหนึ่งระหว่าง homebrew และ macports และเหตุผลที่ฉันชอบโฮมบรูว์คือมันจะไม่เขียนทับสิ่งที่ควรติดตั้ง "ดั้งเดิม" ใน osx ซึ่งหมายความว่าหากมีแพ็กเกจดั้งเดิมให้ใช้งาน homebrew จะแจ้งให้คุณทราบแทนการเขียนทับและทำให้เกิดปัญหาเพิ่มเติมในบรรทัด นอกจากนี้ยังติดตั้งไลบรารีในพื้นที่ผู้ใช้ (ดังนั้นคุณไม่จำเป็นต้องใช้ "sudo" เพื่อติดตั้งสิ่งต่าง ๆ ) สิ่งนี้จะช่วยในการกำจัดไลบรารีเช่นกันเนื่องจากทุกอย่างอยู่ในเส้นทางที่คุณสามารถเข้าถึงได้

homebrew ยังสนุกกับชุมชนผู้ใช้ที่ใช้งานมากขึ้นและแพ็คเกจ (เรียกว่าสูตร) ​​ได้รับการปรับปรุงบ่อยครั้ง


macports ไม่ได้เขียนทับแพ็คเกจ OSX ดั้งเดิม - มันให้เวอร์ชั่นของตัวเอง - นี่คือเหตุผลหลักที่ฉันชอบ macports มากกว่า home-brew คุณต้องแน่ใจในสิ่งที่คุณใช้และการเปลี่ยนแปลงของ Apple ในเวลาที่ต่างกันไปยังพอร์ตและได้รับทราบ เป็นปีหลังการปรับปรุงในบางโครงการ

คุณสามารถให้การอ้างอิงที่แสดงว่า macports เขียนทับแพ็คเกจ OS X ดั้งเดิมได้หรือไม่ เท่าที่ฉันจะบอกได้ว่าการติดตั้ง macports เกิดขึ้น /opt/local

บางทีฉันควรชี้แจง - ฉันไม่ได้พูดอะไรเลยในคำตอบของฉันที่ macports เขียนทับแพ็คเกจดั้งเดิมของ OSX พวกเขาทั้งสองติดตั้งรายการแยกต่างหาก

Homebrew จะเตือนคุณเมื่อคุณควรติดตั้งสิ่ง "ดั้งเดิม" (โดยใช้โปรแกรมติดตั้งที่ต้องการของไลบรารี / เครื่องมือ) เพื่อความเข้ากันได้ดียิ่งขึ้น นี่คือสิ่งที่ฉันหมายถึง มันจะใช้ไลบรารีโลคัลจำนวนมากที่มีอยู่ใน OS X จากวิกิ :

เราไม่ชอบการหลอกใน Homebrew / homebrew

อย่างไรก็ตามเราชอบเลียนแบบเสียงเพลงในการแตะ!

สิ่งที่มาพร้อมกับ OS X หรือเป็นไลบรารีที่ RubyGems, CPAN หรือ PyPi ไม่ควรติดตั้งซ้ำ มีเหตุผลที่ดีสำหรับสิ่งนี้:

  • ไลบรารีที่ซ้ำกันแบ่งการสร้างเป็นประจำ
  • ข้อบกพร่องที่ลึกซึ้งเกิดขึ้นกับห้องสมุดที่ซ้ำกันและในระดับที่น้อยกว่าเครื่องมือที่ซ้ำกัน
  • เราต้องการให้คุณพยายามให้หนักขึ้นเพื่อให้สูตรของคุณทำงานกับ OS X ที่มาพร้อมกับ

คุณสามารถเลือกเขียนทับยูทิลิตี้เวอร์ชันที่ให้มาด้วย macosx ด้วย homebrew


78
macports ไม่ได้เขียนทับแพ็คเกจ OSX ดั้งเดิม - มันให้รุ่นของตัวเอง - นี่คือ rason หลักที่ฉันชอบ macports มากกว่า home-brew คุณต้องแน่ใจในสิ่งที่คุณใช้และการเปลี่ยนแปลงของ Apple ในเวลาที่ต่างกันไปยังพอร์ตและได้รับทราบ จะเป็น ye3srs ที่อยู่เบื้องหลังการอัปเดตในบางโครงการ
mmmmmm

13
คุณสามารถให้การอ้างอิงที่แสดงว่า macports เขียนทับแพ็คเกจ OS X ดั้งเดิมได้หรือไม่ เท่าที่ฉันสามารถบอกได้ว่าการติดตั้ง macports เกิดขึ้นใน/opt/local

27
อย่างน้อยที่สุดคุณก็มีความหมายอย่างยิ่งว่า MacPorts จะเขียนทับแพ็คเกจดั้งเดิมของ OS X แทนที่จะ "ชี้แจง" ในขณะที่ยังแกล้งทำเป็นว่าคุณไม่ได้พูดว่าเขียนสิ่งที่คุณเขียนไว้คุณควรแก้ไขประโยคที่เป็นปัญหา
ผ่อนคลาย

13
ประโยคนี้ "ความแตกต่างที่สำคัญอย่างหนึ่งระหว่าง homebrew และ macports และเหตุผลที่ฉันชอบ homebrew ก็คือมันจะไม่เขียนทับสิ่งที่ควรติดตั้ง" natively "ใน osx ควรเปลี่ยนเป็น "หนึ่งความแตกต่างที่สำคัญระหว่าง homebrew และ macports และเหตุผลที่ฉันชอบ homebrew คือ homebrew จะไม่ติดตั้งสำเนาขนานของเครื่องมือและไลบรารีที่ Apple จัดเตรียมไว้ให้โดยอัตโนมัติ"
bgupta

7
MacPorts ไม่ได้เขียนทับแอพพลิเคชั่นเนทีฟมัน "จำกัด ซอฟท์แวร์พอร์ตไปยัง" แซนด์บ็อกซ์ "ส่วนตัวที่ป้องกันไม่ให้รบกวนระบบปฏิบัติการของคุณและซอฟต์แวร์ที่ผู้จำหน่ายจัดหามา - คู่มือ MacPorts บทที่ 1
2559

23

ปัจจุบัน Macports มีแพ็คเกจเพิ่มเติม (~ 18.6 K) มากกว่าที่มี Homebrew formulas (~ 3.1K) เนื่องจากครบกำหนด Homebrew นั้นช้ากว่าที่คิด

แพคเกจ Macport มักจะได้รับการดูแลโดยบุคคลเดียว

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

ผู้จัดการแพคเกจทั้งสองจะขอให้อัปเดตเป็นประจำ อาจใช้เวลาสักครู่

หมายเหตุ: คุณสามารถมีทั้งผู้จัดการแพ็คเกจในระบบของคุณ! มันไม่ได้เป็นอย่างใดอย่างหนึ่ง Brew อาจบ่น แต่ Macports จะไม่

นอกจากนี้หากคุณกำลังจัดการกับแพ็คเกจหลามหรือทับทิมให้ใช้สภาพแวดล้อมเสมือนจริงทุกที่ที่ทำได้


1
{{{บางครั้งรายการนี้อาจเสียหายได้และคุณต้องแก้ไขด้วยตนเองเพื่อให้ได้สิ่งต่าง ๆ กลับมาตามลำดับแม้ว่าจะไม่ยากเกินไป }}} ฉันไม่เคยเห็นสิ่งนี้เกิดขึ้นแม้ว่าจะไม่ได้บอกว่ามันเป็นไปไม่ได้ สถานการณ์อะไร คุณยื่นข้อบกพร่อง ( trac.macports.org ) หรือไม่
LSpice

{{{ผู้จัดการแพคเกจทั้งสองจะขอให้อัปเดตเป็นประจำ อาจใช้เวลาสักครู่ }}} ดูเหมือนว่าจะเป็นข้อความแปลก ๆ ในหลาย ๆ ปีที่ผ่านมาฉันจำได้ว่าอัปเกรด MacPort เองสองสามครั้งและการอัปเดตค่อนข้างรวดเร็ว คุณหมายถึงพอร์ตที่ต้องอัพเดทบ่อยครั้งหรือไม่ พวกเขาสามารถแต่เป็นสิ่งที่ดีไม่ใช่ข้อเสียเปรียบฉันคิดว่า! นอกจากนี้อาจเป็นเรื่องที่น่าสังเกตว่า MacPorts จะไม่ขอให้ทำอะไรนั่นคือไม่มีการจู้จี้ คุณต้องถามว่ามันเกี่ยวกับแพคเกจออกจากวันที่
LSpice

18

โดยค่าเริ่มต้น Homebrew จะติดตั้งแพ็คเกจไปที่ / usr / local คำสั่ง Macport ต้องการ sudo เพื่อติดตั้งและอัปเกรด (คล้ายกับ apt-get ใน Ubuntu)

สำหรับรายละเอียดเพิ่มเติม:

ไซต์นี้แนะนำให้ใช้ Hombrew: http://deephill.com/macports-vs-homebrew/

ในขณะที่ไซต์นี้แสดงข้อดีของการใช้ Macports: http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907

ฉันเพิ่งเปลี่ยนจาก Ubuntu เมื่อเร็ว ๆ นี้และฉันสนุกกับการใช้ homebrew (มันง่ายและใช้งานง่าย!) แต่ถ้าคุณรู้สึกว่าใช้ sudo แล้ว Macports อาจเป็นวิธีที่ดีกว่า!


4
คุณกำลังบอกว่า homebrew ติดตั้งสิ่งต่าง ๆ/usr/localโดยไม่ต้องใช้ sudo?

1
@NgocPham คุณมีการอ้างอิงสำหรับสิ่งนั้นหรือไม่?

16
@Keith ไซต์นั้นไม่ถูกต้อง หรืออย่างน้อยก็ออกจากสถานที่สำคัญ มีข้อความระบุว่า "Apple ได้ทิ้งไดเรกทอรีนี้ไว้ให้เราซึ่งหมายความว่าไม่มี / usr / ไดเรกทอรีท้องถิ่นเป็นค่าเริ่มต้นดังนั้นไม่จำเป็นต้องกังวลเกี่ยวกับการทำให้เครื่องมือที่มีอยู่ยุ่งเหยิง" Apple ยังไม่ได้ออกจาก/usr/localHomebrew Apple ปล่อย/usr/localให้ "executables, ไลบรารี, ฯลฯ ไม่รวมอยู่ในระบบปฏิบัติการพื้นฐาน" นั่นหมายความว่ามันเป็นไปได้ว่าเครื่องมือที่ติดตั้งก่อนที่จะใช้ Homebrew อาจสร้างดังกล่าวว่าไม่สามารถแก้ไขได้โดยไม่ต้อง/usr/local sudoพวกเขาไม่ได้พูดถึงเรื่องนั้นในวิกิ

2
@NgocPham ประเด็นของฉันคือฉันไม่เชื่อว่า Homebrew สามารถใช้งานได้/usr/localหากไม่ได้รับอนุญาตรูท สิทธิ์เริ่มต้นสำหรับ/usrการติดตั้ง OS X ใหม่คือเจ้าของรูทโดยไม่มีสิทธิ์การเขียนสำหรับบุคคลอื่น เพื่อสร้าง แม้กระทั่ง/usr/localHomebrew จะต้องมีการเข้าถึงรูท (ฉันไม่ได้พยายามที่จะปกป้องอะไร)

5
@Articuno ฉันคิดว่าฉันได้รับคุณแล้ว มันเป็นเพียงคำแถลงที่homebrewสามารถติดตั้งสิ่งต่าง ๆ ได้โดยไม่ต้องsudoเพราะเมื่อมันตั้งค่าตัวเองมันใช้ sudoเพื่อให้สิทธิ์ในไดเรกทอรีคลายดังนั้นมันจะสามารถทำสิ่งใด ๆ ภายใน/usr/localโดยไม่ต้องเรียกรหัสผ่าน มันหมายความว่าส่วน "ติดตั้งโดยไม่มีรหัสผ่าน" ผิดหรือเปล่า? ฉันไม่คิดอย่างนั้น! ยังคงเป็นจริงที่homebrew จะสามารถรับสิ่งโดยไม่มีรหัสผ่าน
Ngoc Pham
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.