Отримайте mac tar для припинення вставки файлів ._ * в архівах смоли [копія]


46

Можливий дублікат:
Чому я отримую такі файли, як ._foo, у мій тарбол на OS X?

Я створюю сценарії autoconf на Mac. Коли tar запускається, він зберігає всі ці ._ foobar імена в архіві:

libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpr
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpr

Тепер у файловій системі HFS від Apple розміщуються властивості файлів у назвах ._ foobar, щоб їх можна було відновити в іншій системі Mac. Але я не хочу їх --- вони для мене просто сміття. Чи є спосіб їх придушити?



2
@geekosaur Користувач на unix.SE відмовився і прийняв неправильну відповідь.
Даніель Бек

Існує також пов'язане питання SU щодо правильного вилучення ._*файлів з архівів (наприклад .__init__.py), який використовує те саме рішення.
Кріс Джонсен

Відповіді:


69

За відповідь на інше питання , ви можете встановити без документів (?) Змінна оточення COPYFILE_DISABLE , щоб запобігти кілька системних поставляються програми (включаючи смоли ) від надання особливого сенсу в ._*архів членів. Зокрема, це заважатиме їм:

  • зберігання розширених даних атрибутів (включаючи вилки ресурсів) в ._*архівах
    (тобто не "забруднюють" архіви, створені на Mac OS X, але призначені для використання в інших системах), і

  • спроба витягнути розширені атрибути або ресурси з членів архіву, названих типу ._*
    (наприклад, не трактуйте неправильно ._*членів архіву в архівах з інших систем).

Значення, яке ви використовуєте для змінної середовища, не є важливим (це може бути навіть порожній рядок). Ці значення подобаються 0, і falseвони не зможуть повторно відредагувати функцію. Єдине, що важливо, чи встановлена ​​змінна (вам потрібно "зняти її", щоб повторно ввімкнути функцію).

Ви можете використовувати цю змінну для окремих команд, скориставшись можливістю оболонок у стилі Борна ( sh , ksh , bash , zsh тощо) для префіксації команд із додатковими змінними середовища.

COPYFILE_DISABLE=1 tar cf new.tar …

Якщо ви стикаєтеся з проблемою частіше, ніж вам потрібно, ви можете встановити та експортувати цю змінну в один із файлів ініціалізації вашої оболонки.

# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

Після цього ви можете вимкнути змінну для окремих команд.

(unset COPYFILE_DISABLE; tar cf somefile.tar …)

У цій Mac OS X 10.6 системі, схоже, відомо про COPYFILE_DISABLE:

  • /usr/bin/tar(символічне посилання на bsdtar)
  • /usr/bin/bsdtar
  • /usr/bin/gnutar
  • /bin/pax

COPYFILE_DISABLE бере початок у Mac OS X 10.5. Якщо вам потрібно підтримати 10.4, він має COPY_EXTENDED_ATTRIBUTES_DISABLE, який працює таким же чином.


ОГО. Тільки те, що я шукав. Спасибі. Мої файли autoconf будуть набагато чистішими.
vy32

0

Не експерт, але трохи гуглінг виявив це: http://www.ofzenandcomputing.com/zanswers/3422

і це: http://hintsforums.macworld.com/archive/index.php/t-28703.html

Друга команда виглядає так, що вона може бути включена в сценарій ... ви, можливо, не зможете запобігти створенню файлів виделкових ресурсів, але ви зможете автоматично видалити їх згодом.

редагувати: я мав би зазначити, що це може мати погані результати, використовуйте на свій страх і ризик.


1
Сценарій видаляє вилки ресурсів з файлів на локальному диску. Зазвичай вони служать цілі (наприклад, зміні програми, пов'язаного з певним файлом), тому це повинно мати велике попередження.
Даніель Бек

Сценарій мені не допомагає. Він видаляє файли з диска, а не з архіву tar. Виявляється, у мене на диску немає файлів ресурсів. Але їх складають в архів. І на відміну від zip-файлів, ви не можете просто видалити файли з архіву tar.
vy32

(Ба, тайм-аути) Насправді ви можете, якщо використовувати майже будь-яку, tarкрім BSD- libarchiveбазированої (сюди входить Mac OS X), але, можливо, не є надійною; установка гудрону GNU часто є хорошою ідеєю. (Однак, це боляче. Я думаю, що вам потрібно перерахувати їх усі, а потім передати ці імена в командному рядку.) Також вилки ресурсів технічно є на диску, але в HFS + вони зберігаються в розширених атрибутах; ці ._файли є способом OS Х зберігання вилок ресурсів в місцях , які не підтримують розширені атрибути.
geekosaur

0

Ви можете спробувати скласти свій власний tarабо встановити його з Macports або Fink, якщо вони доступні (у Homebrew його немає). З деякою «удачею» слід не знати метаданих OS X і пропустити створення цих файлів.


Я буду вдячний за пояснення дозволу. Дякую.
Даніель Бек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.