Quando o padrão para empacotar o código-fonte do Linux se tornou .tar.gz?

29

Ao navegar em projetos de código aberto desenvolvidos principalmente para sistemas Linux e ao baixar os pacotes mais recentes, o código fonte é sempre armazenado em um arquivo .tar.gz ou .tar.bz2.

Existe alguma razão para usar .tar.gz ou .tar.bz2 em vez de algo como .zip ou .rar ou algum outro algoritmo de compactação (ou até deixá-lo descompactado se o projeto for pequeno o suficiente)?

Joe Z.
fonte
3
Onde você está navegando? Atualmente, a maioria dos projetos distribui seu código-fonte na forma de um URL de repositório do VCS e, quando eles fornecem arquivos, geralmente está no formato .ZIP. TGZ tem sido obsoleto por décadas (apesar da recusa teimosa algumas das pessoas desagradáveis para passar a mensagem) e eu não vi qualquer projeto de usá-lo em um longo tempo ...
Mason Wheeler
4
Linux, zip e rar nem existiam quando tar(isto é, Tape Archiver) já era um padrão de fato.
SK-logic
19
@ Wheeler Mason: Defina "obsoleto". Um formato não é obsoleto desde que as pessoas o considerem útil e continuem a usá-lo. Eu acho que o tar + gz faz o trabalho e mudar para outro formato é, em muitos casos, apenas uma questão de gosto. Projetos como o Eclipse ( eclipse.org ) ainda o usam.
Giorgio
3
@MasonWheeler, navegue ftp.gnu.org, por exemplo. É sobre isso que toda a Internet se baseia. E, espero, todo mundo concorda que o ZIP é tecnologicamente inferior de qualquer maneira.
SK-logic
5
@MasonWheeler e outros. Só porque o alcatrão tem um arquivador de fita em seu nome não o torna obsoleto. TODOS que conheço usam tar no mundo * nix / BSD e o uso de .zip é relativamente raro. De fato, quando vejo um arquivo zip, quase sempre questiono se é apenas um arquivo do Windows.
Rob

Respostas:

31

Para responder à pergunta no cabeçalho: tar.gz / tar.bz2 tornou-se o padrão para a distribuição de código-fonte Linux há muito, muito, muito tempo atrás, como em mais de duas décadas, e provavelmente mais algumas. Significativamente antes mesmo do Linux existir.

De fato, alcatrão significa (t) macaco (ar) cebolinha. Pense carretel duro, e você terá uma idéia quantos anos ela tem. ba-dum-bump.

Antes que as pessoas tivessem gravadores de CD, distribuições de software eram lançadas em disquetes de 1,44 Mb. O arquivo tar compactado foi cortado em pedaços do tamanho de um disquete pelo splitcomando, e esses pedaços foram chamados tarballs . Você os juntaria novamente cate extrairia o arquivo.

Para responder à outra pergunta de por que não Zip ou Rar, isso é fácil. O arquivador de alcatrão vem do Unix, enquanto os outros dois vêm do MS-DOS / Windows. O Tar lida com metadados de arquivos unix (permissões, horários, etc.), enquanto zip e rar não eram até muito recentemente (eles armazenavam dados de arquivos do MS-DOS). De fato, o zip demorou um pouco para começar a armazenar os metadados NTFS (fluxos alternativos, descritor de segurança, etc.) corretamente.

Muitos dos algoritmos de compactação no PKZip são de propriedade do fabricante original, eo último adicionado às versões do Dos / Windows foi o Deflate (RFC 1951), que teve um desempenho um pouco melhor que o Implode, o algo proprietário lá que produziu a melhor compactação geral . Gzip usa o algoritmo Deflate.

O algoritmo de compactação RAR é proprietário, mas há uma implementação de código aberto gratuita do descompactador. Os lançamentos oficiais do RAR e WinRAR do RARlab não são gratuitos .

O Gzip usa o algoritmo deflate e, portanto, não é pior que o PKZip. O Bzip2 obtém taxas de compressão um pouco melhores.

Versão TL; DR:

tar.gz e tar.bz2 são do Unix, então as pessoas do Unix os usam. Zip e Rar são do mundo DOS / Windows, então os usuários do DOS / Windows os usam. tartem sido o padrão para agrupar arquivos de material no * nix por várias décadas.

ikmac
fonte
1
Alguns esclarecimentos: As implementações de código-fonte aberto RAR são baseadas no próprio descompactador de código-fonte aberto do RARlab . Também é significativamente mais novo que a maioria dos outros compressores, aparecendo primeiro no Windows muito depois dos anteriormente populares ACE, ARJ e ARC, que cada um substitui os outros, pelo que me lembro. Nenhum dos quais realmente apareceu no Unix até relativamente recentemente.
greyfade
Pequena correção: O algoritmo RAR é não aberto: fedoraproject.org/wiki/Licensing:Unrar?rd=Licensing/Unrar
Sven Slootweg
16

Não sei quando, mas imagino que a razão pela qual é usada seja uma combinação de: tar sendo tradicional (é muito antigo); gerenciamento fácil a partir de uma linha de comando; tar preservando informações do sistema de arquivos que ZIP ou RAR podem não; e o processo de duas passagens significa que a compactação é mais eficiente (um arquivo grande compactando melhor do que muitos arquivos pequenos).

