การติดตั้ง Homebrew และ Macports บนเครื่องเดียวกันนั้นปลอดภัยหรือไม่


73

ฉันมีการติดตั้ง MacPorts บน iMac ของฉันโดยมีพอร์ตจำนวนพอสมควร

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

แต่ทั้งสองอยู่ร่วมกันบนเครื่องเดียวกันได้หรือฉันต้องถอนการติดตั้ง MacPort ทั้งหมดก่อนหรือไม่?

นอกจากนี้หากสามารถติดตั้งทั้งสองได้พร้อมกันพวกเขาจะเป็นอิสระจากกันหรือไม่ หนึ่งในคุณสมบัติของ Homebrew คือไม่ได้ติดตั้งสิ่งใหม่ ๆ ซึ่งรวมอยู่ในระบบ (เช่น python) สิ่งนี้ขยายไปถึงการไม่ติดตั้งเวอร์ชันของสิ่งต่าง ๆ ที่ถูกดูแลโดย MacPorts หรือไม่?

จะเกิดอะไรขึ้นหากฉันถอนการติดตั้ง MacPorts ในภายหลัง

คำตอบ:


24

พวกเขาจะไม่อยู่ด้วยกันได้ดี gcc ของ Apple ดูใน / usr / local สำหรับบางสิ่ง ซึ่งหมายความว่าการรวบรวม macports สามารถค้นหาสิ่งที่พนักงานยกกระเป๋าไม่ได้คาดหวัง ดูรายชื่ออีเมลและข้อบกพร่องของ macports สำหรับตัวอย่างของสิ่งต่าง ๆ ที่พบใน / usr / local


4
ฉันได้ดูคร่าวๆที่ homebrew เท่านั้น แต่หากคุณเปลี่ยนตำแหน่งการติดตั้งเริ่มต้นสำหรับ homebrew จาก / usr / local เป็นอย่างเช่น / opt / homebrew / usr / local ปัญหานั้นจะถูกหลีกเลี่ยงหรือไม่?
Babu


@babu - อาจเป็นไปได้ แต่จะมีปัญหากับ homebrew หรือ macports ที่เป็นเส้นทางสำหรับเส้นทางและอีกสิ่งหนึ่งที่เก็บไฟล์ปฏิบัติการเหล่านั้นและฉันสงสัยว่าพอร์ตของทั้งสองระบบนั้นยังไม่ได้ทดสอบอย่างสมบูรณ์โดยใช้เส้นทางอื่น
user151019

18

ฉันให้คำตอบในคำถามที่คล้ายกัน:

Homebrew จะทำให้เกิดปัญหาเมื่อสร้างซอฟต์แวร์จากแหล่งที่มาหากมีการติดตั้งใน / usr / local นี่เป็นค่าเริ่มต้นซึ่งเป็นตัวเลือกที่ไม่ดีเนื่องจากเส้นทางนี้อยู่ในเส้นทางการค้นหาเริ่มต้นของคอมไพเลอร์และเครื่องมืออื่น ๆ ดังนั้นการสร้างจากซอฟต์แวร์บรรจุภัณฑ์อื่นอาจทำให้เกิดการพึ่งพาที่ไม่ถูกต้องโดยใช้เวอร์ชันของ Homebrew แทนที่จะเป็นของตัวเอง

หลายปีที่ผ่านมาในตอนเริ่มต้นโครงการแม้แต่ MacPorts ก็ใช้ / usr / local แต่กลับกลายเป็นว่าไม่ร่วมมือกับเครื่องมืออื่น ๆ ตามที่ระบุไว้ในคำถามที่พบบ่อย น่าเสียดายที่นักพัฒนา Homebrew ไม่ต้องการรับฟังประสบการณ์ก่อนหน้านี้และไม่สนใจข้อเท็จจริงเหล่านี้ ...

โดยทั่วไปจะดีกว่าหากใช้เครื่องมือเดียวเท่านั้นเพื่อหลีกเลี่ยงปัญหาทั้งหมด MacPorts พยายามอย่างเต็มที่เพื่อแก้ไขเส้นทางที่ถูกแฮร์โค้ดเช่น to / sw ที่ Fink ใช้ ดังนั้นโดยปกติจะใช้งานได้ แต่การติดตั้งอะไรใน / usr / local จะทำให้เกิดปัญหาแน่นอน

[ ... ]


~/.homebrewดูเหมือนว่ามันยังเป็นไปได้ที่จะติดตั้งใน homebrew มันจะยังคงรบกวนการทำงานของ MacPort หรือไม่หากติดตั้งไว้ที่นั่นแทน?
Behrang

