È sicuro installare sia Homebrew che Macports sullo stesso computer?


73

Ho MacPorts installato sul mio iMac con un buon numero di porte installate.

Sono interessato a provare Homebrew, tuttavia, poiché ho sentito molte cose positive al riguardo e perché ho notato che contiene versioni più aggiornate di molti degli strumenti che utilizzo.

Ma i due possono coesistere sullo stesso computer o devo prima disinstallare MacPorts?

Inoltre, se i due possono essere installati contemporaneamente, saranno completamente indipendenti l'uno dall'altro? Una delle funzionalità di Homebrew è che non reinstalla nuove versioni di cose che sono già incluse nel sistema (ad esempio python). Ciò si estende anche al fatto che non installa versioni di cose che sono già gestite da MacPorts?

Cosa succede se successivamente disinstallo MacPorts?

Risposte:


24

Non coesisteranno bene insieme. Il gcc di Apple cerca in / usr / local per alcune cose. Ciò significa che una compilazione di macports potrebbe trovare qualcosa che il portiere non si aspettava. Vedi gli elenchi di posta elettronica e i bug di macports per esempi di cose trovate in / usr / local.


4
Ho avuto solo una rapida occhiata a homebrew, ma se cambiassi il percorso di installazione predefinito per homebrew da / usr / local a qualcosa come / opt / homebrew / usr / local, questo problema sarebbe evitato?
Babu,

@Babu - Secondo la birra, dovresti procedere con cautela
Peter Ajtai,

@babu - forse ma ci saranno problemi con cui homebrew o macport sono in primo piano nel percorso e l'altro che prende questi eseguibili anche io sospetto che le porte di entrambi i sistemi non siano completamente testate usando un altro percorso
user151019

18

Ho dato un'altra risposta su una domanda simile:

Homebrew causerà problemi durante la creazione di software dal sorgente se installato in / usr / local. Questa è l'impostazione predefinita, che è una cattiva scelta in quanto questo percorso si trova nel percorso di ricerca predefinito dei compilatori e di altri strumenti. Pertanto build da altri software di packaging potrebbero rilevare la dipendenza sbagliata, utilizzando la versione di Homebrew anziché la propria.

Anni fa, all'inizio del progetto, anche MacPorts utilizzava / usr / local. Ma si è scoperto che non collabora con altri strumenti, come documentato nelle loro FAQ. Sfortunatamente gli sviluppatori di Homebrew non volevano conoscere esperienze precedenti e hanno ignorato tali fatti ...

In generale, di solito è meglio attenersi a un solo strumento per evitare tutti i problemi. MacPorts sta facendo del suo meglio per correggere eventuali percorsi codificati, ad esempio verso / sw che viene utilizzato da Fink. Quindi di solito funzionerà, ma avere qualsiasi cosa installata in / usr / local causerà sicuramente dei problemi.

[...]


Sembra che sia anche possibile installare homebrew in ~/.homebrew. Interferirebbe comunque con MacPorts se invece fosse installato lì?
Behrang

Qualsiasi posizione diversa da / usr / local dovrebbe essere a posto.
Raimue

MacPort e Homebrew coesisteranno bene se si installasse Homebrew su / opt / local, dove è installato MacPort?
Adam LS,

1
Non dovresti installare altri software manualmente in / opt / local quando MacPorts è già installato lì. Interferirà sicuramente quando si posizionano file sconosciuti a MacPorts, causando conflitti durante l'installazione delle porte.
Raimue

8

Pensavo che le preoccupazioni su ciò che faranno gli strumenti di costruzione di Gnu /usr/localerano quasi paranoiche. Gli strumenti di compilazione prevedono che ci siano molte cose lì: nei bei vecchi tempi prima che i gestori dei pacchetti (scherzo), abbiamo compilato qualunque cosa /usr/local. Ma mentre Autoconf di solito risolve i problemi, la semplice complessità costruttiva di molti progetti open source causa problemi e questi problemi possono essere difficili da eliminare quando si incontrano difficoltà.

Ma il rischio di problemi con la ricerca automatica di qualcosa che non dovrebbe essere /usr/localnecessario deve essere bilanciato dal fastidio di manutenzione con due, tre o quattro diverse copie diverse di Perl, Tcl e Ruby, ognuna con una diversa copertura delle diverse librerie di pacchetti. Sgradevole.

Dato che la mia esperienza con MacPorts e Fink è stata in genere esasperazione causata proprio da questo, e ad un certo punto sono passato alla compilazione del vecchio stile /usr/local, sono stato contento di vedere che Homebrew non ci ha fatto nulla. Ho provato a configurare MacPorts per l'installazione /usr/local, ma MacPorts fa di tutto per renderlo difficile. Comprendo che la motivazione è quella di rendere la vita più facile per se stessi quando trattano le grida di aiuto sulla loro mailing list e bug tracker: tieni presente, tuttavia, che mentre dovremmo rispettare lo sforzo dei volontari e considerare il loro tempo prezioso, il loro la comodità del debug non è l'unico tipo di semplicità che ti riguarda, come utente.

L'homebrew, almeno in questo senso, fa le cose come una volta, e MacPorts cerca di non interferire. Se sei disposto a documentare i pacchetti di cui hai bisogno con Homebrew e cancellare / usr / local clean e reinstallare in caso di difficoltà, puoi sempre tornare indietro nel caso in cui le cose vadano male. E una volta che ti rendi conto che i problemi in / usr / local non comportano generalmente il rischio di danni permanenti alle tue macchine, potresti sentirti più libero di correre dei rischi.

Noterò solo quanto peggio sia il packaging su OSX di FreeBSD: Apple non sembra davvero preoccuparsi dell'usabilità del suo sottosistema BSD, perché questo è un problema con cui potrebbero aiutare.


