¿Obligar a Homebrew y Macports a coexistir?

10

Tengo un sistema MacOSX que he estado usando durante varios años, y durante este tiempo, he instalado bastantes paquetes a través de Macports.

Ahora quiero probar Homebrew, pero de lo que he leído aquí y en otros lugares está claro que las instalaciones predeterminadas de Homebrew y Macports no pueden coexistir fácilmente.

No es una opción viable para mí desinstalar Macports, ya que gran parte de mi trabajo diario con MacOSX implica el uso de varias utilidades instaladas en Macports. Además, muchas de mis propias utilidades locales ahora son interdependientes con Macports. Y finalmente, una gran cantidad de ejecutables y bibliotecas compartidas que uso habitualmente ahora están instaladas en / usr / local, y mi sistema quedaría rápidamente inutilizable si borraba ese árbol de directorios.

Entonces mi pregunta es esta: ¿alguien ha encontrado una forma alternativa de instalar Homebrew que pueda coexistir con Macports? Específicamente, ¿alguien ha descubierto cómo hacer que Homebrew utilice un árbol de directorios como / usr / local / homebrew en lugar de / usr / local?

Gracias de antemano por cualquier sugerencia o puntero a los documentos.

HippoMan
fuente
Si solo quieres probar, ¿por qué no configurar una máquina virtual OS X? No está en contra de los TOS de Apple para OS X 10.7 y puedes experimentar con lo que quieras allí. Incluso si funciona usar ambos en paralelo, no me sorprendería si las cosas comenzaran a romperse ...
Daniel Beck
Muchas gracias, pero prefiero que los dos gestores de paquetes se ejecuten en el mismo entorno OSX, si hay alguna forma de hacerlo. Esto se debe a que si me gusta Homebrew, querré instalar gradualmente paquetes a través de ese sistema y desinstalar gradualmente los paquetes antiguos basados ​​en Macports. Desafortunadamente, no es una alternativa viable para mí decidir sobre Homebrew, eliminar todo mi código heredado de Macports de una sola vez, y luego luchar para reemplazarlo todo en otra caída a través de Homebrew.
HippoMan

Respuestas:

2

Puede decirle a Homebrew que use su propio directorio y luego agregarlo a la ruta. Aunque no es para el mismo propósito, este extracto de la guía de instalación lo dice:

Instalaciones múltiples

Cree una instalación Homebrew donde extraiga el tarball. Cualquiera que sea el comando de preparación se llama donde se instalarán los paquetes. Puede usar esto como mejor le parezca, por ejemplo, un conjunto de libs del sistema en / usr / local y fórmulas ajustadas para el desarrollo en ~ / homebrew

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

Karolos
fuente
Gracias Karolos No me alienta la siguiente declaración en la misma página wiki: "Sin embargo, hazte un favor e instálalo en / usr / local ... ¡ Elige otro prefijo bajo tu propio riesgo! " Pero lo intentaré e informaré luego.
HippoMan
He intentado instalar homebrew en / usr / local / homebrew. Sin embargo, algunos paquetes que intento instalar están fallando. Cuando ejecuto / usr / local / homebrew / bin / brew doctor , obtengo referencias a literalmente docenas de dylibs inesperados, bibliotecas estáticas, archivos .pc y archivos .la, además de advertencias sobre ciertos paquetes que requieren una instalación / usr / local. Dado que mi sistema no se ejecutará en absoluto si elimino mis instalaciones de software heredadas (que es de donde provienen la mayoría de esos archivos "inesperados"), parece que no hay forma de que use homebrew en mi sistema. Oh bueno ... (suspiro) ...
HippoMan
@HippoMan: Lamento que no funcione. Sin embargo, una pregunta: ¿está / usr / local / homebrew configurado correctamente en sus rutas? es decir, RUTA y (DY) LD_LIBRARY_PATH
Karolos
@HippoMan: ¿Qué paquetes están fallando? Acabo de intentar instalar un par de ellos y no vi ningún problema (después de editar / etc / caminos para agregar / usr / local / homebrew / bin).
Karolos
Sí, tengo PATH y LD_LIBRARY_PATH configurados correctamente para apuntar a bin y lib bajo el árbol / usr / local / homebrew. Uno de los paquetes que falló es gawk, que es un requisito previo para avidemux. Pero reiniciaré desde cero y lo intentaré una vez más, en caso de que haya cometido algún tipo de error.
HippoMan
1

Mi forma de obligarlos a coexistir es hacer que los MacPorts no sean visibles de forma predeterminada, pero sí visibles al invocar cualquier programa MacPorts. Es decir, envuelva los programas MacPorts con algún script como:

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 nombra este script como macports.sh, puede hacer el ajuste macports.sh macports_bin, tal como macports.sh portejecutará el portajuste.

Para mayor comodidad, se puede poner macports.sh somethingen algunas secuencias de comandos con el mismo nombre que los propios comandos y ponerlos en su directorio personal, tales como ~/bin, ~/.local/bin, etc.

Escribí una publicación de blog sobre esto hace un mes. Puede leerlo si necesita ver los detalles.

xuhdev
fuente