동일한 컴퓨터에 Homebrew와 Macports를 모두 설치하는 것이 안전합니까?


73

꽤 많은 포트가 설치된 iMac에 MacPorts가 설치되어 있습니다.

그래도 Homebrew를 사용해 보는 데 관심이 있습니다. 많은 좋은 점을 들었으므로 사용하는 여러 도구의 최신 버전이 포함되어 있음을 알았습니다.

그러나 두 컴퓨터가 같은 컴퓨터에 공존 할 수 있습니까, 아니면 먼저 MacPorts를 완전히 제거해야합니까?

또한 두 개 동시에 설치할 수 있으면 서로 완전히 독립적입니까? Homebrew의 기능 중 하나는 시스템에 이미 포함되어있는 새 버전 (예 : python)을 다시 설치하지 않는다는 것입니다. 이것은 이미 MacPorts에 의해 유지 관리되는 버전을 설치하지 않는 것으로 확장됩니까?

그런 다음 MacPorts를 제거하면 어떻게됩니까?

답변:


24

그들은 함께 공존하지 않을 것입니다. Apple gcc는 / usr / local에서 몇 가지를 찾습니다. 이것은 macports 컴파일이 포터가 예상하지 못한 것을 찾을 수 있음을 의미합니다. / usr / local에있는 예제는 macports 메일 목록 및 버그를 참조하십시오.


4
homebrew를 매우 꼼꼼하게 살펴 봤지만 homebrew의 기본 설치 위치를 / usr / local에서 / opt / homebrew / usr / local과 같은 것으로 변경 한 경우 해당 문제를 피할 수 있습니까?
Babu

@Babu는 - 양조에 따르면, 당신은해야합니다 신중하게 진행
피터 Ajtai에게

@babu은 - 아마도하지만 완전히 다른 경로를 사용하여 테스트되지 않은 경로와 나도 시스템의 포트를 의심도 그 실행을 따기 다른 PN FORST입니다 사제 또는 MacPorts를의있는 문제가있을 것입니다
user151019

18

내가 준 다른 대답 비슷한 질문에를 :

Homebrew는 / usr / local에 설치된 소스에서 소프트웨어를 빌드 할 때 문제를 일으킬 수 있습니다. 이것이 기본값이며,이 경로는 컴파일러 및 기타 도구의 기본 검색 경로에 있으므로 잘못된 선택입니다. 따라서 다른 패키징 소프트웨어를 사용한 빌드는 자체 버전 대신 Homebrew의 버전을 사용하여 잘못된 종속성을 선택할 수 있습니다.

몇 년 전, 프로젝트 초기에 MacPorts조차도 / usr / local을 사용했습니다. 그러나 FAQ에 설명 된 다른 도구와 협력하지 않는 것으로 나타났습니다. 불행히도 Homebrew 개발자는 이전 경험에 대해 듣고 싶지 않았고 그러한 사실을 무시했습니다 ...

일반적으로 모든 문제를 피하기 위해 하나의 도구에만 고정하는 것이 좋습니다. MacPorts는 Fink에서 사용하는 / sw와 같은 하 코딩 된 경로를 패치하기 위해 최선을 다하고 있습니다. 일반적으로 작동하지만 / usr / local에 설치하면 문제가 발생합니다.

[…]


에 homebrew를 설치할 수도 있습니다 ~/.homebrew. MacPorts를 대신 설치하면 여전히 방해가됩니까?
Behrang

/ usr / local 이외의 다른 위치는 괜찮습니다.
raimue

MacPort가 설치된 / opt / local에 Homebrew를 설치하면 MacPort와 Homebrew가 공존합니까?
Adam LS

1
MacPorts가 이미 설치되어있는 경우 다른 소프트웨어를 / opt / local에 수동으로 설치해서는 안됩니다. MacPorts에 알려지지 않은 파일을 저장할 때 방해가되어 포트를 설치할 때 충돌이 발생합니다.
raimue

8

