É 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.