GNU tar 1.29

После почти двухлетнего молчания, состоялся релиз GNU tar 1.29, новой стабильной версии классического архиватора проекта GNU. Релиз объявил Сергей Позняков 16 мая 2016 года в списке рассылки info-gnu; исходные тексты доступны в форматах tar.gz, tar.bz2, tar.xz и cpio.gz, вместе с отделёнными GPG-подписями для проверки целостности.
GNU tar используется для создания, распаковки, просмотра и обновления архивов, объединяющих множество файлов в один архивный файл. Несмотря на возраст формата, утилита остаётся базовым компонентом Unix- и GNU/Linux-систем, а изменения в ней важны не только для пользователей, но и для сборочных систем, дистрибутивов и проектов, занимающихся воспроизводимыми сборками.
Главным изменением GNU tar 1.29 стала новая опция --verbatim-files-from, меняющая обработку списков файлов, переданных через --files-from или -T. Теперь можно явно указать, что строки из такого списка нужно воспринимать строго как имена файлов, даже если они начинаются с дефиса. Это важно для автоматически создаваемых списков, например полученных через find, где имя файла теоретически может выглядеть как параметр командной строки. Обратное поведение включается через --no-verbatim-files-from.
Также исправлено поведение режима --null: при чтении списков имён файлов, разделённых нулевым байтом, tar снова обрабатывает имена «как есть». В объявлении подчёркивается, что это восстанавливает документированное поведение, которое было нарушено в версии 1.27.
В выпуск добавлены параметры --owner-map=FILE и --group-map=FILE, позволяющие тонко управлять подстановкой имён и идентификаторов пользователей и групп при добавлении файлов в архив. Файл сопоставления задаёт правила преобразования старого имени или числового UID/GID в новое имя и, при необходимости, новый идентификатор.
Для проектов, заботящихся о воспроизводимости сборок, появилась опция --clamp-mtime. Она используется вместе с --mtime и позволяет заменять время изменения только у тех файлов, которые новее заданной даты. Такой подход даёт возможность не затирать лишнюю временную информацию, но при этом стабилизировать временные метки файлов, изменённых во время сборки.
Отдельно улучшена работа с разреженными файлами. На системах, где поддерживаются SEEK_DATA и SEEK_HOLE, GNU tar теперь использует эти возможности ядра для более быстрого обнаружения «дыр» в файлах. Для управления алгоритмом добавлена опция --hole-detection: режим seek использует соответствующие возможности lseek(2), а raw выполняет полное сканирование файла. По умолчанию tar выбирает seek, если это возможно, и откатывается к raw в остальных случаях.
Из устаревшего кода удалена давно deprecated-опция --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=FILEи--group-map=FILE; - добавлена
--clamp-mtimeдля воспроизводимых сборок; - удалена устаревшая опция
--preserve; - ускорено обнаружение разреженных файлов через
SEEK_DATA/SEEK_HOLE; - добавлен выбор алгоритма через
--hole-detection=seekи--hole-detection=raw.
>>> Источник
