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

Исходное сообщение
"Связывание повторяемых сборок GNU Guix с архивом исходных те..."

Отправлено opennews , 30-Мрт-19 20:04 
Доступен (https://www.opennet.ru/tips/3100_gnu_guix_heritage.shtml) перевод статьи (https://www.gnu.org/software/guix/blog/2019/connecting-repro.../) Людвика Курте, в которой рассказано как в дистрибутиве GNU Guix связать повторяемые сборки, позволяющие убедиться в тождественности бинарных файлов эталонным исходным текстам, с загрузкой исходных текстов из архива кода Software Heritage (https://www.softwareheritage.org/). Software Heritage ставит перед собой задачу создания полного архива всех доступных в Сети исходных текстов. Код загружается из разных источников (GitHub, репозитории Debian, коллекции GNU и т.п.) с автоматичкеским переносом информации об изменениях, формируя таким образом историю развития кода разных проектов (можно посмотреть каким код был в разное время).


В Guix  можно использовать Software Heritage для получения кода, если репозиторий из которого собран пакет, перестал существовать. В контексте повторяемых сборок пользователь может загрузить из Software Heritage состояние кода проекта, соответствующее имеющемуся бинарному пакету, и проверить что бинарные файлы собраны именно из этого кода без добавления скрытых изменений.


URL: https://www.opennet.ru/tips/3100_gnu_guix_heritage.shtml
Новость: https://www.opennet.ru/opennews/art.shtml?num=50425


Содержание

Сообщения в этом обсуждении
"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Анонимс , 30-Мрт-19 20:04 
> В Guix можно использовать Software Heritage для получения кода, если репозиторий из которого собран пакет, перестал существовать
> и проверить что бинарные файлы собраны именно из этого кода без добавления скрытых изменений

Однако, полезная вещь.


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Аноним , 30-Мрт-19 20:18 
Чем это лучше hasher от ALT Linux?

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено ШО , 30-Мрт-19 20:49 
Очевидно тем, что это не ALT Linux

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Stax , 30-Мрт-19 20:52 
Тем, что hasher недостаточно для задачи, которую тут решают?

Тут привязка к зависимостям не на уровне версий пакетов, а конкретной ревизии (коммита) сорцов для каждого проекта. И проверка идентичности сборки, если не совпал хэш с требуемым - значит что-то пошло не так. Добиваются совпадения бит-в-бит.

В альтернативах типа mock или hasher привязка на уровне обычных зависимостей, где может обновится сборка при той же формальной (с точки зрения пакета) версии, но из-за изменений сборка с новой версией не будет идентична бит-в-бит. Ну и результирующую контрольную сумму никто с эталоном не сверяет, там просто никто не ведет никаких эталонов.

Хотя вот тут какое-то совпадение хешей показали https://www.altlinux.org/%D0%92%D0%BE�...
Но в плане качества это ничем не лучше того же remock (https://github.com/kholia/ReproducibleBuilds)

И на этот хэш никто потом не завязывается (в смысле требования получать тот же хэш при последующих сборках)


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Аноним , 30-Мрт-19 21:05 
Ну а как там все-таки разруливается, что компиляция программулины компилятором gcc 8.1 приведет к такой-то бинари, а компилятором gcc 8.2 - вот к такой? И с каких это пор одна лишь ревизия gcc достаточна? - он сам по себе может быть собран с патчами или без, с такими-то опциями или сякими-то. Не бывает четкой связи между "ревизией (коммитом) сорцов" и бинарем. А чтобы она случилась, нужно сверхгигантское количество предпосылок и допущений.

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Stax , 30-Мрт-19 23:04 
> без, с такими-то опциями или сякими-то. Не бывает четкой связи между
> "ревизией (коммитом) сорцов" и бинарем. А чтобы она случилась, нужно сверхгигантское
> количество предпосылок и допущений.

Судя по документу, у них как раз мегарепа с копией исходников всех проектов. Т.е. git clone (ну или  иное, если изначально не гит) для всего вообще, что используется. И ссылка на коммит в этой их копии это однозначно конкретные исходники.

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

Разумеется, версию gcc также менять нельзя...


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено J.L. , 01-Апр-19 18:46 
> Ну а как там все-таки разруливается, что компиляция программулины компилятором gcc 8.1
> приведет к такой-то бинари, а компилятором gcc 8.2 - вот к
> такой? И с каких это пор одна лишь ревизия gcc достаточна?
> - он сам по себе может быть собран с патчами или
> без, с такими-то опциями или сякими-то. Не бывает четкой связи между
> "ревизией (коммитом) сорцов" и бинарем. А чтобы она случилась, нужно сверхгигантское
> количество предпосылок и допущений.

вы не понимаете суть
у вас есть версия в которой написано что собрана она таким-то компилятором с такой то ревизии из проекта Heritage
вы можете проверить это экспериментальным путём

а если авторы пакета не способны предоставить указание о версии компилятора и номере ревизии из проекта Heritage (или аналога), то вы им говорите что они скриптокидихацкеры, и бинарный пакет у них брать не будете


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Wladmis , 01-Апр-19 20:00 
> Ну а как там все-таки разруливается, что компиляция программулины компилятором gcc 8.1
> приведет к такой-то бинари, а компилятором gcc 8.2 - вот к
> такой? И с каких это пор одна лишь ревизия gcc достаточна?
> - он сам по себе может быть собран с патчами или
> без, с такими-то опциями или сякими-то. Не бывает четкой связи между
> "ревизией (коммитом) сорцов" и бинарем. А чтобы она случилась, нужно сверхгигантское
> количество предпосылок и допущений.

Очевидно, что результат сборки пакетов есть результат некоторой функции сборки от друх переменный: исходников и сборочного окружения. И результаты для одних и тех же исходников, но разных сборочных окружений, может различаться. Поэтому для воспроизведения сборки необходимо хранить информацию о сборочном окружении для кадого собранного пакета. Не знаю, что сделано в Heritage, в ALT для информация о них хранится в сборочных тасках и заносится в индекс собранных пакетов.


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено myhand , 31-Мрт-19 09:26 
ALT Linux не запрещен на территории Российской Федерации!  А этот ваш, который на Х - может с самими террористами связан.

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Аноним , 31-Мрт-19 10:33 
Каждый фрагмент кода рекламируемой Вами сборки имеет отечественный копирайт? Причем числящийся не за частным лицом или частной компанией, а за государственным учреждением? Очевидно, нет. В таком случае данный дистрибутив не имеет ровно никаких отличий от любого иного дистрибутива. Его упоминание в каких-то там реестрах не означает ничего, кроме фактов упоминания в реестрах.

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено myhand , 31-Мрт-19 13:32 
Дык в том-то и соль, что ALT - в "каких-то там реестрах" не упоминается.  Это вы все норовите софтом, пропагандирующим всякое гейство, пользоваться.

Хорошо, что хоть Роскомнадзор стоит на страже - иначе как у ALT пользовательская база-то появится?


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено gpyra , 31-Мрт-19 18:05 
Вот поэтому nixos и guixsd нужно что-то вроде ipfs

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено J.L. , 01-Апр-19 18:46 
> ALT Linux не запрещен на территории Российской Федерации!

это временно


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Wladmis , 31-Мрт-19 21:08 
> Чем это лучше hasher от ALT Linux?

Hasher решает другую задачу: изолированной сборки пакетов, которая исключает влияние хост-системы на сборочное окружение и наоборот. Software Heritage же — это репозиторий исходных кодов, из которых были собраны пакеты, и  информации о бинарных сборок этих пакетов. В ALT этому ближе gears-репозитории и индексы исходных пакетов.


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено freehck , 01-Апр-19 20:33 
> Чем это лучше hasher от ALT Linux?

Вообще-то тут правильнее сравнивать с Gears.

Hasher -- это более низкоуровневый инструмент, аналог дебиановского pbuilder-а, ну или рхеловского mock.

Что касается сравнения с Gears, то правильный ответ -- ничем. Эти инструменты заточены под оси с принципиально разными архитектурными подходами. Да, они выполняют в них схожий функционал, но они не могут заменить друг друга от слова совсем.


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено yoda , 31-Мрт-19 01:25 
>полного архива всех доступных в Сети исходных текстов

Могущественное сосредоточение датацентров правительства ощущаю я.


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Аноним , 31-Мрт-19 04:37 
Круто.

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Аноним , 31-Мрт-19 12:11 
GUIX хорошая идея, но на убунту накатить не осилил за пару часов, собственно на этом решил и забть.

"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Аноним , 05-Апр-19 22:49 
На openSUSE сделал следующее:

$ zypper in guix
$ sudo systemctl enable --now guix-daemon.service

Дальше выполнил пункты 7-8 здесь (substitute server authorisation и application setup): http://guix.info/manual/en/Binary-Installation.html#Binary-I...

И всё работает.

Если в вашем дистре пока нет guix, то следуйте инструкциям начиная с первого пункта или соберите "родной" для вашего дистра пакет (deb/rpm/etc.). Я в своё время сделал ebuild для Gentoo, когда его ещё не было ни в одном оверлее или в основной репе Gentoo, и это было крайне просто.

FYI, поделюсь опытом своей ошибки в начале. guix refresh будет пытаться сам определить наличие более свежих версий пакетов в апстриме с разных источников. С опцией --update он будет заменять файлы с определениями пакетов на диске. Не пытайтесь вызвать эту команду без аргументов и без надобности, скорее всего она провалился из-за rate limit'ов на github и других серверах. Если же в качестве аргументов команды указать список пакетов для рефреша, то наличие новых версий будет проверено лишь для них, и это вполне безопасно. Если вы не собираетесь самостоятельно обновлять пакеты до версий, определений которых ещё нет в git-репе guix, и бинарных пакетов для которых ещё нет на substitute-серверах, то команда guix refresh вам не нужна. Вместо этого обновляйте определения из git-репы через guix pull и бинарные пакеты через guix package -u. Кроме того, guix pull обновляет и сам пакетный менеджер guix вместе со всеми его модулями, но при этом не затрагивает то, что было установлено через хостовой пакетный менеджер. Фактически у каждого пользователя guix на одной машине может быть его отдельная копия, или даже несколько разных копий.

P.S. Если будет жалеться на отсутствие /usr/lib/libgit2 или /usr/lib64/libgit2, то установите libgit2-devel или libgit2-dev в вашем хостовом дистре.


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Аноним , 05-Апр-19 22:51 
Небольшая поправка: пункт 7 в моём случае выглядел так:

$ guix archive --authorize < /usr/share/guix/ci.guix.info.pub


"Связывание повторяемых сборок GNU Guix с архивом исходных те..."
Отправлено Andrey Mitrofanov , 02-Апр-19 09:14 
> Людвика Курте, в которой

Он [людовИк кортЭз].

Желающие приглашаются посмотреть-послушать его в ты-трубе.