Qual é a diferença / uso de homebrew, macports ou outras ferramentas de instalação de pacotes? [fechadas]

238

Acabei de mudar para um Mac a partir do Ubuntu. Fiquei decepcionado que o mac não tem o conveniente sudo apt-getno Ubuntu. Ouvi dizer que devo usar o homebrew, mas não sei exatamente o que o homebrew ou o macports faz?

ROBOTPWNS
fonte
4
muito relacionado: apple.stackexchange.com/questions/32724/…
cregox 15/06/14
8
Alguns anos atrás, a porta da frente do homebrew tinha uma afirmação que dizia algo como "o homebrew é melhor porque está escrito em Ruby". Não tenho nada contra Ruby, lembre-se de você. Eu gosto de oop e rubi é uma ótima linguagem oop. O que eu tenho um problema é com qualquer desenvolvedor de software que pense que um idioma é melhor que todos os outros. Por esse motivo, não tenho interesse em cervejas caseiras. Além disso, o macports vem funcionando bem para mim há muitos anos.
Mike Makuch

Respostas:

145

MacPorts é o caminho a percorrer.

  1. Como @ user475443 apontou, o MacPorts possui muitos outros pacotes. Com a fermentação, você ficará preso em breve porque a fórmula necessária não existe.

  2. MacPorts é um aplicativo nativo: C + TCL. Você não precisa de Ruby. Para instalar o Ruby no Mac OS X, você pode precisar do MacPorts, então vá com o MacPorts e ficará feliz.

  3. O MacPorts é realmente estável, em 8 anos eu nunca tive um problema com ele, e todo o meu ecossistema Unix se baseia nele.

  4. Se você é desenvolvedor de PHP, pode instalar a última versão do Apache (Mac OS X usa 2.2), PHP e todas as extensões necessárias, e depois atualizar tudo com um único comando. Esqueça de fazer o mesmo com o Homebrew.

  5. Grupos de suporte 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
    

    Se você possui o PHP55 e o PHP56 instalados (com muitas extensões diferentes), é possível alternar entre eles com apenas um comando. Todas as extensões relativas fazem parte do grupo e serão ativadas dentro do grupo escolhido: php55 ou php56. Não tenho certeza se o Homebrew possui esse recurso.

  6. Rubists gostam de reescrever tudo em Ruby, porque a única coisa que eles estão à vontade é o próprio Ruby.

substantivo
fonte
26
Rubists gostam de reescrever - hehe, dê uma olhada no pessoal do NodeJS implementando protocolos binários para MySQL em JS! :)
kolypto
37
Você não precisa do MacPorts para instalar o Ruby - o Ruby está incluído no OS X e o brew usa o sistema Ruby.
Michael Ekstrand
5
@ Michael Ekstrand OS X não inclui a última versão do Ruby.
noun
89
Não é possível votar isso. É muito sarcástico, e o sismo prejudica as informações.
OldPeculier
34
Voto a favor para combater as votações omitidas "anti-snarky". Qualquer informação recebida de um ser humano sempre terá um viés natural ("snarkiness" neste caso). Aprecio a perspectiva deste usuário, talvez especificamente porque a resposta não parece uma entrada da Wikipedia.
rinogo 23/03
109

Homebrew e macports resolvem o mesmo problema - que é a instalação de bibliotecas e utilitários comuns que não são fornecidos com o osx.

Normalmente, são bibliotecas relacionadas ao desenvolvimento e o uso mais comum dessas ferramentas é para desenvolvedores que trabalham no osx.

