Ошибка 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. Трассировка покажет, на какой строке происходит сбой — это самый быстрый способ локализовать проблему.
Типичные причины и способы устранения
Ниже — основные сценарии, при которых возникает сообщение «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/ |
| Конфликт конфигурации apt | apt-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
Перед любыми правками сделайте резервную копию: 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 завершился без ошибок. Перезагрузка может понадобиться только если в ходе восстановления обновлялись ядро или ключевые компоненты гипервизора.