Braudoktor - "Warnung: Ungebraute Header-Dateien wurden in / usr / local / include gefunden"?

77

Beim Ausführen brew doctorwird der folgende Fehler ausgegeben

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

Wäre es sicher, diese Dateien zu löschen? Was ist der optimale Weg, um diese Warnung zu beheben?

T_Conroy
quelle

Antworten:

78

Es sieht so aus, als hätten Sie Curl und NodeJS ohne Homebrew installiert.

Sie haben zwei Möglichkeiten:

  1. Tun Sie nichts anderes, als sich für immer daran zu erinnern, damit Sie nicht glauben, dass sie von Homebrew stammen, und sich fragen, warum Homebrew sich beschwert.
  2. Entfernen Sie sie und installieren Sie nodejs und locken Sie sich vom Homebrew.

1 ist der einfache Weg, bis es nicht mehr ist.

Ich empfehle # 2, da es wahrscheinlich ist, dass Sie in Zukunft etwas von Homebrew installieren werden, das von Curl und / oder Node abhängt, und Homebrew wird versuchen, diese Abhängigkeiten zu installieren. Beim Erstellen aus dem Quellcode werden möglicherweise falsche Header verwendet und nicht übereinstimmende Bibliotheken werden verknüpft. Das Debuggen macht keinen Spaß.

Wenn diese Nicht-Homebrew-Header-Dateien aus einem bestimmten Grund vorhanden sind und Sie Software mit ihnen kompilieren, können Sie sie wahrscheinlich zurücksetzen, wenn Sie sie benötigen. Wenn Sie keine Software mit ihnen erstellen, brauchen Sie sie nicht. Gehen Sie voran und löschen Sie sie vorerst.

jrwren
quelle
Ich habe kürzlich angefangen, mit NodeJS zu entwickeln, das ich über die gepackte Binärdatei auf der Website nodejs.org installiert habe. Ich erinnere mich nicht daran, Curl explizit installiert zu haben, aber es wäre nützlich, es zu haben. Wenn ich meine nodejs deinstalliere und sie über Homebrew neu installiere, wird das irgendetwas kaputt machen oder wird es ein sauberer Swap sein?
T_Conroy
Es sollte funktionieren. Versuch es. Wenn es nicht funktioniert, können Sie diese Header zurückkopieren oder die gepackte Binärdatei neu installieren. Wenn es hilft, kann ich bestätigen, dass ich einen Knoten von Homebrew habe und diese Header vorhanden sind. Ich habe keine Locken von Homebrew oder diese Locken-Header.
jrwren
Ich denke, das Problem ist, dass ich Curl mit den Binärdateien von der Curl-Homepage aktualisiert habe und diese Header hier platziert habe. Gibt es eine Möglichkeit, Brew anzuweisen, sie zu ignorieren? Ich habe stattdessen versucht, Curl über Homebrew zu installieren, aber ich kann die Brew Curl anscheinend nicht als "Standard"
-Curl festlegen. Pfadänderungen
@Prefix Es gibt keine Möglichkeit, Homebrew anzuweisen, sie zu ignorieren. Wenn Sie nicht mit diesen Curl-Headern kompilieren, können Sie sie sicher entfernen. Sie können Brew Curl als Standard festlegen, indem Sie sicherstellen, dass sich / usr / local / bin vor / usr / bin in Ihrem Pfad befindet. Siehe stackoverflow.com/a/10343891/16998
jrwren
1
@Prefix hat sich der Brauarzt jemals über /usr/local/lib/libcurl.4.dylib beschwert? Ich vermute, dass es aus dem Curl-Homepage-Binärpaket übrig bleibt. ls -l /usr/local/lib/libcurl.4.dylib sollte zeigen, dass es sich um einen Symlink handelt. Wenn es sich nicht um einen Symlink handelt, stammt er wahrscheinlich aus dem Curl-Homepage-Paket. Wenn es sich um einen Symlink handelt, stimmt etwas mit diesem Paket nicht. Schauen Sie sich auch die Ausgabe von an otool -L /usr/local/bin/curl. Es sollte libcurl.4.dylib aus Cellar / curl ... verknüpfen, nicht aus / usr / local / lib. Versuchen Sie, die Verknüpfung zu lösen. rm / usr / local / bin / curl; Brew Link - Force Curl.
jrwren
6

Sie können die Streukopfprüfungen überspringen, um leichter erkennen zu können, ob es andere Probleme als node / npm gibt, die mit Homebrew nicht gut funktionieren

brew doctor `brew doctor --list-checks | grep -v stray_headers`
Testbenutzer
quelle
Nett, danke! Ich habe eine Version verwendet, die auch unerwartete Dylibs und statische Bibliotheken ignoriert und nicht nur brew doctor $(brew doctor --list-checks | grep -vE 'check_for_stray_(dylibs|static_libs|headers)')
Folgendes
3

Es kann sicher sein, diese Dateien an Ort und Stelle zu lassen, es sei denn, Sie haben Probleme beim Erstellen oder Verknüpfen mit anderen Homebrew-Formeln. brew doctorDie Ausgabe ist beratend und nicht normativ.

Wenn Sie nicht glauben, dass Sie einen Grund haben, gegen die Versionen von curl oder node in / usr / local zu bauen, können Sie diese Header-Dateien entfernen. Sie können die neueste Version später jederzeit mit Homebrew neu installieren.

Tim Smith
quelle
-11

Diese Lösung hat bei mir funktioniert!

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.*
Charles Carrasquero
quelle
Ich finde diese Lösung sehr beängstigend. Ich habe einen Kommentar ausgearbeitet, aber nicht bemerkt, dass diese Lösung aus einer Antwort auf eine andere Frage kopiert wurde. Deshalb habe ich meinen Kommentar dorthin verschoben.
Don Hatch