Сначала запустите /usr/sbin/freebsd-update.fixed fetch
Poudriere, вероятно, должен проверить, обнаружил ли freebsd-update какие-либо обновления, прежде чем сообщать ему об установке (возможно, несуществующих) обновлений, чтобы не запутать пользователей приведенным выше сообщением.
~ / git / poudriere # grep 'Run. * first' `which freebsd-update` echo "Сначала запустите" $ 0 install "." echo "Сначала выполните '$ 0 fetch'."
Это исходит от freebsd-update
.
Без дополнительного контекста в отчете я не уверен, где это показано и при каких условиях.
Проблема в том, что jail.sh запускает /usr/sbin/freebsd-update.fixed fetch install
. Если fetch
обнаруживает, что обновления не требуются (например, это новый выпуск, в котором еще не было рекомендаций по безопасности), то install
выводит сбивающее с толку сообщение.
Решение состоит в том, чтобы запустить /usr/sbin/freebsd-update.fixed fetch
, проверить, были ли получены какие-либо обновления, а затем запустить /usr/sbin/freebsd-update.fixed install
.
Как определить, были ли получены обновления?
Проверьте, является ли /var/db/freebsd-update/f465c3739385890c221dff1a05e578c6cae0d0430e46996d319db7439f884336-install
символической ссылкой.
Я бы предпочел не делать такого нарушения слоя и не делать Poudriere зависимым от внутренних файлов freebsd-update, подобных этому. Вместо этого я просто выведу сообщение (как это делается с другим кодом, например, с проверками tty).
Если Poudriere может определить, была ли выборка только что выполнена, то почему freebsd-update выводит сообщение?
почему freebsd-update выводит сообщение
Потому что freebsd-update fetch install
является синонимом freebsd-update fetch; freebsd-update install
.
Правильно, но вы говорите мне, что poudriere может определять, были ли только что получены обновления, поэтому freebsd-update install
должен иметь возможность печатать бессмысленное сообщение, если еще ничего не было получено. Простое сравнение mtime будет работать в этом случае, как мы делаем с pkg update
, показывая только сообщение после того, как последняя выборка является устаревшим определенным периодом времени.
Да, вероятно, с этим справится freebsd-update. Причина, по которой я не сделал этого изначально, заключается в том, что я не хотел побуждать людей слепо скачивать и устанавливать обновления.
Но на этом этапе, даже если я исправлю freebsd-update, poudriere будет вызывать старый код freebsd-update в течение нескольких лет, поэтому обучение poudriere удалению этого избавит от некоторой путаницы.
Самый полезный комментарий
Да, вероятно, с этим справится freebsd-update. Причина, по которой я не сделал этого изначально, заключается в том, что я не хотел побуждать людей слепо скачивать и устанавливать обновления.
Но на этом этапе, даже если я исправлю freebsd-update, poudriere будет вызывать старый код freebsd-update в течение нескольких лет, поэтому обучение poudriere удалению этого избавит от некоторой путаницы.