É seguro instalar o Homebrew e o Macports na mesma máquina?


73

Eu tenho o MacPorts instalado no meu iMac com um número razoável de portas instaladas.

No entanto, estou interessado em experimentar o Homebrew, pois ouvi muitas coisas boas sobre isso e porque notei que ele contém versões mais atualizadas de várias das ferramentas que eu uso.

Mas os dois podem coexistir na mesma máquina ou preciso desinstalar o MacPorts inteiramente primeiro?

Além disso, se os dois puderem ser instalados ao mesmo tempo, eles serão completamente independentes um do outro? Uma das características do Homebrew é que não reinstala novas versões de coisas que já estão incluídas no sistema (por exemplo, python). Isso também se estende para a instalação de versões de coisas que já são mantidas pelo MacPorts?

O que acontece se eu desinstalar o MacPorts posteriormente?

Respostas:


24

Eles não vão coexistir bem juntos. O gcc da Apple procura em / usr / local algumas coisas. Isso significa que uma compilação de macports pode encontrar algo que o carregador não esperava. Veja listas de bugs e bugs do macports para exemplos de coisas encontradas em / usr / local.


4
Eu só dei uma olhada superficial no homebrew, mas se você alterasse o local de instalação padrão do homebrew de / usr / local para algo como / opt / homebrew / usr / local, esse problema seria evitado?
Babu

@Babu - De acordo com cerveja, você deve proceder com cautela
Peter Ajtai

@babu - possivelmente mas haverá questões com as quais de homebrew ou MacPorts é Forst pn o caminho e o outro pegar esses executáveis também eu suspeito que os portos de qualquer um dos sistemas não são totalmente testados utilizando outro caminho
user151019

18

Eu dei outra resposta em uma pergunta semelhante:

O Homebrew causará problemas ao criar o software a partir da fonte, se estiver instalado em / usr / local. Esse é o padrão, que é uma má escolha, pois esse caminho está no caminho de pesquisa padrão de compiladores e outras ferramentas. Portanto, compilações de outros softwares de empacotamento podem pegar a dependência errada, usando a versão do Homebrew em vez da própria.

Anos atrás, no começo do projeto, até o MacPorts usava / usr / local. Mas acabou não cooperando com outras ferramentas, conforme documentado em suas Perguntas frequentes. Infelizmente, os desenvolvedores da Homebrew não quiseram saber sobre experiências anteriores e ignoraram esses fatos ...

Em geral, geralmente é melhor usar apenas uma ferramenta para evitar todos os problemas. O MacPorts está fazendo o possível para corrigir quaisquer caminhos codificados, por exemplo, para / sw que é usado pelo Fink. Portanto, geralmente funcionará, mas ter qualquer coisa instalada em / usr / local definitivamente causará problemas.

[...]


Parece que também é possível instalar o homebrew ~/.homebrew. Ainda interferiria com o MacPorts se instalado em seu lugar?
precisa

Qualquer outro local que não seja / usr / local deve estar bem.
raimue

O MacPort e o Homebrew coexistem bem se alguém instalar o Homebrew em / opt / local, onde o MacPort está instalado?
Adam LS

11
Você não deve instalar outro software manualmente em / opt / local quando o MacPorts já estiver instalado lá. Definitivamente interferirá quando você colocar arquivos desconhecidos para o MacPorts, causando conflitos ao instalar portas.
raimue

8

Eu costumava pensar que as preocupações com o que as ferramentas de compilação do Gnu farão /usr/localeram quase paranóicas. As ferramentas de construção esperam que haja muitas coisas lá: nos bons velhos tempos antes dos gerenciadores de pacotes (eu brinco), compilávamos o que quer que fosse /usr/local. Porém, embora o Autoconf geralmente resolva problemas, a complexidade da compilação de muitos projetos de código-fonte aberto causa problemas e esses problemas podem ser difíceis de resolver quando você está com dificuldades.

Mas o risco de problemas com o Autoconf que encontra algo que não deve ser subestimado /usr/localprecisa ser equilibrado sobre o incômodo de manutenção com duas, três ou quatro cópias diferentes diferentes de Perl, Tcl e Ruby, cada uma com uma cobertura diferente de suas diferentes bibliotecas de pacotes. Desagradável.

Como minha experiência com o MacPorts e o Fink tem sido tipicamente exasperada por exatamente isso, e em algum momento a mudança para compilar a maneira antiga /usr/local, fiquei satisfeito ao ver que a Homebrew não mexeu com isso. Tentei configurar o MacPorts para instalar /usr/local, mas o MacPorts se esforça para dificultar isso. Entendo que a motivação é tornar a vida mais fácil para eles mesmos ao lidar com pedidos de ajuda em sua lista de e-mails e rastreador de erros: lembre-se, porém, de que, embora devamos respeitar o esforço dos empacotadores voluntários e tratar seu tempo como precioso, eles a conveniência da depuração não é o único tipo de simplicidade que afeta você, como usuário.

A Homebrew, pelo menos nesse aspecto, faz as coisas da maneira que costumava ser feita, e MacPorts tenta não interferir. Se você estiver disposto a documentar quais pacotes você precisa com o Homebrew, limpe / usr / local e reinstale em caso de dificuldades, sempre poderá voltar atrás caso as coisas dêem errado. E depois que você perceber que os problemas em / usr / local geralmente não correm o risco de danos permanentes às suas máquinas, você pode se sentir mais livre para correr riscos.

Vou observar como a embalagem do OSX é pior do que o FreeBSD: a Apple realmente não se preocupa com a usabilidade do subsistema BSD, porque esse é um problema que eles poderiam ajudar.


