Назад | Перейти на главную страницу

Как мне обновить систему FreeBSD (и порты) в неинтерактивном режиме?

По сути, я ищу полностью тихую, неинтерактивную версию

freebsd-update fetch
freebsd-update install

и

portsnap fetch update

В FreeBSD-10.2 есть новая опция, позволяющая это сделать:

freebsd-update fetch --not-running-from-cron

На странице руководства:

 --not-running-from-cron
        Force freebsd-update fetch to proceed when there is no
        controlling tty.  This is for use by automated scripts and
        orchestration tools.  Please do not run freebsd-update
        fetch from crontab or similar using this flag, see:
        freebsd-update cron

В FreeBSD 10.0R и новее установите переменную среды PAGER в freebsd-update.

env PAGER=cat freebsd-update fetch
freebsd-update install

Для portnap (8) во FreeBSD 10.0R и новее поведение по умолчанию, а именно без --interactive вариант, не интерактивный.

portsnap fetch update

Для FreeBSD <10 работает следующее:

Позволять freebsd-update запустить выборку без stdin прикреплен к терминалу:

sed 's/\[ ! -t 0 \]/false/' /usr/sbin/freebsd-update > /tmp/freebsd-update
chmod +x /tmp/freebsd-update

Позволять portsnap запустить выборку без stdin прикреплен к терминалу:

sed 's/\[ ! -t 0 \]/false/' /usr/sbin/portsnap > /tmp/portsnap
chmod +x /tmp/portsnap

Кредиты: ви


Для FreeBSD 10+ предпочтительнее решение из ответа @uchida ниже!

Слепая установка обновлений (даже freebsd-update обновления) может быть плохой вещью: один вариант в rc.conf изменяется, и внезапно на вашем компьютере больше нет демона SSH.

Точно так же вы, вероятно, не захотите слепо устанавливать все доступные обновления порта через portsnap / portupgrade -a - вы можете сделать резкий скачок основного номера версии и сломать вселенную, или у вас может быть просто порт с новыми параметрами конфигурации, который необходимость (вы можете заставить порты просто принимать любые значения по умолчанию, но иногда это не то, что вам нужно).


В Лучший способ сделать это - использовать инструмент управления конфигурацией, например Кукольный или радость для развертывания ваших изменений.
Создайте шаблон компьютера на основе блока, который вы успешно обновили и протестировали, а затем разверните его в остальной среде. Это гарантирует, что вы продвигаете рабочую конфигурацию системы и что вам нужно выполнить ручные шаги только один раз (на машине, с которой вы создаете шаблон).

Для FreeBSD версии> 11

freebsd-update - это скрипт, в котором есть «Функция для запроса пользователя, все ли в порядке». Функция:

continuep ()

В этой функции достаточно прокомментировать все, кроме строки с

возврат 0

После этого функция возвращает положительный ответ на вопрос «да / нет».

Важный! Помните, что это НЕ рекомендуется и делайте это только на свой СОБСТВЕННЫЙ риск!

# /tmp/freebsd-update -r 11.1-RELEASE upgrade ; while [ $? -eq 1 ] ; do sleep 3; /tmp/freebsd-update -r 11.1-RELEASE upgrade ; done