Ambos precisam das ferramentas de linha de comando xcode instaladas (que você pode baixar separadamente em https://developer.apple.com/ ) e, para alguns pacotes específicos, você precisará de todo o IDE xcode instalado.

O xcode pode ser instalado a partir da Mac App Store, é um download gratuito, mas demora um pouco desde que custa cerca de 5 GB (se bem me lembro).

macports é uma versão osx do utilitário de portas do BSD (como o osx é derivado do BSD, essa era uma escolha natural). Para qualquer pessoa familiarizada com qualquer uma das distribuições BSD, os macports se sentirão em casa.

Uma grande diferença entre homebrew e macports; e a razão pela qual prefiro o homebrew é que ele não substituirá as coisas que devem ser instaladas "nativamente" no osx. Isso significa que, se houver um pacote nativo disponível, o homebrew o notificará em vez de substituí-lo e causar problemas mais adiante. Também instala bibliotecas no espaço do usuário (assim, você não precisa usar o "sudo" para instalar as coisas). Isso ajuda a se livrar das bibliotecas também, pois tudo está em um caminho acessível para você.

O homebrew também possui uma comunidade de usuários mais ativa e seus pacotes (chamados de fórmulas) são atualizados com bastante frequência.


O macports não substitui os pacotes OSX nativos - ele fornece sua própria versão - Esse é o principal motivo pelo qual prefiro o macports ao home-brew, você precisa ter certeza do que está usando e a mudança da Apple em momentos diferentes das portas e é conhecida anos atrás de atualizações em alguns projetos

Você pode dar uma referência mostrando que os macports substituem pacotes nativos do OS X? Até onde eu sei, toda a instalação de macports acontece em /opt/local

Talvez eu deva esclarecer - não disse em parte alguma da minha resposta que o macports substitua os pacotes nativos do OSX. Ambos instalam itens separadamente.

O Homebrew avisa quando você deve instalar as coisas "nativamente" (usando o instalador preferido da biblioteca / ferramenta) para obter melhor compatibilidade. Foi isso que eu quis dizer. Ele também usará o número de bibliotecas locais disponíveis no OS X. No wiki :

Nós realmente não gostamos de bobagens em Homebrew / homebrew

No entanto, gostamos de burros na torneira!

O material que acompanha o OS X ou é uma biblioteca fornecida pelo RubyGems, CPAN ou PyPi não deve ser enganado. Há boas razões para isto:

  • Bibliotecas duplicadas interrompem regularmente compilações
  • Erros sutis surgem com bibliotecas duplicadas e, em menor grau, ferramentas duplicadas
  • Queremos que você se esforce mais para fazer sua fórmula funcionar com o que o OS X vem com

Opcionalmente, você pode sobrescrever as versões de utilitários fornecidas pela macosx com homebrew.

Burhan Khalid
fonte
78
O macports não substitui os pacotes OSX nativos - ele fornece sua própria versão - Esse é o principal rason. Prefiro o macports do que o home-brew. para ser ye3srs atrás de atualizações em alguns projetos
mmmmmm
13
Você pode dar uma referência mostrando que os macports substituem pacotes nativos do OS X? Tanto quanto eu posso dizer, toda a instalação MacPorts acontece em/opt/local
27
Você implicou pelo menos fortemente que o MacPorts substitui os pacotes OS X nativos. Em vez de "esclarecer" enquanto ainda finge que não disse que escreveu o que escreveu, você provavelmente deve editar a frase em questão.
Descontraído
13
Esta frase, "Uma grande diferença entre homebrew e macports; e a razão pela qual prefiro o homebrew é que ele não substituirá as coisas que devem ser instaladas" nativamente "no osx". deve ser alterado para "Uma grande diferença entre homebrew e macports; e a razão pela qual prefiro o homebrew é que o homebrew não instala automaticamente cópias paralelas de ferramentas e bibliotecas já fornecidas pela Apple".
bgupta
7
O MacPorts não substitui os aplicativos nativos, ele "confina o software portado a uma" caixa de areia "privada que evita que ele se misture com o sistema operacional e o software fornecido pelo fornecedor para evitar que sejam corrompidos". - Guia MacPorts, Capítulo 1
jla 12/01
23

Atualmente, o Macports possui muito mais pacotes (~ 18,6 K) do que as fórmulas Homebrew (~ 3,1K), devido à sua maturidade. Homebrew está lentamente alcançando embora.

Pacotes Macport tendem a ser mantidos por uma única pessoa.

Os Macports podem manter várias versões de pacotes e você pode habilitá-las ou desabilitá-las para testar as coisas. Às vezes, essa lista pode ser corrompida e você deve editá-la manualmente para colocar as coisas em ordem novamente, embora isso não seja muito difícil.

Os dois gerenciadores de pacotes solicitarão que sejam atualizados regularmente. Isso pode levar um tempo.

Nota: você pode ter os dois gerenciadores de pacotes no seu sistema! Não é um ou outro. Brew pode reclamar, mas Macports não.

Além disso, se você estiver lidando com pacotes python ou ruby, use um ambiente virtual sempre que possível.

user475443
fonte
1
{{{Às vezes, essa lista pode ser corrompida e você precisa editá-la manualmente para colocar as coisas em ordem novamente, embora isso não seja muito difícil. }}} Eu nunca vi isso acontecer, embora isso não signifique que não seja possível. Quais foram as circunstâncias? Você registrou um bug ( trac.macports.org )?
LSpice
{{{Os dois gerenciadores de pacotes solicitarão que sejam atualizados regularmente. Isso pode levar um tempo. }}} Parece uma afirmação estranha. Em vários anos de uso, lembro-me de atualizar o MacPorts algumas vezes e a atualização é bastante rápida. Você quer dizer que as próprias portas precisam ser atualizadas com frequência? Bem, eles podem ser, mas isso é uma coisa boa, não uma desvantagem, eu acho! Além disso, provavelmente vale a pena notar que MacPorts não pedirá para fazer nada - isto é, não há incômodo; você tem que perguntar -lo sobre os pacotes de out-of-date.
LSpice
18

Por padrão, o Homebrew instala pacotes no seu / usr / local. Os comandos do Macport exigem que o sudo seja instalado e atualizado (semelhante ao apt-get no Ubuntu).

Para mais detalhes:

Este site sugere o uso do Hombrew: http://deephill.com/macports-vs-homebrew/

considerando que este site lista as vantagens do uso de Macports: http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907

Também mudei do Ubuntu recentemente e gosto de usar o homebrew (é simples e fácil de usar!), Mas se você se sentir ligado ao uso do sudo, o Macports pode ser o melhor caminho a seguir!

debstep
fonte
4
Você está dizendo que o homebrew instala coisas /usr/localsem exigir o sudo?
1
@NgocPham Você tem uma referência para isso?
16
@ Keith Esse site está incorreto. Ou, pelo menos, está deixando de fora uma premissa importante. Ele diz "A Apple deixou este diretório para nós. O que significa que não há diretório / usr / local por padrão; portanto, não há necessidade de se preocupar com a bagunça das ferramentas existentes". A Apple não partiu /usr/localpara a Homebrew. A Apple partiu /usr/localpara "executáveis, bibliotecas, etc., não incluídos no sistema operacional básico". Isso significa que é possível que as ferramentas instaladas antes do uso do Homebrew tenham sido criadas para /usr/localque não possam ser modificadas sem sudo. Eles não discutem isso no wiki.
2
@NgocPham Meu argumento é que não acredito que o Homebrew possa usar /usr/localsem permissões de root. As permissões padrão para /usruma nova instalação do OS X são o proprietário raiz, sem permissões de gravação para mais ninguém. Para criar /usr/local , o Homebrew precisaria de acesso root. (Não estou tentando defender qualquer coisa)
5
@Articuno Acho que peguei você agora. É apenas a instrução que homebrewpode instalar as coisas sem, sudoporque, quando configurada, costumava sudo tornar a permissão no diretório mais frouxa, para que ele pudesse fazer qualquer coisa dentro /usr/localsem acionar a senha. Isso significa que a parte "instalar sem senha" está errada? Acho que não! Ainda é verdade que homebrew será possível obter coisas sem a senha.
Ngoc Pham