Знание должно быть доступно!

Путь /ОС/FreeBSD

Если ты получил при обновлении:

Newer FreeBSD version for package pkg: To ignore this error set IGNORE_OSVERSION=yes 
- package: 1403000 
- running userland: 1402000

Проверь внутри jail

jexec proxy uname -U
jexec proxy freebsd-version -u
jexec proxy file /bin/sh
jexec proxy ls /usr/local

Скорее всего версии с хостовой машиной расходятся, по этому и пишет о расхождении.

Почему так вышло

Ты обновил jail раньше времени, без upgrade → часть файлов осталась от 14.2.
freebsd-update не умеет нормально чинить jail с неполным world.
Он просто говорит «14.3 уже стоит».

Как в ТВОЁМ случае обновлять jail правильно

1. Обновить userland jail через freebsd-update

freebsd-update -b /usr/local/jails/containers/<jail> fetch install

Только так.
Но это работает только при совпадении RELEASE, т.е. 14.3→14.3-pX.

Если нужно обновить RELEASE jail (14.2 → 14.3)

В classic jail freebsd-update НЕ обновляет release

Он обновляет только патчи, не делает release-upgrade как в хосте.

Поэтому правильный способ ровно такой же, как при создании jail:

Правильное обновление RELEASE для classic jail (твоя схема)

1. Скачай новый base.txz

fetch https://download.freebsd.org/releases/amd64/14.3-RELEASE/base.txz -o /tmp/base.txz

2. Останови jail

service jail stop <jail>

3. Раскатай новый world поверх старого (НЕ трогая /usr/local и /var)

tar -xpf /tmp/base.txz -C /usr/local/jails/containers/<jail> --unlink

Это обновляет весь system world, но НЕ трогает:

  • /usr/local (твои пакеты)
  • /etc (конфиги)
  • /var (данные)
  • /root
  • /home

4. Подтянуть патчи

freebsd-update -b /usr/local/jails/containers/<jail> fetch install

5. Запустить jail

service jail start <jail>

6. Обновить пакеты в jail

jexec <jail> pkg update
jexec <jail> pkg upgrade -y

Итог

Для classic jail (твоя схема):

  • PATCH обновления (p1→p5):
    freebsd-update -b jailpath fetch install

  • RELEASE обновления (14.2 → 14.3):
    → Распаковать новый base.txz поверх jail, затем freebsd-update, затем pkg upgrade.

PATCH обновления — это-маленькие обновления безопасности. Они фиксируют уязвимости или баги в библиотеке, бинарнике или системном компоненте. Устанавливаются так:

freebsd-update fetch install

PATCH обновления не меняют версию системы (например, остаётся 14.3), они добавляют суффикс pX:
14.3-RELEASE-p1
14.3-RELEASE-p2
и так далее.

RELEASE обновления - это переход на новую основную версию системы. Примеры:
14.2-RELEASE → 14.3-RELEASE
14.3-RELEASE → 14.4-RELEASE

Меняется весь system world: /bin, /lib, /usr/bin, /usr/lib, все системные утилиты и библиотеки.

На хосте обновление release делается так:

freebsd-update upgrade -r 14.3-RELEASE  
freebsd-update install

В classic jail обновление release выполняют не через upgrade, а через полный пересозданный world:
скачать base.txz нужной версии,

tar -xpf base.txz --unlink -C /путь/jail

Это кладёт новый system world, но не трогает /usr/local, /etc, /var — твои конфиги и пакеты остаются на месте.

Разница коротко:

PATCH обновления (pX):

  • только security fixes
  • маленькие изменения
  • не меняют версию
  • freebsd-update fetch install

RELEASE обновления:

  • полный world
  • много изменений
  • новая версия системы
  • хост = freebsd-update upgrade
  • jail = распаковка base.txz новой версии