ตำแหน่งอื่นที่ไม่ใช่ / usr / local ควรเป็นปกติ
raimue

MacPort และ Homebrew จะอยู่ร่วมกันได้หรือไม่หากใครจะติดตั้ง Homebrew ไปที่ / opt / local ที่ติดตั้ง MacPort ไว้
อดัม LS

1
คุณไม่ควรติดตั้งซอฟต์แวร์อื่น ๆ ลงใน / opt / local ด้วยตนเองเมื่อติดตั้ง MacPorts ไว้ที่นั่นแล้ว มันจะรบกวนอย่างแน่นอนเมื่อคุณวางไฟล์ที่ MacPort ไม่รู้จักซึ่งจะนำไปสู่ข้อขัดแย้งเมื่อทำการติดตั้งพอร์ต
raimue

8

ฉันเคยคิดว่าความกังวลเกี่ยวกับสิ่งที่เครื่องมือสร้างของ Gnu จะทำให้/usr/localเกิดความหวาดระแวง เครื่องมือสร้างคาดหวังว่าจะมีสิ่งต่าง ๆ มากมายที่นั่น: ในสมัยก่อนที่ดีก่อนที่ผู้จัดการแพคเกจ (ฉันล้อเล่น) เรารวบรวมสิ่ง/usr/localต่างๆ แต่ในขณะที่ Autoconf มักจะแก้ปัญหาต่าง ๆ ได้การสร้างความซับซ้อนของโปรเจ็กต์โอเพนซอร์สจำนวนมากทำให้เกิดปัญหาและปัญหาเหล่านี้อาจยากที่จะแก้ไขเมื่อคุณมีปัญหา

แต่ความเสี่ยงในการเกิดปัญหากับ Autoconf ในการค้นหาบางสิ่งที่ไม่ควรอยู่ภายใต้/usr/localความสมดุลของความรำคาญในการบำรุงรักษาที่มีสำเนาสอง, สามหรือสี่ชุดที่แตกต่างกันของ Perl, Tcl, และ Ruby แต่ละอันมีความครอบคลุมที่แตกต่างกัน ไม่เป็นที่พอใจ

เนื่องจากประสบการณ์ของฉันกับ MacPorts และ Fink มักเกิดจากความโกรธเคืองที่เกิดขึ้นอย่างแน่นอนและในบางครั้งการสลับไปยังการรวบรวมวิธีการแบบเก่า ๆ/usr/localฉันก็ดีใจที่เห็นว่า Homebrew ไม่ได้ยุ่งเกี่ยวกับเรื่องนั้น ฉันพยายามกำหนดค่า MacPorts เพื่อติดตั้ง/usr/localแต่ MacPorts ไม่สามารถทำได้ ฉันเข้าใจว่าแรงจูงใจคือการทำให้ชีวิตง่ายขึ้นสำหรับตัวเองเมื่อต้องรับมือกับเสียงร้องเพื่อขอความช่วยเหลือในรายการส่งจดหมายและตัวติดตามข้อผิดพลาด: โปรดทราบว่าแม้ว่าเราควรเคารพความพยายามของผู้ทำอาสาสมัครและปฏิบัติต่อเวลาของพวกเขา การดีบักความสะดวกสบายไม่ใช่ความเรียบง่ายเพียงประเภทเดียวที่ส่งผลกระทบต่อคุณในฐานะผู้ใช้

อย่างน้อยที่สุด Homebrew ในแง่นี้ทำสิ่งที่พวกเขาเคยทำและ MacPort พยายามที่จะไม่เข้าไปยุ่ง หากคุณยินดีที่จะจัดทำเอกสารที่คุณต้องการใช้กับ Homebrew และเช็ด / usr / local ให้สะอาดและติดตั้งใหม่ในกรณีที่มีปัญหาคุณสามารถสำรองข้อมูลได้เสมอในกรณีที่สิ่งผิดปกติ และเมื่อคุณทราบว่าปัญหาใน / usr / local ไม่ได้นำความเสี่ยงของความเสียหายถาวรไปยังเครื่องของคุณโดยทั่วไปคุณอาจรู้สึกอิสระที่จะเสี่ยง

ฉันจะทราบว่าบรรจุภัณฑ์ที่แย่กว่านั้นบน OSX มากกว่า FreeBSD: แอปเปิ้ลดูเหมือนจะไม่สนใจเกี่ยวกับการใช้งานของกลุ่มย่อย BSD ของมันเพราะนี่เป็นปัญหาที่พวกเขาสามารถช่วยได้


