Заморозка репозитория портов 21 июля 2026 года
Заморозка репозитория портов 21 июля 2026 года
Репозиторий портов был заморожен начиная со вторника, 21 июля 2026 года.
Нет никаких оснований полагать, что дерево портов было скомпрометировано.
Эта страница будет документировать данную заморозку.
Объявление: 22 июля 2026 года
Первое объявление было опубликовано в списке рассылки announce@.
From: Kyle Evans <kevans_at_FreeBSD.org>
Date: Wed, 22 Jul 2026 20:58:21 UTC
Вы, возможно, заметили, что репозиторий портов заморожен уже почти 24 часа на момент написания этого сообщения. Наше заявление о ситуации и дальнейших действиях приведено ниже.
В дерево портов недавно был сделан коммит бинарного файла размером 150 МБ, и в результате этого core@ принял решение о временной заморозке дерева портов для проведения очистки. Указанный коммит нарушил зеркалирование нашего дерева портов на github.com из-за жёсткого ограничения на размер файлов в 100 МБ, а также внёс в историю репозитория объект с сомнительной лицензионной чистотой.
Учитывая важность зеркалирования на github.com для нашего сообщества, мы активно предпринимаем шаги по удалению проблемных коммитов и восстановлению зеркалирования на внешние сервисы. Нет никаких оснований полагать, что дерево портов было скомпрометировано. Заморозка была полностью направлена на ограничение количества коммитов, которые потребуется переписать для приведения репозитория к корректному состоянию.
Для нас важно предоставить сообществу и конечным потребителям воспроизводимый и устойчивый путь исправления этой проблемы. Как вы хорошо знаете, исправление подобных проблем не всегда проходит так гладко, как хотелось бы.
Мы активно работаем над подготовкой инструкций, которым необходимо будет следовать существующим рабочим копиям, чтобы синхронизироваться с этими исправлениями. Для обеспечения полной прозрачности мы также предоставим процедуру проверки того, что официальные изменения в репозитории ограничены именно тем объёмом, который мы заявляем.
Мы также внедряем серверные хуки, чтобы предотвратить подобные инциденты в будущем.
Пожалуйста, следите за нашими дальнейшими обновлениями и спасибо за ваше внимание.
С уважением,
Кайл Эванс (от имени core@)
Объявление: 24 июля 2026 года
Второе объявление было опубликовано в списке рассылки announce@.
From: Kyle Evans <kevans_at_FreeBSD.org>
Date: Fri, 24 Jul 2026 17:48:16 UTC
ПРЕДЫСТОРИЯ
20 июля 2026 года в дерево портов был сделан коммит бинарного файла размером 150 МБ, что привело к сбою зеркалирования на GitHub и, возможно, на другие Git-форжи из-за жёсткого ограничения на размер файлов в 100 МБ. Кроме того, остаётся неясным, позволяет ли лицензия бинарного файла его распространение таким образом.
21 июля 2026 года core@ узнал о нарушении зеркалирования и запросил приостановку отправки изменений (push) в репозиторий портов на время оценки ситуации. В ходе обсуждений в последующие часы между участниками групп gitadm@, clusteradm@, portmgr@ и core@ был выработан предварительный план по переписыванию истории репозитория для удаления проблемного файла. При этом было согласовано ограничение, согласно которому результирующее состояние должно быть воспроизводимо третьими сторонами и не должно создавать избыточной нагрузки на конечных потребителей дерева портов.
Решение о том, что результирующее состояние должно быть воспроизводимо третьими сторонами, было принято исходя из общего мнения, что мы не должны требовать слепого доверия и что мы должны предоставить нашим пользователям и потребителям возможность следовать тем же принципам.
Хотя git rebase может легко удалить проблемные коммиты, это налагает бо́льшую нагрузку на аудит со стороны сообщества, поскольку переписываются имена коммиттеров и временные метки.
Это также затрагивает сообщества, имеющие форки дерева портов.
Предоставление механизма для повторения этой операции имеет потенциальное влияние, выходящее далеко за пределы нашего собственного сообщества, и мы благодарим вас за понимание и терпение, пока мы работали над правильным решением.
ТРЕБУЕМЫЕ ДЕЙСТВИЯ
Хеши коммитов в ветке main для коммитов после a70c5c3fd44b были изменены, что может повлиять на использование вами дерева портов.
Для всех потребителей дерева портов ожидается, что скрипт воспроизведения, ссылка на который приведена ниже, приведёт состояние вашего репозитория в соответствие с новым состоянием авторитетного репозитория, но это не единственный вариант.
Для коммиттеров и контрибьюторов: ожидающие пул-реквесты и локальные ветки необходимо перебазировать поверх новой истории. Например:
git rebase --onto f9c90a4f96f0700 0a717e9c118aa6
Где "0a717e9c118aa6" следует заменить на старый хеш коммита вышестоящего репозитория (upstream), на котором основана ваша ветка.
Патч-файлы не должны быть затронуты, поскольку переписывание было ограничено портом misc/github-copilot-cli.
Для потребителей (downstreams): рекомендуется запустить приведённый ниже скрипт воспроизведения, особенно если у вас есть локальные изменения в вашем дереве. Скрипт удалит все криптографические подписи существующих коммитов после коммита с бинарным файлом для достижения воспроизводимости. Обратите внимание, что в скрипт встроены два хеша коммитов, которые необходимо изменить, если ваша ветка содержит локальные изменения, которые могут сделать их недействительными. Инструкции по замене включены в комментарии.
ПРОЗРАЧНОСТЬ
Скрипт, использованный для переписывания истории коммитов, доступен для независимой проверки и воспроизведения результирующего состояния:
https://www.freebsd.org/news/2026-ports-freeze/ports-reset.sh
SHA256 (ports-reset.sh) = 9f954e7e229a1f3f0c452a98c433d70a0dbd265fc528bca6d082068d154536e8
Этот скрипт следует запускать внутри рабочей копии дерева портов. Обратите внимание, что он не пытается полностью удалить предыдущую версию вашей ветки.
Восстановление возможно путём получения предыдущего хеша коммита из git reflog, если локальная версия вашей ветки не имеет удалённого репозитория для восстановления.
Сборка мусора Git со временем очистит старую ветку в вашем репозитории.
ДАЛЬНЕЙШИЕ ШАГИ
Примечания к коммитам будут добавлены как к переписанным коммитам в ветке main, так и к коммитам в этом диапазоне, которые были перенесены (backported) в 2026Q3, с указанием старых и новых хешей коммитов наименее инвазивным способом.
Мы считаем, что планка для переписывания ветки с обновлениями безопасности значительно выше, и мы решили принять тот факт, что пять коммитов будут иметь некорректные сообщения, ссылающиеся на недействительные хеши коммитов при cherry-pick.
Серверные хуки внедряются во всех трёх репозиториях для предотвращения будущих инцидентов подобного рода.
Точная конфигурация ещё не полностью доработана, но предполагается, что будет установлен жёсткий верхний предел размера файлов, а также некоторые более низкие «мягкие» ограничения, для превышения которых потребуется --push-option или одобрение portmgr/srcmgr/doceng.
Будут рассмотрены отдельные хуки для проверки лицензирования бинарных артефактов, вносимых в репозиторий.
ЗАКЛЮЧЕНИЕ
Огромная благодарность всем участникам реагирования на инцидент за время, потраченное на то, чтобы обеспечить выполнение этой операции способом, поддающимся аудиту, воспроизводимым и с учётом огромного влияния как заморозки репозитория, так и предстоящего переписывания. Переписывание истории коммитов не было решением, принятым легкомысленно, но было признано, что затраченное время на правильное выполнение было наименее плохим вариантом как для проекта, так и для внешних деревьев портов, которые могут иметь свои собственные изменения, следующие за проблемными коммитами.
Особая благодарность clusteradm@ за согласие с планом переписывания истории, глядя на длинный список инфраструктуры кластера, которую необходимо будет исправить в результате.
Дерево портов будет разморожено для обычных операций в ближайшие часы, но восстановление инфраструктуры будет проводиться в течение следующей недели. Кластерные сборки пакетов не будут перезапущены немедленно, но возобновятся не позднее 26 июля 2026 года.
С уважением,
Рене Ладан (от имени portmgr@) Кайл Эванс (от имени core@)
Копия этого сообщения доступна отдельно для проверки по адресу: https://people.freebsd.org/~kevans/core/ports-freeze-final.txt.asc
Последнее изменение: 25 июля 2026 г. от Vladlen Popolitov