Kemungkinan Duplikat:
Mengapa saya mendapatkan file seperti ._foo di tarball saya di OS X?
Saya membuat skrip autoconf pada Mac. Ketika tar berjalan, ia menempatkan semua nama ._ foobar ini di arsip:
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
Sekarang apa yang terjadi adalah sistem file HFS Apple menempatkan properti file dalam nama ._ foobar sehingga mereka dapat dikembalikan pada sistem Mac lain. Tetapi saya tidak menginginkannya --- mereka hanya sampah bagi saya. Apakah ada cara untuk menekan mereka?
macos
filesystems
tar
metadata
ay32
sumber
sumber
._*
file dengan benar dari arsip (misalnya.__init__.py
) yang menggunakan solusi yang sama.Jawaban:
Per jawaban atas pertanyaan lain , Anda dapat mengatur variabel lingkungan tidak terdokumentasi (?) COPYFILE_DISABLE untuk mencegah beberapa program yang disediakan sistem (termasuk tar ) memberi makna khusus kepada
._*
anggota arsip. Secara khusus, itu akan mencegah mereka dari:menyimpan data atribut yang diperluas (termasuk garpu sumber daya) di
._*
anggota arsip(yaitu jangan "mencemari" arsip yang dibuat pada Mac OS X tetapi dimaksudkan untuk digunakan pada sistem lain), dan
mencoba untuk mengekstraksi atribut atau sumber daya yang diperluas dari anggota arsip bernama seperti
._*
(yaitu jangan salah mengartikan
._*
anggota arsip dalam arsip dari sistem lain).Nilai yang Anda gunakan untuk variabel lingkungan tidak penting (bahkan bisa berupa string kosong). Nilai suka
0
, danfalse
tidak akan mengaktifkan kembali fitur. Satu-satunya hal yang penting adalah apakah variabel diatur (Anda harus "membatalkan" untuk mengaktifkan kembali fitur).Anda dapat menggunakan variabel ini pada perintah individual dengan memanfaatkan kemampuan shell Bourne-style ( sh , ksh , bash , zsh , dll.) Untuk mengawali perintah dengan variabel lingkungan tambahan.
Jika Anda mengalami masalah lebih sering daripada tidak, maka Anda mungkin ingin mengatur dan mengekspor variabel ini di salah satu file inisialisasi shell Anda.
Jika perlu, Anda dapat menghapus variabel untuk setiap perintah.
Pada sistem Mac OS X 10.6 ini, semua perintah berikut sepertinya tahu tentang COPYFILE_DISABLE:
/usr/bin/tar
(tautan simbolis kebsdtar
)/usr/bin/bsdtar
/usr/bin/gnutar
/bin/pax
COPYFILE_DISABLE berasal dari Mac OS X 10.5. Jika Anda perlu mendukung 10.4, ada COPY_EXTENDED_ATTRIBUTES_DISABLE yang berfungsi dengan cara yang sama.
sumber
Bukan seorang ahli, tetapi sedikit googling menemukan ini: http://www.ofzenandcomputing.com/zanswers/3422
dan ini: http://hintsforums.macworld.com/archive/index.php/t-28703.html
Perintah kedua sepertinya dapat dimasukkan ke dalam skrip ... Anda mungkin tidak dapat mencegah pembuatan file sumber daya garpu tetapi Anda dapat secara otomatis menghapusnya setelah itu.
sunting: Saya seharusnya menyebutkan ini mungkin memiliki hasil yang buruk, gunakan dengan risiko Anda sendiri.
sumber
tar
kecuali yanglibarchive
berbasis BSD (ini termasuk Mac OS X), tetapi mungkin tidak dapat diandalkan; menginstal tar GNU seringkali merupakan ide yang bagus. (Namun, ini menyakitkan. Saya pikir Anda perlu mendaftar semuanya dan kemudian meneruskan nama-nama itu pada baris perintah) dengan._
file-file tersebut dengan cara OS X menyimpan sumber daya garpu di tempat-tempat yang tidak mendukung atribut diperpanjang.Anda dapat mencoba kompilasi sendiri
tar
, atau memasangnya dari Macports atau Fink jika tersedia (Homebrew tidak memilikinya). Dengan sedikit "keberuntungan", ia tidak mengetahui metadata OS X dan melewatkan membuat file-file itu.sumber