คำถามของฉันถูกถามจากมุมมองของผู้ใช้โง่ที่เพิ่งใช้ตัวจัดการแพคเกจเพื่อ "รับสิ่ง" ไม่แน่ใจเลยว่าฉันจะสามารถ "หาทางแก้ไขปัญหาตัวเอง [ของ] เล็กน้อยถ้าสิ่งต่าง ๆ ผิดพลาด" ยังคง upvote ต่อไปสำหรับการชี้แจงพิเศษ ขอบคุณ!
รวย

1
MacPorts เป็นเหตุผลที่ดีที่จะไม่ใช้ / usr / local ดูที่trac.macports.org/wiki/FAQ#defaultprefix
raimue

3
@Raim: เหตุผลที่ดีสำหรับพวกเขา - มันค่อนข้างจะเป็นการแลกเปลี่ยนระหว่างความสะดวกในการติดตามบั๊กและความเรียบง่ายของการติดตั้งบนเครื่องของผู้ใช้ ฉันสนใจเรื่องหลัง
Charles Stewart

1
จำนวนสิ่งที่สามารถผิดพลาดได้เพราะใครบางคน (หรือบางอย่าง) ติดตั้งสำเนาของ $ lib ใน/usr/localนั้นไม่มีที่สิ้นสุด สถาปัตยกรรมเวอร์ชันคุณสมบัติและธงที่กำหนดค่าการติดตั้งบางส่วนการติดตั้งที่ล้าสมัยด้วยปัญหาด้านความปลอดภัยและและและจะทำให้เกิดปัญหา แน่นอนไปข้างหน้าถ้าคุณรู้ว่าคุณกำลังทำอะไร แต่อย่าทำข้อบกพร่องเกี่ยวกับมัน ประสบการณ์แสดงให้เห็นว่าคนอื่น ๆ ยังคงมีข้อบกพร่องไฟล์และนั่นคือเหตุผลว่าทำไมโหมดการติดตาม ( -tดูด้านล่าง) อยู่และทำไมการหลีกเลี่ยง/usr/localเป็นคำแนะนำเริ่มต้น
Neverpanic

@neverpanic - ความคิดเห็นของฉันเกี่ยวกับความเสี่ยงในการรวบรวมทุกอย่างให้กับ / usr / local มีการเปลี่ยนแปลงตั้งแต่ฉันเขียนคำตอบนี้ส่วนใหญ่เป็นเพราะการสร้างความซับซ้อนของโครงการโอเพนซอร์ซทั่วไปขึ้นไปเรื่อย ๆ และปัญหา Autoconf สังคายนา: อย่างน้อย "verging on paranoid" ไม่ยุติธรรม ฉันยังไม่ชอบวิธีการของ Macports "ส่วนตัวสร้างจักรวาล" และมันสมควรได้รับการเน้นย้ำว่าความเรียบง่ายของการโต้ตอบรายชื่อผู้รับจดหมายไม่ใช่ความเรียบง่ายเพียงอย่างเดียวที่ผู้ใช้ควรกังวล ฉันจะเพิ่มคำเตือนในคำตอบของฉัน
Charles Stewart

6

ตามคำถามที่พบบ่อยของ MacPorts :

โปรดทราบว่าเริ่มต้นด้วย 2.3.0, MacPorts สามารถซ่อน / usr / local โดยอัตโนมัติ (และไฟล์อื่น ๆ ทั้งหมดที่พอร์ตไม่ได้ขึ้นอยู่กับ) จากระบบบิลด์ของพอร์ต คุณสมบัตินี้เรียกว่าโหมดติดตามและเปิดใช้งานโดยระบุแฟล็ก -t ให้กับพอร์ตเช่น

sudo port -t install <portname>

สิ่งนี้เกี่ยวข้องเนื่องจากตามหน้าการติดตั้ง Homebrew:

หนึ่งในเหตุผลที่ Homebrew ใช้งานได้เมื่อเทียบกับการแข่งขันก็เพราะเราแนะนำให้ติดตั้งไปที่ / usr / local เลือกคำนำหน้าอื่นที่อันตรายของคุณ!

ดังนั้นและด้วยประสบการณ์ส่วนตัวเล็กน้อยฉันคิดว่าการใช้แฟล็ก -t สำหรับการติดตั้ง MacPort ควรป้องกันปัญหาส่วนใหญ่ที่มี MacPort และ Homebrew อยู่ร่วมกันในระบบเดียวกัน เพื่อตอบคำถามสุดท้ายของคุณ: ฉันไม่เห็นสาเหตุที่การถอนการติดตั้ง MacPorts จะทำให้เกิดปัญหาใด ๆ


