Домой Софт macOS и Linux GNU tar 1.29: новые возможности архиватора

GNU tar 1.29: новые возможности архиватора

Классический архиватор получил важное обновление с поддержкой воспроизводимых сборок и улучшенной работой с разреженными файлами.

GNU tar 1.29: новые возможности архиватора
GNU tar 1.29: новые возможности архиватора — иллюстрация к материалу. Источник: linux.org.ru

После почти двухлетнего перерыва состоялся релиз GNU tar 1.29 — новой стабильной версии классического архиватора из экосистемы GNU. Анонс подготовил Сергей Позняков 16 мая 2016 года в рассылке info-gnu. Исходные коды утилиты доступны для загрузки в форматах tar.gz, tar.bz2, tar.xz и cpio.gz, снабженные GPG-подписями для проверки подлинности.

GNU tar остается фундаментальным инструментом в Unix-подобных системах и дистрибутивах Linux. Утилита предназначена для создания, обновления и распаковки архивов, объединяющих множество файлов. Обновление архиватора имеет принципиальное значение не только для конечных пользователей, но и для инструментов сборки ПО и систем, поддерживающих воспроизводимые сборки (reproducible builds).

Ключевые нововведения и улучшения

Главным функциональным дополнением стала опция --verbatim-files-from. Она меняет способ обработки списков файлов, переданных через аргументы --files-from или -T. Теперь пользователь может принудительно указать, что строки в списке должны интерпретироваться строго как имена файлов, даже если они начинаются с символа дефиса. Это критически важно для автоматизированных сценариев, где имена файлов могут совпадать с флагами командной строки (например, при передаче вывода команды find). Обратное поведение обеспечивается ключом --no-verbatim-files-from.

Также была исправлена работа режима --null: при чтении списков файлов, разделенных нулевым байтом, утилита вновь корректно воспринимает имена «как есть». Разработчики отмечают, что этим исправлением восстановили задокументированное поведение, которое было случайно нарушено в версии 1.27.

Управление правами и воспроизводимость

В версию 1.29 добавлены параметры --owner-map=FILE и --group-map=FILE. Они предоставляют возможность гибкого управления подстановкой идентификаторов и имен владельцев/групп при добавлении данных в архив. Внешний файл сопоставления определяет правила, по которым старые UID/GID или имена преобразуются в новые значения.

Для проектов, требующих гарантии воспроизводимости сборок, добавлена опция --clamp-mtime. В связке с параметром --mtime она позволяет обновлять метки времени только у тех файлов, которые новее указанной даты. Это помогает стабилизировать временные показатели архива, не затирая при этом актуальную метаинформацию.

Оптимизация работы с разреженными файлами

Разработчики существенно улучшили обработку разреженных (sparse) файлов. На ядрах ОС, поддерживающих интерфейсы SEEK_DATA и SEEK_HOLE, GNU tar теперь задействует системные возможности для более быстрого поиска «пустот». Управлять процессом можно с помощью опции --hole-detection:

  • Режим seek использует системные возможности lseek(2).
  • Режим raw выполняет полное сканирование файла.

По умолчанию утилита отдает предпочтение seek, переключаясь на raw только при отсутствии поддержки в ядре.

Итоги релиза

Из кодовой базы была окончательно исключена устаревшая опция --preserve. Сборка пакета произведена с использованием актуальных на тот момент версий инструментов разработки: Autoconf 2.69, Automake 1.14, Makeinfo 5.9.93 и Gnulib v0.1-538-g1029a81.

Список основных изменений:

  • Внедрены опции --verbatim-files-from и --no-verbatim-files-from.
  • Восстановлена корректная обработка имен файлов в режиме --null.
  • Добавлены механизмы --owner-map и --group-map для управления атрибутами.
  • Появилась опция --clamp-mtime для задач воспроизводимой сборки.
  • Удален устаревший ключ --preserve.
  • Ускорено обнаружение разреженных файлов через SEEK_DATA/SEEK_HOLE.
  • Реализован выбор алгоритма детекции через --hole-detection.
Источник: https://www.linux.org.ru