Bem, minha pergunta é feita da perspectiva de um usuário burro que está apenas usando o gerenciador de pacotes para "obter coisas". Não é absolutamente certo que eu seria capaz de "entender um pouco as coisas se eu der errado". Ainda assim, vote de qualquer maneira para obter mais esclarecimentos. Obrigado!
Rico

11
MacPorts como boas razões para não usar / usr / local, consulte trac.macports.org/wiki/FAQ#defaultprefix
raimue

3
@Raim: Boas razões para eles - é praticamente uma troca entre a conveniência de rastreamento de bugs e a simplicidade da instalação na máquina do usuário. Eu me preocupo com o último.
Charles Stewart

11
O número de coisas que podem dar errado porque alguém (ou algo) instalou uma cópia do $ lib in /usr/localé infinito. Arquiteturas, versões, recursos e sinalizadores configurados, instalações parciais, instalações desatualizadas com problemas de segurança e ee causarão problemas. Claro, vá em frente se você souber o que está fazendo, mas não registre bugs. A experiência mostra que as pessoas arquivam bugs de qualquer maneira, e é exatamente por isso que o modo de rastreamento ( -t, veja abaixo) existe e por que evitar /usr/localé a recomendação padrão.
neverpanic

@neverpanic - Minha opinião sobre os riscos de compilar tudo para / usr / local mudou desde que escrevi esta resposta, principalmente porque a complexidade de projetos típicos de código aberto aumenta e aumenta, e os problemas do Autoconf não estão ficando mais fáceis de resolver. resolver: pelo menos, "aproximar-se do paranóico" é injusto. Ainda não gosto da abordagem "próprio universo de construção privada" da Macports, e ela merece enfatizar que a simplicidade das interações nas listas de discussão não é o único tipo de simplicidade com a qual o usuário final deve se preocupar. Vou adicionar advertências à minha resposta.
Charles Stewart

6

De acordo com o FAQ MacPorts :

Observe que a partir do 2.3.0, o MacPorts pode ocultar automaticamente / usr / local (e todos os outros arquivos dos quais a porta não depende) dos sistemas de construção das portas. Esse recurso é chamado modo de rastreamento e é ativado fornecendo o sinalizador -t para a porta, por exemplo

sudo port -t install <portname>

Isso é relevante porque, de acordo com a página de instalação do Homebrew:

Uma das razões pelas quais o Homebrew funciona em relação à concorrência é porque recomendamos a instalação em / usr / local. Escolha outro prefixo por sua conta e risco!

Portanto, e com pouca experiência pessoal, teorizo ​​que sempre o uso do sinalizador -t nas instalações de MacPort deve evitar a maioria dos problemas de que o MacPorts e o Homebrew coexistam no mesmo sistema. Para resolver sua última pergunta: Não vejo nenhum motivo para desinstalar o MacPorts causar problemas.


Esteja ciente de que você sofrerá uma penalidade de desempenho significativa. Mas, em geral, isso deve funcionar em quase todos os casos.
neverpanic

Obrigado por apontar essa advertência @neverpanic. Suponho que a penalidade de desempenho afeta apenas o tempo de instalação da porta e não afeta as características de tempo de execução da porta instalada. Verdadeiro?
Webappzero

Corrigir. Isso evita apenas problemas em tempo de construção, e também não em tempo de execução (mas esses são muito raros).
neverpanic

Na prática, não lembrei desse requisito de sempre usar o sinalizador de rastreamento. Portanto, eu não recomendo essa prática para outras pessoas, a menos que você tenha certeza de que usará -t consistentemente.
Webappzero 4/10/15

Se você não quiser se lembrar, pode escrever um script de wrapper ou um alias de shell (mas esteja ciente da interação entre sudo e alias de shell) para sempre transmiti-lo para você. Observe que o El Capitan atualmente quebra o modo de rastreamento. Estou trabalhando em uma solução alternativa.
neverpanic

4

Ao instalar o homebrew em um computador em que uso portas há anos, eis o que posso ler:

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

Seja cuidadoso!


1

A sudo port -t ...solução do webappzero deve ajudar. Para ser sincero, eu corro com o Fink, MacPorts e Homebrew de uma só vez, com deferência ao MacPorts (por enquanto de qualquer maneira), e usando apenas um dos outros dois para instalar coisas que não consigo do MacPorts. Já tive poucas dificuldades dessa maneira, mesmo antes de aprender o port -ttruque. Porém, se você estiver tentando usar vários gerenciadores de pacotes para manter ambientes complexos de desenvolvimento e servidor, provavelmente estará em um mundo de desconfortos. Escolha um e evite os outros, exceto por algo que você precisa desesperadamente deles, e coloque o principal mais cedo no caminho.

Se o que estou ouvindo é verdade sobre a Apple proibir que coisas sejam instaladas em / usr / que não sejam as da própria Apple (ou talvez elas já estejam fazendo isso no El Crapitan, estou evitando a classificação "até" depois de mais problemas com isso são resolvidos), suponho que isso atenuará o problema depois que o Homebrew usar como outra coisa - se concordamos ou não com a abordagem pesada da Apple.

No final, eu gosto da idéia de confinar os próprios portos da Apple à sua própria árvore, apenas gostaria que não fosse / usr /. Prefiro que eles usem o / System / bin /, etc., etc., para isolar suas próprias coisas, para que eu possa ignorá-lo com software atualizado e mantido pela comunidade com mais facilidade.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.