Forcer Homebrew et Macports à coexister?

10

J'ai un système MacOSX que j'utilise depuis un certain nombre d'années, et pendant ce temps, j'ai installé pas mal de packages via Macports.

Je veux maintenant essayer Homebrew, mais il ressort clairement de ce que j'ai lu ici et ailleurs que les installations par défaut de Homebrew et Macports ne peuvent pas facilement coexister.

Ce n'est pas une option viable pour moi de désinstaller Macports, car une grande partie de mon travail quotidien sur MacOSX implique l'utilisation de divers utilitaires installés sur Macports. En outre, bon nombre de mes propres utilitaires locaux sont désormais interdépendants avec Macports. Et enfin, beaucoup d'exécutables et de bibliothèques partagées que j'utilise régulièrement sont maintenant installés sous / usr / local, et mon système deviendrait rapidement inutilisable si je supprimais cette arborescence de répertoires.

Ma question est donc la suivante: quelqu'un a-t-il trouvé une autre façon d'installer Homebrew qui peut coexister avec Macports? Plus précisément, quelqu'un a-t-il compris comment faire en sorte que Homebrew utilise une arborescence de répertoires telle que / usr / local / homebrew au lieu de / usr / local?

Merci d'avance pour toutes suggestions ou pointeurs vers des documents.

HippoMan
la source
Si vous voulez juste essayer, pourquoi ne pas configurer une machine virtuelle OS X? Ce n'est pas contre le TOS d'Apple pour OS X 10.7 et vous pouvez expérimenter avec tout ce que vous voulez là-bas. Même si cela fonctionne pour utiliser les deux en parallèle, je ne serais pas surpris si les choses commençaient à se casser ...
Daniel Beck
Merci beaucoup, mais je préfère que les deux gestionnaires de packages s'exécutent dans le même environnement OSX, s'il existe un moyen de le faire. En effet, si j'aime Homebrew, je voudrai ensuite installer progressivement les packages via ce système et désinstaller progressivement les anciens packages basés sur Macports. Malheureusement, ce n'est pas une alternative viable pour moi de décider de Homebrew, de souffler tout mon code Macports hérité d'un seul coup, puis de lutter pour tout remplacer dans un autre coup de grâce via Homebrew.
HippoMan

Réponses:

2

Vous pouvez dire à Homebrew d'utiliser son propre répertoire, puis l'ajouter au chemin. Bien que n'étant pas dans le même but, cet extrait du guide d'installation le dit:

Installations multiples

Créez une installation Homebrew partout où vous extrayez l'archive tar. Quelle que soit la commande brew appelée, c'est là que les packages seront installés. Vous pouvez l'utiliser comme bon vous semble, par exemple un ensemble système de bibliothèques dans / usr / local et des formules modifiées pour le développement dans ~ / homebrew

Source: https://github.com/mxcl/homebrew/wiki/installation

Karolos
la source
Merci Karolos. Je ne suis pas encouragé par la déclaration suivante sur cette même page wiki: "Cependant, faites-vous une faveur et installez-le dans / usr / local ... Choisissez un autre préfixe à vos risques et périls! " Mais je vais essayer ceci et faire un rapport plus tard.
HippoMan
J'ai essayé d'installer homebrew dans / usr / local / homebrew. Cependant, un certain nombre de packages que j'essaie d'installer échouent. Lorsque j'exécute / usr / local / homebrew / bin / brew doctor , j'obtiens des références à des dizaines de dylibs inattendus, des bibliothèques statiques, des fichiers .pc et des fichiers .la, ainsi que des avertissements concernant certains packages nécessitant une installation / usr / local. Étant donné que mon système ne fonctionnera pas du tout si je supprime mes installations de logiciels hérités (d'où proviennent la plupart de ces fichiers "inattendus"), il semble qu'il n'y ait aucun moyen pour moi d'utiliser homebrew sur mon système. Eh bien ... (soupir) ...
HippoMan
@HippoMan: Désolé que cela ne fonctionne pas. Une question cependant: est / usr / local / homebrew correctement configuré dans vos chemins? ie PATH et (DY) LD_LIBRARY_PATH
Karolos
@HippoMan: Quels packages échouent? J'ai juste essayé d'en installer quelques-uns et je n'ai vu aucun problème (après avoir édité / etc / chemins pour ajouter / usr / local / homebrew / bin).
Karolos
Oui, PATH et LD_LIBRARY_PATH sont correctement configurés pour pointer vers bin et lib sous l'arborescence / usr / local / homebrew. Un des paquets qui a échoué est gawk, qui est une condition préalable pour avidemux. Mais je vais recommencer à zéro et réessayer une fois de plus, au cas où j'aurais commis une erreur.
HippoMan
1

Ma façon de les forcer à coexister est de rendre les MacPorts non visibles par défaut, mais visibles lors de l'appel des programmes MacPorts. Autrement dit, enveloppez les programmes MacPorts avec un script comme:

if [ "$#" -le 0 ]; then
  echo "Usage: $0 command [arg1, arg2, ...]" >&2
  exit 1
fi
if [[ -z $MACPORTS_PREFIX ]]; then
  MACPORTS_PREFIX='/opt/local'
fi
export PATH="$MACPORTS_PREFIX/bin:$MACPORTS_PREFIX/sbin:$PATH"
export DYLD_LIBRARY_PATH="$MACPORTS_PREFIX/lib:$DYLD_LIBRARY_PATH"
export CPATH="$MACPORTS_PREFIX/include:$CPATH"
command=$1
shift
exec $command $* 

Si vous nommez ce script en tant que macports.sh, vous pouvez effectuer le wrapping par macports.sh macports_bin, tel que macports.sh ports'exécutera portwrapped.

Pour plus de commodité, vous pouvez mettre macports.sh somethingdans certains scripts avec le même nom que les commandes eux - mêmes et les mettre dans votre répertoire, tels que ~/bin, ~/.local/bin, etc.

J'ai écrit un article à ce sujet il y a un mois. Vous pouvez le lire si vous avez besoin de regarder les détails.

xuhdev
la source