2012-06-23 13 views
9

He buscado un poco y parece que no se puede encontrar ningún registro de otra persona con este problema.Error OSX Homebrew: constante no inicializada MACOS

siempre que intente ejecutar

$ brew update 

soy recompensado con

/usr/local/bin/brew:34: uninitialized constant MACOS (NameError) 

Ésta no es mi máquina y que normalmente se desarrollan en sistemas Linux por lo que todo esto es un poco extraño para mí.

Cualquier ayuda sería muy apreciada! Por favor dígame si hay alguna información adicional que debo proporcionar. Nuevamente, no estoy acostumbrado a homebrew u OSX.

EDITAR a petición del jamea

xiao:~ patrick$ brew doctor 
/usr/local/bin/brew:34: uninitialized constant MACOS (NameError) 
xiao:~ patrick$ brew --config 
/usr/local/bin/brew:34: uninitialized constant MACOS (NameError) 

... No estoy seguro de que me gusta de este conjunto "aquí, utilice este macbook para el proyecto, que funciona mejor" cosa ...

+0

¿Qué hay en la línea 34 de ese archivo (/ usr/local/bin/brew)? Mi línea 34 no tiene el MACOS constante, pero tiene MACOS_VERSION. Pero de todos modos, mirar el código ayudaría a saber qué está pasando. – nickgroenke

+0

¿Qué te dice "qué cerveza"? – Usman

+0

@ user1087981 '34, si MacOS y MACOS_VERSION <10.5' @Usman ' $, que brew' '/ usr/local/bin/brew' – pdel

Respuesta

3

La constante MACOS se establece en globals.rb. Parece que puedes tener una instalación de Borked de Homebrew.

Compruebe la salida de brew doctor para cualquier sugerencia.

Si eso no ayuda, actualice con los resultados de brew --config.

Si todo lo demás falla, puede intentar volver a instalar Homebrew.


ACTUALIZACIÓN:

Como se trataba de la máquina de un usuario anterior asegúrese de que el usuario es el propietario de /usr/local y todo dentro. Solucionarlo con sudo chown -R $USER /usr/local.

+0

Actualizado el problema con los resultados. Me inclino por la instalación de borked, sin embargo, este era el sistema de desarrollo de otra persona antes de que lo obtuviera y todavía tengo cuentas y software del último proyecto. Necesito hablar con mi jefe para que me deje hacer una nueva instalación. Sé con certeza que algunas cosas no funcionan, se bloquea cuando intentas actualizar el sistema. – pdel

1

Tuve un error similar con una instalación de brebaje "borked". Quité el pequeño bloque de 5 líneas de código en la secuencia de comandos/usr/local/bin/brew comenzando con la línea MACOS. Eso hizo el truco para permitirme desinstalar y eventualmente reinstalarlo.

10

Estoy bastante seguro de que la causa raíz de esto es un intento fallido de actualización de Homebrew 0.9.5 de una versión mucho más antigua. Básicamente, si ejecuta brew update en comparación con sudo brew update, una parte de los archivos se actualizan, mientras que otros no. Esto es lo que funcionó para mí:

  1. Editar /usr/local/bin/brew (es sólo un archivo de Ruby, no un binario compilado, por lo que cualquier editor de texto puede servir). Encontrará un bloque como:

    if MACOS and MACOS_VERSION < 10.5 
        abort <<-EOABORT.undent 
        Homebrew requires Leopard or higher. For Tiger support, see: 
        https://github.com/mistydemeo/tigerbrew 
        EOABORT 
    end 
    

    Comenta esto. Incluso si no conoce a Ruby, probablemente pueda intuir lo que está haciendo; está comprobando si tiene una versión actual de OSX. Asumiendo que haga de hecho tenga esta versión, esta verificación de cordura no es necesaria. Brew aún está roto, pero al menos ahora se cargará lo suficiente como para dar mensajes de error.

  2. Run sudo brew update, alerón alerta: se produce un error, pero esta vez con un mensaje de error significativo:

    $ brew update 
    error: Your local changes to the following files would be overwritten by merge: 
    [giant list of files here] 
    

    Pues bien, hoy he aprendido que brew update es sólo un envoltorio para git pull ya que cualquiera que ha trabajado con git sabe ese mensaje de error. Podemos arreglar esto también

  3. Cambie al repositorio de git homebrew con cd /usr/local y proporcione el comando git reset --hard FETCH_HEAD. This piece found here.

  4. Dé el comando sudo brew update. ¡Homebrew ahora debería actualizarse con éxito y funcionar correctamente!

Una vez que el sistema está funcionando de nuevo, de hecho se puede ver por qué habría ocurrido un error como este. Por un lado, usr/local/bin/brew ha sido completely rewriten y no es incluso Rubí más, y la mayor parte de su configuración se ha movido en /usr/local/Library/brew.rb que ya no utiliza las constantes de MACOS o MACOS_VERSION constantes, ya que han sido sustituidos por el más orientado a objetos OS.mac y MacOS.version.

+2

¡Gran respuesta, muchas gracias! – lxt

Cuestiones relacionadas