Como parar de criar arquivos ._* nos seus pacotes tar no OS X

Se você é desenvolvedor e já passou pela situação de criar um pacote tar ("tarball") no OS X para depois extrai-lo em outro sistema operacional, pode ter notado que o seu comportamento default é incluir, junto a cada arquivo, outro com o mesmo nome, mas com o prefixo ._

Um exemplo a partir de um teste rápido: criar um tarball de um diretório contendo 2 arquivos:

tar zcvf teste.tar.gz old
a testdir
a testdir/brm-draft-2.html
a testdir/brm-preview-2.html

Note que na criação só são mencionados 2 arquivos, como esperado. Mas se listarmos o conteúdo do tarball criado, note o que aparece a mais:

tar ztvf teste.tar.gz 
drwxr-xr-x  0 augusto staff       0 22 Jun 15:15 testdir/
-rw-r--r--  0 augusto staff     171 22 Jun 15:15 testdir/._brm-draft-2.html
-rw-r--r--  0 augusto staff    1345 22 Jun 15:15 testdir/brm-draft-2.html
-rw-r--r--  0 augusto staff     171 22 Jun 15:14 testdir/._brm-preview-2.html
-rw-r--r--  0 augusto staff    1345 22 Jun 15:14 testdir/brm-preview-2.html

Esses pequenos arquivos adicionais que eu grifei acima incluem no tarball os atributos adicionais de arquivos do OS X, para preservá-los no caso de você vir a descompactar o arquivo em outro Mac.

Mas nem sempre é o que desejamos, e aqueles arquivinhos podem se tornar um incômodo no caso de você estar criando pacotes que poderão ser instalados em outro sistema operacional – como foi recentemente meu caso ao criar o pacote do Axe, meu CMS estático.

Na ocasião, com um pouco de pesquisa, acabei descobrindo como me livrar desse comportamento: basta atribuir, na shell, um valor qualquer à variável de ambiente COPYFILE_DISABLE.

Assim, se você quiser evitar a criação dos arquivos indesejados, basta usar um comando como export COPYFILE_DISABLE=1 antes de usar o tar (ou outro comando sujeito a este comportamento) para criar o seu pacote.

E se você nunca quiser preservar atributos extras do OS X, basta incluir o comando acima num arquivo de configuração da sua shell ツ

Comentar

Comentários arquivados

Artigos recentes: