tar gibt einen Symbolfehler in einem Bash-Installationsskript?

0

Ich habe versucht, Meteor zu installieren, und als Teil des Installationsprozesses lädt es Knoten aus einer TAR-Datei herunter, die es an Tar weiterleitet. Aber der Befehl zum Extrahieren von Teeren wird mit einem fehlenden Symbol ausgegeben.

Ich habe Homebrew verwendet brew install gnu-tar --with-default-names

NODE_URL="https://nodejs.org/dist/v8.1.3/node-v8.1.3-darwin-x64.tar.gz" 
curl "${NODE_URL}" | tar zx --strip-components 1 

Wird das zurückgeben:

lazy symbol binding failed: Symbol not found:
_utimensat   
Referenced from: /usr/local/bin/tar    
Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: 
_utimensat   
Referenced from: /usr/local/bin/tar   
Expected in: /usr/lib/libSystem.B.dylib
Ray Foss
quelle

Antworten:

1

In Ihrem Beispiel verwenden Sie bsd / macos curl mit gnu tar, das funktioniert nicht. Leider verlassen sich viele Entwicklerprogramme auf die Apple-Bash und der Versuch, Dinge auf Gnu zu aktualisieren, kann dazu führen, dass Bash-Skripte brechen.

Brew lässt Sie nicht einmal curl "nativ" installieren

brew install curl
==> Downloading https://homebrew.bintray.com/bottles/curl-7.54.1.sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

Um Ihr Problem mit dem Bash-Skript zu beheben, müssen Sie gnu-tar von tar in gtar umbenennen

brew uninstall gnu-tar
brew install gnu-tar
Ray Foss
quelle