2014-10-16 10 views
43

Quando eseguo brew doctor, il seguente errore viene generatoBrew doctor - "avviso: i file header non funzionanti sono stati trovati in/usr/local/include"?

Warning: Unbrewed header files were found in /usr/local/include. 
If you didn't put them there on purpose they could cause problems when 
building Homebrew formulae, and may need to be deleted. 

Unexpected header files: 
    /usr/local/include/curl/curl.h 
    /usr/local/include/curl/curlbuild.h 
    /usr/local/include/curl/curlrules.h 
    /usr/local/include/curl/curlver.h 
    /usr/local/include/curl/easy.h 
    /usr/local/include/curl/mprintf.h 
    /usr/local/include/curl/multi.h 
    /usr/local/include/curl/stdcheaders.h 
    /usr/local/include/curl/typecheck-gcc.h 
    /usr/local/include/node/ares.h 
    /usr/local/include/node/ares_version.h 
    /usr/local/include/node/nameser.h 
    /usr/local/include/node/node.h 
    /usr/local/include/node/node_buffer.h 
    /usr/local/include/node/node_internals.h 
    /usr/local/include/node/node_object_wrap.h 
    /usr/local/include/node/node_version.h 
    /usr/local/include/node/openssl/opensslconf.h 
    /usr/local/include/node/uv-private/ngx-queue.h 
    /usr/local/include/node/uv-private/stdint-msvc2008.h 
    /usr/local/include/node/uv-private/tree.h 
    /usr/local/include/node/uv-private/uv-bsd.h 
    /usr/local/include/node/uv-private/uv-darwin.h 
    /usr/local/include/node/uv-private/uv-linux.h 
    /usr/local/include/node/uv-private/uv-sunos.h 
    /usr/local/include/node/uv-private/uv-unix.h 
    /usr/local/include/node/uv-private/uv-win.h 
    /usr/local/include/node/uv.h 
    /usr/local/include/node/v8-debug.h 
    /usr/local/include/node/v8-preparser.h 
    /usr/local/include/node/v8-profiler.h 
    /usr/local/include/node/v8-testing.h 
    /usr/local/include/node/v8.h 
    /usr/local/include/node/v8stdint.h 
    /usr/local/include/node/zconf.h 
    /usr/local/include/node/zlib.h 

sarebbe sicuro per eliminare questi file? Qual è il modo ottimale per risolvere questo avviso?

risposta

44

Sembra che tu abbia installato arricciatura e nodejs senza usare homebrew.

si hanno due opzioni:

  1. fare altro che ricordare questo per sempre, in modo che non si pensa che siano da homebrew e si chiedono perché homebrew si lamenta.
  2. Rimuoverli e installare nodejs e arricciare da homebrew.

1 è il modo semplice, finché non lo è.

Raccomando # 2 perché è probabile che in futuro verrà installato qualcosa da homebrew che dipende da arricciatura e/o nodo e homebrew tenterà di installare tali dipendenze. Quando si costruisce dalla fonte, le intestazioni errate possono essere utilizzate e le librerie non corrispondenti vengono collegate. Non è divertente eseguire il debug.

Se questi file di intestazione homebrew sono lì per un motivo e si sta compilando il software con loro, probabilmente si è in grado di reinserirli se necessario. Se non stai costruendo software con loro, allora non ne hai bisogno. Vai avanti e cancellali per ora.

+0

Recentemente ho ottenuto in via di sviluppo con NodeJS, che ho installato tramite il pacchetto binario sul sito nodejs.org. Non ricordo di aver istallato esplicitamente Curl, ma sarebbe stato utile averlo. Se disinstallo il mio nodojs e lo reinstallo tramite Homebrew, si interromperà qualcosa o sarà uno scambio pulito? – Prefix

+0

* dovrebbe * funzionare. Provalo. Se non funziona, puoi copiare queste intestazioni o reinstallare il pacchetto binario. Se aiuta, posso confermare di avere un nodo da homebrew e quelle intestazioni sono lì. Non ho arricciatura da homebrew o quelle intestazioni di arricciatura. – jrwren

+0

Penso che il problema sia che ho aggiornato l'arricciatura con i binari fuori dalla homepage dell'arricciatura, e ha inserito queste intestazioni qui. C'è un modo per dire a Brew di ignorarli?Ho provato ad installare curl tramite homebrew, ma non riesco a impostare il brew curl come arricciatura "predefinita", le modifiche al percorso non hanno avuto effetto, – Prefix

2

Potrebbe essere sicuro lasciare quei file in posizione a meno che non si riscontrino problemi di build o di collegamento con altre formule Homebrew; L'output brew doctor è di tipo consultivo, non normativo.

Se non si ritiene che si abbia un motivo per costruire contro le versioni di curl o nodo in/usr/local, è possibile rimuovere tali file di intestazione; puoi sempre reinstallare la versione più recente in seguito con Homebrew.

0

Ho avuto lo stesso problema e questa è la risposta a un amministratore ha postato sul repo Homebrew ufficiale su GitHub: "E 'OK per ignorare che se non si hanno problemi di installare il software con Homebrew medico birra è uno strumento di debug per noi. per facilitare il debug in caso di problemi. "

Link: https://github.com/Homebrew/homebrew/issues/32655

-4

This solution ha funzionato per me!

sbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do sudo rm /usr/local/${f}; done 

sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* 
+0

Trovo questa soluzione molto spaventosa. Ho fatto un commento elaborando ma non avevo notato che questa soluzione è stata copiata da una risposta a un'altra domanda, quindi ho spostato il mio commento lì. –

2

si può saltare il randagi controlli di intestazione per rendere più facile per vedere se ci sono problemi diversi dal nodo/NPM non giocare bene con homebrew

brew doctor `brew doctor --list-checks | grep -v stray_headers` 
+0

Bello, grazie! Ho usato una versione che ignora anche i dylibs e le librerie statiche inaspettate, non solo include: 'brew doctor $ (brew doctor --list-checks | grep -vE 'check_for_stray_ (dylibs | static_libs | headers)')' – waldyrious

Problemi correlati