URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 4672
[ Назад ]

Исходное сообщение
"Опции архивации для повторяемого результата."

Отправлено Аноним , 17-Дек-20 13:12 
По мотивам: https://reproducible-builds.org/docs/archives/

С tar все понятно.

Как получить воспроизводимый: gz, bz2, xz, ... ?

Какие магические опции надо этим архиваторам добавить для воспроизводимость результата?

Неужели только ar, cpio, zip и jar воспроизводимы?


Содержание

Сообщения в этом обсуждении
"Опции архивации для повторяемого результата."
Отправлено Аноним , 17-Дек-20 17:20 
ДАВАЙ Я ЗА ТЕБЯ ПОГУГЛЮ

https://wiki.debian.org/ReproducibleBuilds/TimestampsInGzipH...


"Опции архивации для повторяемого результата."
Отправлено pavel_simple. , 17-Дек-20 17:35 
> ДАВАЙ Я ЗА ТЕБЯ ПОГУГЛЮ
> https://wiki.debian.org/ReproducibleBuilds/TimestampsInGzipH...

угу, всё именно так
tar cf - 1 | gzip -n -3 | md5sum
35261b3df66a59882dc07c104b21f487  -
tar cf - 1 | gzip -n -3 | md5sum
35261b3df66a59882dc07c104b21f487  -
tar cf - 1 | gzip -n -3 | md5sum
35261b3df66a59882dc07c104b21f487  -


"Опции архивации для повторяемого результата."
Отправлено pavel_simple. , 17-Дек-20 17:27 
> По мотивам: https://reproducible-builds.org/docs/archives/
> С tar все понятно.
> Как получить воспроизводимый: gz, bz2, xz, ... ?
> Какие магические опции надо этим архиваторам добавить для воспроизводимость результата?
> Неужели только ar, cpio, zip и jar воспроизводимы?

кто-то путает компановщики с архиваторами(компрессорами).
Но в целом, достаточно небольшой LD_PRELOAD, и все времена/владельцы будут такие, какие нужно. Останется решиь про сортировку внутри контейнера(cpio/tar/...) и усё.

tar cf - 1 | gzip -3 | md5sum
b9211265d4a965a07679f0e7518e5707  -
tar cf - 1 | gzip -3 | md5sum
1c8e087077123f046cc15aa058aed1de  -
tar cf - 1 | gzip -3 | md5sum
1ae2a8f2f34d676aa795de874bc125d1  -

gzip чудит, но кому нужен gzip сейчас, если всё остальное много лучше
tar cf - 1 | bzip2 -3 | md5sum
58b33241737309015e9513ec9d10bca5  -
tar cf - 1 | bzip2 -3 | md5sum
58b33241737309015e9513ec9d10bca5  -
tar cf - 1 | bzip2 -3 | md5sum
58b33241737309015e9513ec9d10bca5  -

bzip2 работает

tar cf - 1 | zstd  -3 -c -| md5sum
fc5421dd2935ca0372f4fcd531ec15e0  -
tar cf - 1 | zstd  -3 -c -| md5sum
fc5421dd2935ca0372f4fcd531ec15e0  -

zstd работает

tar cf - 1 | xz | md5sum
55fa9d540192e70713157e75d233590d  -
tar cf - 1 | xz | md5sum
55fa9d540192e70713157e75d233590d  -
tar cf - 1 | xz | md5sum
55fa9d540192e70713157e75d233590d  -
аналогично


"Опции архивации для повторяемого результата."
Отправлено Аноним , 18-Дек-20 14:28 
Спасибо!

У меня при создании контейнера, каждый раз создавался новый файл с контрольными сумами содержимого контейнера. Вот из-за его mtime и были расхождения которых сразу не заметил.

Почему опцию -3 дете, протестил с -9 и все сошлось.

У меня еще пакетный менеджер Gentoo заворачивает в архив собранного пакета:
BUILD_TIME
XDG_SESSION_ID
XDG_VTNR
Как их победить может кто идею даст?


"Опции архивации для повторяемого результата."
Отправлено Аноним , 19-Дек-20 10:12 
Переменные окружения сборки можно определить в:
/etc/portage/make.conf
И некоторые переменные надо устанавливать командной строке (скрипте):
XDG_SESSION_ID
XDG_VTNR

Вот с установкой определенной BUILD_TIME в Gentoo похоже никак. Придется лезть и патчить руками portage, или кто подскажет легкое решение, чтобы я баги не добавлял.


"Опции архивации для повторяемого результата."
Отправлено Аноним , 19-Дек-20 17:46 
Пропатчил в lib/portage/package/ebuild/duebuild.py BUILD_TIME теперь binpkg получаются bit to bit воспроизводимы.

Еще бы mtime самого архива ставить заданный. Жаль bzip2 не имеет опции установки заданного mtime. Вариант с touch для правки mtime архива после создания?

Может лучше было взять libfaketime ?

А кто-то пробовал здесь воспроизводить сжатый образ ядра Linux?
https://www.kernel.org/doc/html/latest/kbuild/reproducible-b...
https://github.com/hardenedlinux/grsecurity-reproducible-build


"Опции архивации для повторяемого результата."
Отправлено Аноним , 06-Янв-21 09:27 
Кто-то делал воспроизводимые файловые системы?

Как сделать воспроизводимых загрузчик? Тестовая установка с grub в MBR и каждый раз, сначала диска, после eb6390, пару десятков байт изменяется. Как сделать grub-install воспроизводимым?