Ошибка failure running script /usr/share/proxmox-ve/pve-apt-hook появляется при выполнении apt update или apt upgrade в Proxmox VE и означает, что штатный хук обновлений завершился с ненулевым кодом возврата, из-за чего менеджер пакетов прерывает работу. Скрипт pve-apt-hook — это защитный механизм Proxmox: он проверяет конфигурацию репозиториев и предупреждает администратора о потенциально опасных действиях вроде apt dist-upgrade вместо рекомендованного сценария обновления. Когда сам хук падает, обновления системы блокируются полностью.

Типичные причины сбоя — повреждённый или изменённый файл хука, нехватка места в корневом разделе, ошибки интерпретатора, неверные права доступа или проблемы с подписанными репозиториями. Ниже разберём, как локализовать источник проблемы и восстановить нормальную работу apt без переустановки гипервизора.

Что делает скрипт pve-apt-hook и почему он важен

Файл /usr/share/proxmox-ve/pve-apt-hook вызывается системой управления пакетами через механизм APT::Update::Pre-Invoke или аналогичные хуки, прописанные в конфигурации apt. Его задача — проверить, какие команды и репозитории используются, и предотвратить типичные ошибки администрирования, которые могут вывести узел кластера из строя.

Хук также отслеживает ситуацию с подписочными репозиториями pve-enterprise: если сервер без активной подписки использует enterprise-репозиторий, скрипт выводит предупреждение. Именно поэтому полное отключение хука — плохая практика: вместе с «мешающей» ошибкой вы потеряете защитные проверки.

💡

Скрипт pve-apt-hook — защитный механизм Proxmox. Цель — починить его работу, а не удалить хук из системы.

Диагностика: как найти первопричину сбоя

Первое действие — запустить обновление с подробным выводом и внимательно прочитать строки, идущие перед сообщением об ошибке. Обычно там содержится конкретная причина: текст ошибки интерпретатора, сообщение о нехватке места или отказ в доступе.

apt update 2>&1 | tee /tmp/apt-error.log

Далее проверьте базовые вещи, которые чаще всего ломают хук:

  • 🔍 Свободное место в корневом разделе: df -h / — при заполненном диске скрипты и apt падают первыми.
  • 📄 Права на файл хука: ls -l /usr/share/proxmox-ve/pve-apt-hook — файл должен принадлежать root и быть исполняемым.
  • 🧩 Целостность пакета: dpkg -S /usr/share/proxmox-ve/pve-apt-hook покажет, какому пакету принадлежит файл.
  • 🌐 Доступность репозиториев: сообщения об ошибках 401/403 или недоступных зеркалах в выводе apt.

Запустите хук вручную, чтобы увидеть его собственный вывод без обёртки apt: sh -x /usr/share/proxmox-ve/pve-apt-hook. Трассировка покажет, на какой строке происходит сбой — это самый быстрый способ локализовать проблему.

📊 На каком этапе у вас возникла ошибка pve-apt-hook?
При apt update
При apt upgrade / dist-upgrade
После добавления стороннего репозитория
После переполнения диска

Типичные причины и способы устранения

Ниже — основные сценарии, при которых возникает сообщение «failure running script». Действуйте последовательно, от простого к сложному.

ПричинаКак проверитьРешение
Переполнен корневой разделdf -h /Очистить старые ядра, логи, кэш apt
Повреждён файл хукаdpkg -V proxmox-veПереустановить пакет proxmox-ve
Неверные права доступаls -l на файлchmod 755, владелец root:root
Ошибки репозиториевВывод apt updateИсправить списки в /etc/apt/sources.list.d/
Конфликт конфигурации aptapt-config dump | grep -i hookИсправить файлы в /etc/apt/apt.conf.d/

Если диск заполнен, начните с безопасной очистки: apt clean удалит кэш пакетов, а journalctl --vacuum-size=100M уменьшит журналы systemd. После этого повторите apt update — во многих случаях этого достаточно.

⚠️ Внимание: не удаляйте файл pve-apt-hook вручную и не очищайте каталог /usr/share/proxmox-ve/ — вместе с хуком можно потерять служебные компоненты Proxmox, и восстановление станет заметно сложнее.

Восстановление повреждённого хука