ระวังให้ดีว่าคุณจะต้องทนทุกข์ทรมานจากการถูกปรับโทษ แต่โดยทั่วไปสิ่งนี้ควรใช้งานได้ในเกือบทุกกรณี
Neverpanic

ขอบคุณสำหรับการชี้ให้เห็นว่า caveat @neverpanic ฉันถือว่าการลงโทษประสิทธิภาพมีผลเฉพาะเวลาที่ติดตั้งพอร์ตและไม่มีผลกับลักษณะการทำงานของพอร์ตที่ติดตั้ง จริงหรือไม่?
webappzero

แก้ไข. มันป้องกันปัญหา build-time เท่านั้นไม่ใช่ปัญหารันไทม์ (แต่ปัญหาเหล่านี้หายากมาก)
Neverpanic

ในทางปฏิบัติฉันไม่สามารถจำข้อกำหนดนี้ในการใช้การตั้งค่าสถานะการติดตาม ดังนั้นฉันไม่แนะนำวิธีปฏิบัตินี้ให้ผู้อื่นเว้นแต่คุณจะมั่นใจว่าคุณจะใช้ -t อย่างสม่ำเสมอ
webappzero

หากคุณไม่ต้องการจดจำคุณสามารถเขียนสคริปต์ wrapper หรือ shell alias (แต่ระวังการโต้ตอบระหว่าง sudo และ aliases shell) เพื่อส่งให้คุณ โปรดทราบว่า El Capitan ในปัจจุบันแบ่งโหมดการติดตาม ฉันกำลังแก้ไขปัญหา
Neverpanic

4

ขณะติดตั้ง homebrew บนคอมพิวเตอร์ที่ฉันใช้พอร์ตมาหลายปีนี่คือสิ่งที่ฉันสามารถอ่านได้:

Warning: You have MacPorts or Fink installed:
  /opt/local/bin/port

This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.

  sudo mv /opt/local ~/macports

ระวัง!


1

sudo port -t ...โซลูชันของ webappzero น่าจะช่วยได้ ความจริงแล้วฉันทำงานกับ Fink, MacPorts และ Homebrew ทั้งหมดในครั้งเดียวด้วยความเคารพต่อ MacPorts (ตอนนี้ต่อไป) และใช้สองอย่างใดอย่างหนึ่งเท่านั้นเพื่อติดตั้งสิ่งที่ฉันไม่สามารถรับได้จาก MacPorts ฉันพบปัญหาเล็กน้อยในลักษณะนี้แม้กระทั่งก่อนที่จะเรียนรู้port -tเคล็ดลับ หากคุณกำลังพยายามใช้ผู้จัดการแพคเกจหลาย ๆ เพื่อรักษาความซับซ้อนของการพัฒนาและสภาพแวดล้อมเซิร์ฟเวอร์คุณอาจอยู่ในโลกที่ไม่สบายอย่างน้อย เลือกหนึ่งและหลีกเลี่ยงคนอื่น แต่สำหรับสิ่งที่คุณต้องการอย่างยิ่งจากพวกเขาและวางหลักก่อนหน้าในเส้นทาง

หากสิ่งที่ฉันได้ยินเป็นจริงเกี่ยวกับ Apple ที่จะห้ามไม่ให้ติดตั้งลงใน / usr / นอกเหนือจากของ Apple เอง (หรือบางทีพวกเขากำลังทำเช่นนั้นใน El Crapitan ซึ่งฉันหลีกเลี่ยงการ "ให้คะแนน" จนถึงอีกต่อไป ปัญหามันได้รับการแก้ไข) ฉันคิดว่ามันจะบรรเทาปัญหาหลังจากที่ Homebrew ใช้ค่าเริ่มต้นเป็นอย่างอื่นไม่ว่าเราจะเห็นด้วยกับวิธีการที่หนักหน่วงของ Apple หรือไม่

ในท้ายที่สุดฉันชอบความคิดที่จะ จำกัด พอร์ตของ Apple กับต้นไม้ของตัวเองฉันแค่หวังว่ามันจะไม่ใช่ / usr / ฉันต้องการให้พวกเขาใช้ / System / bin / ฯลฯ ฯลฯ เพื่อแยกสิ่งของของตัวเองดังนั้นฉันสามารถข้ามมันด้วยซอฟต์แวร์ที่ทันสมัยและดูแลรักษาโดยชุมชนได้ง่ายขึ้น

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