나는 Gnu 빌드 툴이 무엇을 만들 것인지에 대한 걱정 /usr/local이 편집증에 대한 평가라고 생각했습니다 . 빌드 툴 에는 많은 것들이있을 것으로 기대합니다 . 패키지 매니저 이전의 좋은 시절 (농담)에서 우리는 무엇이든 컴파일했습니다 /usr/local. 그러나 Autoconf는 일반적으로 문제를 파악하지만 많은 오픈 소스 프로젝트의 복잡한 빌드로 인해 문제가 발생하기 때문에 어려움을 겪을 때 이러한 문제를 해결하기가 어려울 수 있습니다.

그러나 Autoconf가 원하지 않는 것을 찾는 데 어려움을 겪을 위험은 /usr/local각각 서로 다른 패키지 라이브러리의 적용 범위를 가진 Perl, Tcl 및 Ruby의 2, 3 또는 4 개의 서로 다른 사본을 갖는 유지 관리에 대한 균형을 맞출 필요가 있습니다. 불쾌한.

MacPorts와 Fink에 대한 나의 경험은 일반적으로 정확히 이것으로 인해 악화되어 왔으며 어느 시점에서 옛날 방식으로 컴파일하는 것으로 전환 /usr/local했기 때문에 Homebrew가 그것에 대해 엉망이되지 않은 것을 기쁘게 생각했습니다. 에 설치하도록 MacPorts를 구성하려고 시도 /usr/local했지만 MacPorts가이를 어렵게 만듭니다. 메일 링리스트와 버그 트래커에 대한 울부 짖음을 다룰 때 자신의 삶을 편하게 만드는 동기가 있음을 이해합니다. 그러나 자원 봉사자 패키지 러의 노력을 존중하고 그들의 시간을 소중한 것으로 취급해야한다는 점에 유의하십시오. 디버깅 편의가 사용자에게 영향을 미치는 유일한 단순성은 아닙니다.

이러한 점에서 Homebrew는 적어도 이전에 수행했던 방식으로 작업을 수행하며 MacPorts는 방해하지 않습니다. Homebrew로 필요한 패키지를 문서화하고 어려움이있는 경우 / usr / local을 정리하고 다시 설치하려면 문제가 발생할 경우 언제든지 되돌릴 수 있습니다. / usr / local의 문제가 일반적으로 컴퓨터에 영구적 인 손상을 줄 위험이 없다는 것을 알고 나면 자유롭게 위험을 감수 할 수 있습니다.

필자는 FreeBSD보다 OSX에 패키징이 얼마나 더 나쁜지에 주목할 것이다. 애플은 BSD 서브 시스템의 유용성에 관심이없는 것 같다. 이것이 도움이 될 수있는 문제이기 때문이다.


글쎄, 내 질문은 단지 패키지 관리자를 사용하여 "물건을 얻는"바보 같은 사용자의 관점에서 묻습니다. "일이 잘못되면 스스로를 조금 알아낼 수있을 것 " 이라고 확신 할 는 없다. 그럼에도 불구하고 추가 설명을 위해 어쨌든 찬성하십시오. 감사!
Rich

1
/ usr / local을 사용하지 않는 좋은 이유는 MacPorts입니다. trac.macports.org/wiki/FAQ#defaultprefix
raimue

3
@Raim : 그들에게 좋은 이유-버그 추적의 편리함과 사용자 머신에서의 설치의 단순성 사이의 타협점입니다. 나는 후자를 걱정한다.
찰스 스튜어트

1
누군가 (혹은 무엇인가) $ lib의 사본을 설치했기 때문에 잘못 될 수있는 것의 수 /usr/local는 끝이 없습니다. 아키텍처, 버전, 구성된 기능 및 플래그, 부분 설치, 보안 문제가있는 오래된 설치 및 문제가 발생할 수 있습니다. 물론하고있는 일을 알고 있다면 버그를 제기하지 마십시오. 어쨌든 사람들은 버그를 신고하는 것이 추적 모드 ( -t, 아래 참조)가 존재하는 이유와 피하는 /usr/local것이 기본 권장 사항 인 이유 입니다.
neverpanic

