Когда стандартом для упаковки исходного кода Linux стал .tar.gz?


29

При просмотре проектов с открытым исходным кодом, которые в основном разработаны для систем Linux, и загрузке последних пакетов, исходный код всегда сохраняется в файле .tar.gz или .tar.bz2.

Есть ли какая-либо причина использовать .tar.gz или .tar.bz2, а не что-то вроде .zip или .rar или какой-либо другой алгоритм сжатия (или даже оставить его без сжатия, если проект достаточно мал)?


3
Где вы просматриваете? Большинство проектов в наши дни распространяют свой исходный код в виде URL-адреса хранилища VCS, а когда они предоставляют архивы, он обычно находится в форме .ZIP. TGZ устарел на протяжении десятилетий (несмотря на упрямый отказ нескольких отвратительных людей, чтобы получить сообщение), и я не видел ни одного проекта, использующего его в течение длительного времени ...
Мейсон Уилер

4
Linux, zip и rar даже не существовали, когда tar(т.е. Tape Archiver) уже был стандартом де-факто.
SK-logic

19
@ Мейсон Уилер: определить «устаревшие». Формат не устарел, пока люди находят его полезным и продолжают его использовать. Я думаю, что tar + gz делает свою работу, и переключение на другой формат во многих случаях является делом вкуса. Такие проекты, как Eclipse ( eclipse.org ), все еще используют его.
Джорджио

3
@MasonWheeler, поищите, ftp.gnu.orgнапример. Это материал, на котором построен весь Интернет. И, я надеюсь, все согласятся, что ZIP в любом случае технологически уступает.
SK-logic

5
@MasonWheeler и другие. Тот факт, что в названии tar есть ленточный архиватор, не делает его устаревшим. ВСЕ, что я знаю, используют tar в мире * nix / BSD, а использование .zip встречается относительно редко. Фактически, когда я вижу zip-файл, я почти всегда задаюсь вопросом, является ли это архивом только для Windows.
Роб

Ответы:


31

Чтобы ответить на вопрос в заголовке: tar.gz / tar.bz2 стал стандартом для распространения исходного кода Linux очень-очень-очень давно, как в течение более двух десятилетий, и, вероятно, еще пару. Существенно прежде, чем Linux даже появился.

На самом деле, tar обозначает (t) ape (ar) зубок чеснока. Подумайте, катушка , и вы поймете, сколько ему лет. ба-дум-шишка.

До того, как у людей были устройства для записи компакт-дисков, дистрибутивы программного обеспечения были помещены на дискеты 1,44 МБ. Сжатый tar-файл был нарезан командой на фрагменты размером с дискету split, и эти фрагменты назывались tarballs . Вы бы присоединились к ним вместе catи распаковали архив.

Чтобы ответить на другой вопрос, почему не Zip или Rar, это просто. Архиватор tar поставляется из Unix, а два других - из MS-DOS / Windows. Tar обрабатывает метаданные файла Unix (права доступа, время и т. Д.), В то время как zip и rar сделали это совсем недавно (они хранили данные файла MS-DOS). Фактически, zip потребовалось некоторое время, прежде чем он начал правильно хранить метаданные NTFS (альтернативные потоки, дескриптор безопасности и т. Д.).

Многие из алгоритмов сжатия в PKZip являются проприетарными для оригинального производителя, и последний, добавленный к версиям для Dos / Windows, был Deflate (RFC 1951), который работал немного лучше, чем Implode, собственный алгоритм, обеспечивающий лучшее общее сжатие. , Gzip использует алгоритм Deflate.

Алгоритм сжатия RAR является проприетарным, но есть бесплатная реализация декомпрессора с открытым исходным кодом. Официальные релизы RAR и WinRAR от RARlab не являются бесплатными .

Gzip использует алгоритм deflate, и поэтому ничем не хуже PKZip. Bzip2 получает немного лучшие коэффициенты сжатия.

TL; DR версия:

tar.gz и tar.bz2 из Unix, поэтому Unix люди используют их. Zip и Rar из мира DOS / Windows, поэтому DOS / Windows люди используют их. tarуже несколько десятилетий является стандартом для объединения архивов в * nix.


1
Некоторые пояснения: Реализация RAR с открытым исходным кодом основана на собственном декомпрессоре RARlab с открытым исходным кодом . Он также значительно новее, чем большинство других компрессоров, и впервые появился в Windows намного раньше, чем более популярные ранее ACE, ARJ и ARC, которые, в свою очередь, вытесняют другие, насколько я помню. Ничто из этого никогда не появлялось в Unix до относительно недавнего времени.
Greyfade

Небольшое исправление: алгоритм RAR не открыт: fedoraproject.org/wiki/Licensing:Unrar?rd=Licensing/Unrar
Свен Слотвег,

16

Я не знаю когда, но я представляю причину, по которой он используется, это сочетание: tar - традиционный (он очень старый); простое управление из командной строки; tar, сохраняющий информацию о файловой системе, которую ZIP или RAR могут не иметь; и двухпроходный процесс означает, что сжатие более эффективно (сжатие одного большого файла лучше, чем многих маленьких файлов).

