Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ обСспСчСниС повторяСмых сборок Π² Fedora 43

ΠšΠΎΠΌΠΈΡ‚Π΅Ρ‚ FESCo (Fedora Engineering Steering Committee), ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ дистрибутива Fedora Linux, ΡƒΡ‚Π²Π΅Ρ€Π΄ΠΈΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ повторяСмых сборок ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² осСннСм выпускС Fedora 43. ЦСлью ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Ρ‹ заявлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСнСния повторяСмых сборок для Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Π΅ΠΌ 99% ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΡ‹Π΅ сборки Π΄Π°Π΄ΡƒΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ с ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΌΠΈ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. БовпадСния обСспСчиваСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ основных ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ сборки, сборочным хостом ΠΈ Π·Π°Π²Π΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью). ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт Π»ΠΈΡ‡Π½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ распространяСмыС Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ собраны ΠΈΠ· прСдоставляСмых исходных тСкстов ΠΈ Π½Π΅ содСрТат скрытых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° тоТдСствСнности Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ сборки позволяСт Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ лишь Π½Π° Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ ΠΊ сборочной инфраструктурС дистрибутива, компромСтация компилятора ΠΈΠ»ΠΈ сборочного инструмСнтария Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ подстановкС скрытых Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ.

Помимо бСзопасности повторяСмыС сборки Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для контроля качСства β€” ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ повторяСмых сборок часто Π²Ρ‹Π·Π²Π°Π½Ρ‹ ошибками ΠΈΠ»ΠΈ бСспорядком Π² ΠΊΠΎΠ΄Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, использованиСм Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Β«noarchΒ», зависимостСй, привязанных ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΡ‹Π΅ сборки Ρ‚Π°ΠΊΠΆΠ΅ упростят Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² β€” послС Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€Π°Π²ΠΎΠΊ пСрСсобранныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнтами, нСпосрСдствСнно связанными с внСсённым ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростит сравнСниС вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ повторяСмых сборок ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Π½ΡŽΠ°Π½ΡΡ‹, ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ соотвСтствиС зависимостСй; использованиС Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ состава ΠΈ вСрсий сборочного инструмСнтария; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ†ΠΈΠΉ ΠΈ настроСк ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ; сохранСниС порядка сборки Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сортировки); ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ добавлСния компилятором нСпостоянной слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ случайныС значСния, ссылки Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π΄Π°Ρ‚Π΅ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сборки. На Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ сборок Ρ‚Π°ΠΊΠΆΠ΅ Π²Π»ΠΈΡΡŽΡ‚ ошибки ΠΈ состояния Π³ΠΎΠ½ΠΊΠΈ Π² инструмСнтарии.

Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Fedora ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»Π΅Π½ΠΈΡŽ повторяСмых сборок. НапримСр, Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… выпусках Π² ΡΠ±ΠΎΡ€ΠΎΡ‡Π½ΡƒΡŽ систСму внСсСны измСнСния, ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² с эталонным исходным ΠΊΠΎΠ΄ΠΎΠΌ (mtime Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ зависит ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сборки), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ постоянный порядок пСрСчислСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ структур Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…. На Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΎΡ…Π²Π°Ρ‚ повторяСмыми сборками оцСниваСтся Π² 90%. Для обСспСчСния повторяСмых сборок Π² ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ 10% трСбуСтся участиС мэнтйнСров ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Для стимулирования внСсСния исправлСний Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, сбои ΠΏΡ€ΠΈ осущСствлСнии повторяСмых сборок Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ошибки ΠΏΡ€ΠΈ сборкС.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ повторяСмых сборок Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ дистрибутивы Debian, Arch Linux, openSUSE ΠΈ NixOS.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