Когда проверка dpkg -V показывает, что файл изменён или повреждён, корректный путь — переустановить пакет, которому он принадлежит. Сначала определите пакет, затем выполните переустановку:

apt install --reinstall proxmox-ve

Если сам apt не работает из-за падающего хука, возникает замкнутый круг. В этом случае можно временно обойти хук, указав пустую команду вместо него, выполнить переустановку и сразу вернуть конфигурацию обратно. Любые такие обходы должны быть строго временными.

☑️ Чек-лист восстановления pve-apt-hook

Выполнено: 0 / 5
💡

Перед любыми правками сделайте резервную копию: cp /usr/share/proxmox-ve/pve-apt-hook /root/pve-apt-hook.bak — откат займёт секунды.

Проблемы с репозиториями как источник ошибки

Нередко хук завершается с ошибкой из-за некорректных источников пакетов: недоступное зеркало, enterprise-репозиторий без подписки, устаревшие записи после миграции на новую версию Proxmox. Проверьте содержимое /etc/apt/sources.list и файлов в /etc/apt/sources.list.d/.

Для серверов без подписки предусмотрен репозиторий pve-no-subscription. Строки для enterprise-репозитория в этом случае следует закомментировать, а вместо них активировать публичный источник. Точный формат строк зависит от версии Proxmox VE и кодового имени релиза Debian, на котором она основана, — сверяйтесь с официальной документацией своей версии, так как записи для разных поколений отличаются.

⚠️ Внимание: не копируйте строки репозиториев из чужих инструкций без проверки версии — смешивание источников от разных выпусков Debian способно привести к частичному обновлению системы и неработающему гипервизору.

Как временно отключить хук для аварийного восстановления

Создайте файл /etc/apt/apt.conf.d/99-disable-hook с директивой, отменяющей вызов pve-apt-hook, выполните необходимые операции с пакетами, затем обязательно удалите этот файл и проверьте, что apt-config dump больше не показывает переопределение. Оставлять хук отключённым нельзя — это снимает защиту от ошибочных обновлений.

Профилактика: как не столкнуться с ошибкой снова

Большинство повторных сбоев связано с теми же факторами: переполнение диска, ручные правки системных файлов и «замороженные» репозитории. Держите в корневом разделе запас свободного места, регулярно очищайте старые ядра через apt autoremove и не редактируйте файлы, принадлежащие пакетам, — свои скрипты размещайте отдельно.

Перед мажорным обновлением Proxmox используйте официальный скрипт-проверяльщик (например, pve8to9 для соответствующего перехода — имя зависит от версий), который заранее выявляет конфликты репозиториев и конфигурации. Это заметно снижает риск того, что apt и его хуки сломаются в середине процесса.

💡

Здоровая связка apt + pve-apt-hook = свободное место на диске, корректные репозитории и нетронутые системные файлы пакетов.

Частые вопросы

Можно ли просто удалить pve-apt-hook, чтобы ошибка исчезла?

Технически apt заработает, но это плохое решение: хук защищает от опасных операций с пакетами и предупреждает о проблемах с репозиториями. Правильный подход — найти и устранить причину сбоя, а при повреждении файла переустановить пакет proxmox-ve.

Почему ошибка появилась сразу после переполнения диска?

При заполненном разделе apt и скрипты не могут создавать временные файлы и записывать состояние, поэтому хук завершается аварийно. Освободите место (кэш apt, журналы, старые ядра) и повторите обновление — обычно ошибка уходит без дополнительных действий.

Как понять, что файл хука повреждён, а не просто ругается на репозитории?

Выполните dpkg -V proxmox-ve: если файл изменён относительно пакетной версии, утилита покажет его в выводе. Дополнительно запуск sh -x /usr/share/proxmox-ve/pve-apt-hook покажет синтаксические ошибки или отсутствующие зависимости прямо в трассировке.

Блокирует ли эта ошибка работу виртуальных машин?

Нет, уже запущенные ВМ и контейнеры продолжают работать. Страдает только управление пакетами: вы не сможете обновлять систему и устанавливать ПО, пока проблема с хуком не будет устранена.

Нужно ли перезагружать сервер после исправления?

Для самого хука перезагрузка не требуется — достаточно, чтобы apt update завершился без ошибок. Перезагрузка может понадобиться только если в ходе восстановления обновлялись ядро или ключевые компоненты гипервизора.