Когда я сохраняю файлы на своем Macbook и распаковываю их в Linux, я постоянно получаю следующие предупреждения / ошибки:
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
К счастью, это НЕ влияет на файлы, хранящиеся в архиве, которые прекрасно восстанавливаются. Тем не менее, это вызывает проблемы в ряде сценариев, особенно при работе с процессами сборки, где ненулевой код ошибки, возвращаемый tar, вызывает ненужную остановку сборки и установки.
Как я могу заставить OS X создавать tar-файлы, которые хорошо играют с остальным миром Linux?
Кроме того, для бонусных баллов существует общедоступный tar-файл с этими проблемами. Есть ли способ заставить Linux обрабатывать tar-файл изящно, не меняя способа, которым он был изначально сжат?
источник
/usr/bin/gnutar
.Если вы используете Mavericks или новее, то gnutar больше не включается по умолчанию.
Обходной путь, если вы используете homebrew, заключается в следующем:
Затем вы можете использовать команду
gtar
для совместимости с Linux.Если вы хотите заменить
tar
наgtar
, просто замените символическую ссылкуЧтобы восстановить исходный tar-файл, поставляемый с Mac Os X, выполните приведенные выше команды, но замените их
which gtar
наwhich bsdtar
Источник:
https://github.com/jordansissel/fpm/issues/576
источник
.bashrc
(или вашем эквиваленте):PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
tar
ссылку в/usr/local/bin
поcd /usr/local/bin ; ln -s gtar tar
- возможно , самый простой вариантTar GNU не нравится некоторая дополнительная информация, которую включает в себя tar OSX BSD.
GNU tar позволит вам подавить эти предупреждения с помощью опции:
См .: https://www.gnu.org/software/tar/manual/html_section/tar_27.html.
Обратите внимание, что tar BSD не поддерживает этот флаг, поэтому, если вам нужно запустить один и тот же код распаковки на всех платформах, вы можете использовать что-то вроде:
источник
Чтобы правильно извлечь файл tar без ошибок в системе Linux, вы можете использовать bsdtar.
sudo apt-get install bsdtar
Тогда используйте как обычно.
bsdtar -xvf file.tar
гдеfile.tar
файл tar, который вы хотите извлечь.Источник: https://bugs.launchpad.net/ubuntu/+source/tar/+bug/129314
В качестве альтернативы вы также можете использовать файловый ролик GNOME.
источник
или же
Это наименее обнаруживаемая особенность tar в OS X, о которой я лично знаю.
Смотрите также Почему я получаю файлы типа ._foo в моем архиве на OS X?
Редактировать: похоже, что это может только остановить создание нежелательных
._foo
файлов -типа, оно не остановит создание заголовка (по крайней мере, в Yosemite / 10.10); спасибо комментаторам за указание на это. Однако (для бонусных баллов :) вы можете изящно обрабатывать такие tarballs, извлекая их следующим образом:Это работало с использованием gnu tar 1.15.1, который довольно старый! В качестве альтернативы вы можете использовать вместо этого pax, который (для меня) выбрасывает дополнительную информацию в
PaxHeader
каталог, но, по крайней мере, завершается без ошибок:источник
tar --version
указываетbsdtar 2.8.3 - libarchive 2.8.3
). Кроме того, мне нужно тире, прежде чемcf
в последнем случае.MacOSX уже поставляется с Gnutar. Если вы хотите быстрое и грязное решение, добавьте это в
~/.bash_profile
и запустить,
source ~/.bash_profile
чтобы обновитьКроме того, OSX поставляется с GNU и BSD tar. Таким образом, вы также можете отменить ссылку на tar с bsd на gnu:
источник
/etc/hosts
?/etc/hosts
для отображения хоста / IP, верно?.bashrc
не загружается для сеансов терминала. Вам нужно.bash_profile
, поскольку оболочка входа в систему запускается с новым окном терминала. / cc @BenjiWiebeСпасибо. Эта тема была очень полезной. Если вы используете MacPorts, вот краткое руководство:
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
Добавьте следующую строку в /Users/[yourname]/.profile
alias tar='/opt/local/libexec/gnubin/tar'
Закройте и перезапустите окно терминала.
источник
Да, встроенный в Mac двоичный файл tar добавляет кучу дополнительных вещей, которые CentOS не любит. Чтобы это исправить, сделайте следующее:
Надеюсь, это поможет!
источник
tar
стороннюю программу gnutar, чтобы избежать путаницы в программном обеспечении. ожидая, что Mac будет вести себя как Mac. $ 0,02. -ЭрикХорошо, я использовал поиск в Google, но верхняя тройка ссылок подтвердила то, что я подозревал
См. Эту ссылку . Там кто-то сообщает, что "Использование" bsdtar -xvf "сработало".Редактировать: Вы находитесь в системе Mac, я думал наоборот. Вам нужно будет использовать gnutar, он должен быть уже установлен, если не установлен. Конечно, вы можете посмотреть на другие ссылки, ища себя.
источник
На MAC OSX установите GNU-tar
затем создайте свой Linux-совместимый tar с помощью:
Или вы можете создать свой архив в формате pax
источник