O bzip2 (.bz2) parece estar substituindo o gzip (.gz), pois fornece melhor compactação, da mesma maneira que o próprio gzip substituiu a compactação anterior (.Z).

John Bickers
fonte
3
E xz (LZMA) parece estar substituindo o bzip2 onde a taxa de compactação é importante (os arquivos .xz são 30% menores que o gzip). Gzip é provavelmente o mais rápido de todos.
Sastanin
8

Em essência, arquivar e compactar são duas operações diferentes. O tar.gz mostra claramente a intenção: um arquivo compactado, enquanto um arquivo .zip ou .rar mostra apenas algumas coisas compactadas.

Pieter B
fonte
5

taré tradicional no unix, combina arquivos, mas não os compacta necessariamente. A compactação com .g ou .bz ou .b2 é igualmente fácil.

Zipe rarsão propriedade e mais comuns no mundo Windows

Martin Beckett
fonte
Ah, sim, minha pergunta não foi específica o suficiente. Eu estava falando sobre código Linux / Unix principalmente.
Joe Z.
4
+1 - mas o zip deixou de ser proprietário há algum tempo.
Billy ONeal
Sim, um subconjunto de zip é um padrão agora: iso.org/iso/home/store/catalogue_tc/…
rogerdpack 4/16
4

É tradicional, onipresente e funciona. Além disso, eu pensei que era um pouco aparente.

Atualizar

Minhas desculpas, esqueço que a maioria das pessoas não sabe o que eu sei ou tenho experiência como administrador em ambientes heterogêneos.

Tradição como em um costume ou prática arraigada ao longo do tempo. Sabemos que ele tem base na história porque o tar deriva do Tape ARchive que faz referência à antiga tecnologia de backup em fita. Ele tem uma longa história nos vários sistemas operacionais Unix que datam de 1979 na 7ª edição do Unix, onde substituiu o tp. Os sistemas Linux geralmente são uma amálgama do software Linux Kernel e GNU do qual o GNU tar faz parte. Todo esse histórico de alcatrão significa que a maioria das pessoas técnicas experientes sabe como usá-lo sem precisar se referir à documentação, porque ela está enraizada. Para usuários mais novos, há muita documentação, porque o software existe há tanto tempo.

Onipresente como em aparecer ou ser encontrado em toda parte. Um uso indevido aceito é onde a aparência não é universal, mas em uma porcentagem grande o suficiente da população para ser aceita como onipresente. 7ª Edição Unix é o ancestral dos maiores versões de Unix, incluindo Sun OS / Solaris, AIX, HPUX, AIX, BSD, etc . Há também um alto grau de compatibilidade cruzada nas diferentes implementações do tar no unix . Desde que o MacOS (desde o OS 10) foi baseado no BSD, ele também possui alcatrão. O Linux usa o software GNU, que inclui o GNU Tar, para que o tar esteja disponível em todos os tipos de Linux. E, embora não esteja disponível como um componente interno, existem muitas implementações de tar disponíveis no Windows, incluindo o GNU Tar através do cygwin e nativamente. O GNU Tar, em particular, está disponível na maioria dos Unices e Windows, tornando-o a melhor opção para migrações de arquivos entre sistemas operacionais.

Funciona como em funcionamento há muito tempo sem grandes modificações. Está disponível nas principais plataformas prontas para uso (exceto no Windows, onde está disponível como software adicional). O formato também é suportado em todas as principais plataformas, o que facilita o intercâmbio entre plataformas. Além de ainda ser usado como uma maneira de criar arquivos facilmente portáteis, o tar-pipe é um idioma padrão do Unix para copiar árvores de diretório, especialmente em ambientes heterogêneos. Em suma, ele existe e ainda é muito usado, porque faz o que faz bem.

dietbuddha
fonte
5
com todo o respeito, esta resposta é curta, simplista e ... de alguma forma, não funciona para mim #
30512
5
... 1) "tradicional" tem menos de zero peso no desenvolvimento de software; caso contrário, todos estaríamos codificando COBOL no IBM-360 usando cartões perfurados; dizer "é tradicional" não explica nada ...
gnat
5
... 2) "onipresente" ... realmente? Uma coisa que notei quando mudei do Unix para o Windows é que ninguém estava usando tar e tudo estava indo bem sem ele. Quando, depois de vários anos de codificação feliz, uma vez eu precisei de tar, demorei um pouco para encontrar sua versão do Windows. Isso é onipresente? me dê uma folga ... #
28512
4
... 3) "funciona" - bem, sem explicar que tipo de trabalho e por que é feito pelo alcatrão, isso é apenas um aceno manual. Foi há muito tempo, mas ainda me lembro de um choque quando soube do alcatrão. Utilitário que não comprime parecia apenas inútil para mim. É claro que eu estava enganado, mas se volta então alguém iria tentar "educar" me com a declaração de uma palavra como ele funciona eu acho que "não, ele se masturba" ...
mosquito
4
... Resumindo, esse esforço zero, resposta puramente opinativa, carece de explicação e contexto. As declarações feitas não são explicadas nem copiadas em nada. A redação excessivamente generalizada parece meramente reiterar o que foi afirmado na pergunta, em vez de respondê-la.
Gd