@neverpanic-/ usr / local로 모든 것을 컴파일하는 위험에 대한 나의 의견은이 답변을 작성한 이후로 변경되었습니다. 주로 일반적인 오픈 소스 프로젝트의 빌드 복잡성이 증가하고 올라가고 Autoconf 문제가 더 쉬워지지 않기 때문입니다. 정리하라 : 적어도 "편집증에 걸린다"는 불공평하다. 그래도 Macports의 "자체 빌드 유니버스"접근 방식이 마음에 들지 않으며, 메일 링리스트 상호 작용의 단순성이 최종 사용자가 걱정해야하는 단순성 만이 아니라는 점을 강조 할 가치가 있습니다. 나는 대답에주의를 기울일 것입니다.
찰스 스튜어트

6

MacPorts FAQ 에 따르면 :

2.3.0부터 MacPorts는 포트의 빌드 시스템에서 / usr / local (및 포트가 의존하지 않는 다른 모든 파일)을 자동으로 숨길 수 있습니다. 이 기능을 추적 모드라고하며 포트에 -t 플래그를 제공하여 활성화됩니다.

sudo port -t install <portname>

이는 Homebrew 설치 페이지에 따라 관련이 있습니다.

Homebrew가 경쟁 업체와 관련하여 작동하는 이유 중 하나는 / usr / local에 설치하는 것이 좋습니다. 당신의 위험에 다른 접두사를 선택하십시오!

따라서 개인적인 경험이 거의 없기 때문에 MacPort 설치에 항상 -t 플래그를 사용하면 MacPorts와 Homebrew가 동일한 시스템에 공존하는 데 따른 대부분의 문제를 방지 할 수 있다는 이론이 있습니다. 마지막 질문을 해결하려면 MacPorts를 제거해도 문제가 발생하는 이유는 없습니다.


성능이 크게 저하 될 수 있습니다. 그러나 일반적으로 이것은 거의 모든 경우에 작동합니다.
neverpanic

그 경고 @neverpanic을 지적 해 주셔서 감사합니다. 성능 저하는 포트 설치 시간에만 영향을 미치며 설치된 포트의 런타임 특성에는 영향을 미치지 않습니다. 참된?
webappzero

옳은. 런타임 문제가 아닌 빌드 타임 문제 만 방지하지만 매우 드문 경우입니다.
neverpanic

실제로, 나는 항상 추적 플래그를 사용해야한다는이 요구 사항을 기억하지 못했습니다. 따라서 -t를 일관되게 사용한다고 확신하지 않는 한 다른 사람에게이 방법을 권장하지 않습니다.
webappzero

기억하고 싶지 않다면 래퍼 스크립트 또는 셸 별칭을 작성하고 sudo와 셸 별칭 간의 상호 작용을 알고 있으면 항상 전달할 수 있습니다. 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

webappzero의 sudo port -t ...솔루션이 도움이 될 것입니다. 솔직히 말하면, 나는 Fink, MacPorts 및 Homebrew를 한 번에 MacPorts (현재 어쨌든)에 의존하여 실행하고 MacPorts에서 얻을 수없는 것을 설치하기 위해 다른 두 가지 중 하나만 사용합니다. 나는 port -t트릭을 배우기 전에도 이런 식으로 어려움을 거의 겪지 않았습니다 . 복잡한 개발 및 서버 환경을 유지하기 위해 여러 패키지 관리자를 사용하려는 경우 적어도 불편한 상황에 처한 것 같습니다. 하나를 고르고 다른 것을 피하십시오. 그러나 당신이 그들에게 절실히 필요한 것을 위해, 주요 경로를 더 일찍 길에 넣으십시오.

내가 듣고있는 것이 Apple이 Apple 자신 이외의 / usr /에 설치하는 것을 금지하는 것에 대해 사실이라면 (또는 아마도 El Crapitan에서 이미 설치하고있는 것입니다. 문제가 해결되었다고 가정합니다. Homebrew가 Apple의 강력한 접근 방식에 동의하는지 여부에 관계없이 Homebrew가 기본적으로 다른 것을 사용하는 문제를 완화 할 것이라고 생각합니다.

결국, 나는 애플 자신의 포트를 자신의 트리에 국한시키는 아이디어를 좋아한다. / usr /가 아니 었으면 좋겠다. 오히려 / System / bin / 등을 사용하여 자신의 물건을 분리하여 최신 커뮤니티 유지 소프트웨어로 더 쉽게 우회 할 수있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.