Bene, la mia domanda viene posta dal punto di vista di un utente stupido che sta semplicemente usando il gestore pacchetti per "ottenere cose". Non è affatto certo che sarei in grado di "capire un po '[il mio] io se le cose vanno male". Comunque, vota comunque per ulteriori chiarimenti. Grazie!
Ricco il

1
MacPorts come buoni motivi per non usare / usr / local, vedi trac.macports.org/wiki/FAQ#defaultprefix
raimue

3
@Raim: Buone ragioni per loro - è praticamente un compromesso tra la loro praticità di tracciamento dei bug e la semplicità dell'installazione sul computer dell'utente. Mi interessa quest'ultimo.
Charles Stewart,

1
Il numero di cose che possono andare storte perché qualcuno (o qualcosa) ha installato una copia di $ lib in /usr/localè infinito. Architetture, versioni, funzionalità e flag configurati, installazioni parziali, installazioni obsolete con problemi di sicurezza e e e causeranno problemi. Certo, vai avanti se sai cosa stai facendo, ma non archiviare bug a riguardo. L'esperienza dimostra che le persone archiviano comunque i bug e questo è esattamente il motivo per cui -tesiste la modalità di traccia ( , vedi sotto) e perché evitare /usr/localè la raccomandazione di default.
Neverpanic,

@neverpanic - La mia opinione sui rischi della compilazione di tutto in / usr / local è cambiata da quando ho scritto questa risposta, principalmente perché la complessità della creazione di progetti open-source tipici va sempre più in alto e i problemi di autoconfigurazione non stanno diventando più facili da risolvere: almeno, "rasentare il paranoico" è ingiusto. Tuttavia, non mi piace ancora l'approccio del "proprio universo di costruzione privato" di Macports e merita di sottolineare che la semplicità delle interazioni tra mailing list non è l'unico tipo di semplicità di cui l'utente finale dovrebbe preoccuparsi. Aggiungerò avvertimenti alla mia risposta.
Charles Stewart,

6

Secondo le FAQ di MacPorts :

Nota che a partire dalla 2.3.0, MacPorts può nascondere automaticamente / usr / local (e tutti gli altri file da cui una porta non dipende) dai sistemi di compilazione delle porte. Questa funzione si chiama modalità trace e si attiva fornendo il flag -t alla porta, ad es

sudo port -t install <portname>

Questo è rilevante perché secondo la Pagina di installazione di Homebrew:

Uno dei motivi per cui Homebrew funziona solo rispetto alla concorrenza è perché raccomandiamo l'installazione su / usr / local. Scegli un altro prefisso a tuo rischio e pericolo!

Pertanto, e con poca esperienza personale, teorizzo che l'utilizzo sempre del flag -t per le installazioni di MacPort dovrebbe prevenire la maggior parte dei problemi di convivenza tra MacPorts e Homebrew sullo stesso sistema. Per rispondere alla tua ultima domanda: non vedo alcun motivo per cui disinstallare MacPorts potrebbe causare problemi.


Tieni presente che soffrirai di una penalità di prestazione significativa. Ma in generale, questo dovrebbe funzionare in quasi tutti i casi.
Neverpanic,

Grazie per aver sottolineato questo avvertimento @neverpanic. Presumo che la penalità prestazionale influisca solo sul tempo di installazione della porta e non abbia alcun effetto sulle caratteristiche di runtime della porta installata. Vero?
webappzero,

Corretta. Previene solo i problemi di build-time, non di run-time (ma quelli sono molto rari).
Neverpanic

In pratica, non sono riuscito a ricordare questo requisito di utilizzare sempre il flag di traccia. Pertanto, non raccomando questa pratica ad altri a meno che tu non sia sicuro di usare coerentemente -t.
webappzero,

Se non vuoi ricordarlo, potresti scrivere uno script wrapper o un alias di shell (ma fai attenzione all'interazione tra sudo e alias di shell) per passarlo sempre per te. Si noti che El Capitan attualmente interrompe la modalità di tracciamento. Sto lavorando a una soluzione alternativa.
Neverpanic,

4

Durante l'installazione di homebrew su un computer in cui utilizzo le porte da anni, ecco cosa posso leggere:

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

Stai attento!


1

La sudo port -t ...soluzione di webappzero dovrebbe aiutare. Ad essere sincero, corro con Fink, MacPorts e Homebrew tutti in una volta, con rispetto per MacPorts (per ora comunque) e usando solo uno degli altri due per installare cose che non riesco a ottenere da MacPorts. Ho incontrato pochissime difficoltà in questo modo, anche prima di imparare il port -ttrucco. Se stai cercando di utilizzare più gestori di pacchetti per mantenere complessi ambienti di sviluppo e server, tuttavia, probabilmente sei in un mondo per il disagio almeno. Scegline uno ed evita gli altri, ma per qualcosa di cui hai disperatamente bisogno da loro, e metti quello principale all'inizio del percorso.

Se ciò che sto ascoltando è vero su Apple che proibirà di installare cose in / usr / diverse da quelle di Apple (o forse lo stanno già facendo in El Crapitan, a cui sto evitando di salire di livello fino a dopo i problemi con esso vengono risolti), suppongo che mitigherà il problema dopo che Homebrew ha usato per impostazione predefinita qualcos'altro, indipendentemente dal fatto che siamo d'accordo con l'approccio pesante di Apple o meno.

Alla fine, mi piace l'idea di limitare le porte di Apple al proprio albero, vorrei solo che non fosse / usr /. Preferirei che avessero usato / System / bin /, ecc., Ecc., Per isolare le proprie cose, in modo da poterle bypassare con un software aggiornato gestito dalla comunità più facilmente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.