Кажется, что bzip2 (.bz2) смещает gzip (.gz), поскольку он обеспечивает лучшее сжатие, во многом так же, как сам gzip сместил более раннее сжатие (.Z).


3
И xz (LZMA), похоже, вытесняет bzip2, где имеет значение степень сжатия ( файлы .xz на 30% меньше, чем gzip). Gzip, вероятно, самый быстрый из них.
Састанин

8

По сути, архивирование и сжатие - это две разные операции. Tar.gz очень ясно показывает намерение: сжатый архив, тогда как .zip или .rar просто показывает, что это какой-то сжатый материал.


5

tarТрадиционно в Unix, он объединяет файлы, но не обязательно сжимает их. Сжать их с помощью .g или .bz или .b2 так же просто.

Zipи rarприличия и чаще встречаются в мире Windows


Ах да, мой вопрос не был достаточно конкретным. Я говорил в основном о Linux / Unix-коде.
Джо З.

4
+1 - но zip перестал быть проприетарным некоторое время назад.
Билли Онил

Да, подмножество почтового индекса является стандартом в настоящее время: iso.org/iso/home/store/catalogue_tc/...
rogerdpack

4

Это традиционный, вездесущий, и это работает. Плюс я думал, что это было несколько очевидно.

Обновить

Мои извинения, я забываю, что большинство людей не знают, что я знаю или имею опыт работы в качестве администратора в гетерогенных средах.

Традиции как в обычае или практике укоренились со временем. Мы знаем, что у него есть история, потому что tar происходит от Tape ARchive, ссылающегося на старую технологию резервного копирования на ленту. Он имеет долгую историю в различных операционных системах Unix, начиная с 1979 года в 7-м издании Unix, где он заменил tp. Системы Linux, как правило, представляют собой объединение программного обеспечения Linux Kernel и GNU, частью которого является tar GNU. Вся эта история tar означает, что большинство опытных технических специалистов знают, как использовать ее, не обращаясь к документации, потому что она укоренилась. Для новых пользователей есть много документации, потому что программное обеспечение существует уже так давно.

Вездесущий, как при появлении или обнаружении повсюду. В некоторой степени допустимо неправильное использование, когда внешний вид не универсален, но в достаточно большом проценте населения, чтобы быть признанным вездесущим. Unix 7-го издания является предком самых больших версий Unix, включая Sun OS / Solaris, AIX, HPUX, AIX, BSD и т . Д. Существует также высокая степень перекрестной совместимости между различными реализациями tar в unix . Поскольку MacOS (начиная с OS 10) основана на BSD, в ней также есть tar. Linux использует программное обеспечение GNU, которое включает в себя GNU Tar, поэтому tar доступен во всех версиях Linux. И, хотя он недоступен как встроенный, существует много реализаций tar, доступных в Windows, включая GNU Tar через cygwin и нативно, В частности, GNU Tar доступен в большинстве Unices и Windows, что делает его хорошим выбором для миграции файлов между операционными системами.

Работает так, как работает уже долгое время без серьезных изменений. Он доступен на всех основных платформах из коробки (кроме Windows, где он доступен в качестве дополнительного программного обеспечения). Формат также поддерживается на всех основных платформах, что облегчает обмен между платформами. Он не только используется для создания легко переносимых архивов, но tar-pipe - это стандартная идиома Unix для копирования деревьев каталогов, особенно в гетерогенных средах. Короче говоря, это было вокруг и все еще в интенсивном использовании, потому что оно делает то, что делает хорошо.


5
при всем моем уважении, этот ответ короткий, упрощенный, и он ... как-то не работает для меня
gnat

5
... 1) «традиционный» имеет вес меньше нуля в разработке программного обеспечения; в противном случае мы все будем кодировать COBOL на IBM-360, используя перфокарты; высказывание "это традиционно" вообще ничего не объясняет ...
Гнат

5
... 2) "вездесущий" ... правда? Одна вещь, которую я заметил, когда переключился с Unix на Windows, это то, что никто не использовал tar и все шло без него. Когда после нескольких лет удачного кодирования мне понадобился tar, мне потребовалось много времени, чтобы найти его версию для Windows. Это вездесущий? дай мне перерыв ...
Комнат

4
... 3) "это работает" - хорошо, не объясняя, что за работа и почему выполняет tar, это просто махание рукой. Это было давно, но я все еще помню шок, когда узнал о смоле. Утилита, которая не сжимает, для меня просто бесполезна. Конечно, я ошибался, но если бы тогда кто-то попытался бы «обучить» меня утверждением в одно слово, как будто это работает, я бы подумал: «Нет, он мастурбирует» ...
Гнат

4
Подводя итог, этот ноль усилий, чисто самоуверенный ответ не хватает объяснения и контекста. Сделанные заявления не объясняются и не подкрепляются ничем. Чрезмерно обобщенная формулировка, кажется, просто повторяет то, что было сказано в вопросе, а не отвечает на него.
Комнат
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.