Wenn ich Dateien auf meinem Macbook tariere und unter Linux entpacke, erhalte ich wiederholt die folgenden Warnungen / Fehler:
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'
tar: Ignoring unknown extended header keyword `SCHILY.dev'
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'
tar: Ignoring unknown extended header keyword `SCHILY.dev'
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'
tar: Ignoring unknown extended header keyword `SCHILY.dev'
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'
tar: Ignoring unknown extended header keyword `SCHILY.dev'
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'
tar: Ignoring unknown extended header keyword `SCHILY.dev'
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'
tar: Error exit delayed from previous errors
Glücklicherweise wirkt sich dies NICHT auf die im Archiv gespeicherten Dateien aus, die perfekt wiederhergestellt werden. In einigen Szenarien treten jedoch Probleme auf, insbesondere bei Build-Prozessen, bei denen der von 'tar' zurückgegebene Fehlercode ungleich Null dazu führt, dass Builds und Installationen unnötig angehalten werden.
Wie kann ich OS X dazu bringen, TAR-Dateien zu erstellen, die gut mit dem Rest der Linux-Welt zusammenspielen?
Außerdem gibt es für Bonuspunkte eine öffentlich verteilte TAR-Datei mit diesen Problemen. Gibt es eine Möglichkeit, Linux dazu zu bringen, die tar-Datei ordnungsgemäß zu verarbeiten, ohne die Art und Weise zu ändern, in der sie ursprünglich komprimiert wurde?
quelle
/usr/bin/gnutar
.Wenn Sie Mavericks oder neuer verwenden, ist Gnutar standardmäßig nicht mehr enthalten.
Wenn Sie Homebrew verwenden, müssen Sie die folgenden Schritte ausführen:
Sie können dann den Befehl
gtar
für Linux-Kompatibilität verwenden.Wenn Sie ersetzen möchten
tar
mitgtar
, ersetzen Sie einfach den SymlinkZur Wiederherstellung des ursprünglichen Teer , die mit Mac OS X, führen Sie die oben genannten Befehle aber ersetzen
which gtar
mitwhich bsdtar
Quelle:
https://github.com/jordansissel/fpm/issues/576
quelle
.bashrc
(oder Ihrem Äquivalent) hinzufügen :PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
tar
Link in/usr/local/bin
voncd /usr/local/bin ; ln -s gtar tar
- möglicherweise die einfachste OptionGNU tar mag einige der optionalen Informationen, die der Standard OSX BSD tar enthält, nicht.
Mit GNU tar können Sie diese Warnungen mit der Option unterdrücken:
Siehe: https://www.gnu.org/software/tar/manual/html_section/tar_27.html
Beachten Sie, dass BSD tar dieses Flag nicht unterstützt. Wenn Sie also auf allen Plattformen denselben Entpackungscode ausführen müssen, können Sie Folgendes verwenden:
quelle
Um die tar-Datei auf einem Linux-System fehlerfrei zu extrahieren, können Sie bsdtar verwenden.
sudo apt-get install bsdtar
Dann wie gewohnt anwenden.
bsdtar -xvf file.tar
Wofile.tar
ist die TAR-Datei, die Sie extrahieren möchten?Quelle: https://bugs.launchpad.net/ubuntu/+source/tar/+bug/129314
Alternativ können Sie auch GNOME File Roller verwenden.
quelle
oder
Dies ist die am wenigsten erkennbare Funktion von tar unter OS X, die mir persönlich bekannt ist.
Siehe auch Warum bekomme ich in meinem Tarball unter OS X Dateien wie ._foo?
Bearbeiten: Es sieht so aus, als würde die Erstellung von
._foo
Dateien mit unerwünschtem Typ nur gestoppt. Die Header-Erstellung wird nicht gestoppt (zumindest unter Yosemite / 10.10). Vielen Dank Kommentatoren für den Hinweis. Allerdings (für die Bonuspunkte :) können Sie solche Tarballs elegant handhaben, indem Sie sie wie folgt extrahieren:Dies funktionierte mit Gnu Teer 1.15.1, der ziemlich alt ist! Alternativ können Sie stattdessen pax verwenden, das (für mich) die zusätzlichen Informationen in ein
PaxHeader
Verzeichnis wirft , aber zumindest fehlerfrei beendet:quelle
tar --version
gibt anbsdtar 2.8.3 - libarchive 2.8.3
). Auchcf
im letzteren Fall brauche ich vorher einen Gedankenstrich .MacOSX wird bereits mit Gnutar ausgeliefert. Wenn Sie eine schnelle und schmutzige Lösung wünschen, fügen Sie diese hinzu
~/.bash_profile
und
source ~/.bash_profile
zum Aktualisieren ausführenZusätzlich wird OSX mit GNU und BSD Tar ausgeliefert. Sie können also auch die Verknüpfung von tar von bsd zu gnu aufheben:
quelle
/etc/hosts
?/etc/hosts
ist für Host / IP-Mapping, oder?.bashrc
nicht für Terminal-Sitzungen geladen. Sie benötigen.bash_profile
, da eine Login-Shell mit einem neuen Terminal-Fenster gestartet wird. / cc @BenjiWiebeDanke. Dieser Thread war sehr nützlich. Wenn Sie MacPorts verwenden, finden Sie hier eine kurze Anleitung:
sudo port install gnutar
sudo ln -s /usr/local/opt/gnu-tar/libexec/gnubin/tar /usr/bin/gnutar
sudo ln -s /opt/local/libexec/gnubin/tar /usr/bin/gnutar
Fügen Sie die folgende Zeile zu /Users/[Ihr Name)/.profile hinzu
alias tar='/opt/local/libexec/gnubin/tar'
Beenden und starten Sie Ihr Terminalfenster neu.
quelle
Ja, Macs eingebaute tar-Binärdatei fügt eine Reihe zusätzlicher Dinge hinzu, die CentOS nicht mag. Um dies zu beheben, gehen Sie wie folgt vor:
Ich hoffe, das hilft!
quelle
tar
Programm gnutar aufzurufen, um verwirrende Software zu vermeiden Erwarten, dass sich ein Mac wie ein Mac verhält. 0,02 US-Dollar. -ErikOkay, ich habe die Google-Suche verwendet, aber die obersten drei Links haben bestätigt, was ich vermutet habe
Siehe diesen Link . Dort meldet jemand, dass "Using" bsdtar -xvf "funktioniert hat."Bearbeiten: Sie sind auf Mac-System, dachte ich anders herum. Sie müssen gnutar verwenden, es sollte bereits installiert sein, wenn es nicht installiert wird. Natürlich können Sie sich auch andere Links ansehen, indem Sie selbst suchen.
quelle
Installieren Sie unter MAC OSX gnu-tar
Dann erstelle deinen Linux-kompatiblen Teer mit:
Oder Sie können Ihr Archiv im Pax-Format erstellen
quelle