Как предотвратить обновление пакетов в Arch Linux
Зачем блокировать обновления пакетов в Arch Linux
Arch Linux — это дистрибутив с моделью rolling release: пакеты обновляются быстро после выхода новой версии. Это даёт свежие версии программ, но увеличивает вероятность попадания в систему плохо проверённого обновления. Если у вас есть версия пакета, которая стабильна и совместима с вашей системой, имеет смысл зафиксировать её, чтобы избежать неожиданного простоя.
Коротко о терминах:
- Rolling release — модель распространения обновлений, где пакеты приходят непрерывно.
- IgnorePkg и IgnoreGroup — параметры в конфигурации pacman, которые запрещают обновление указанных пакетов или групп.
Основной способ: редактирование /etc/pacman.conf
Файл конфигурации pacman управляет поведением пакетного менеджера. Чтобы навсегда запретить обновления конкретного пакета, откройте файл и добавьте пакет в IgnorePkg.
Откройте файл любым редактором:
sudo vim /etc/pacman.confНайдите участок с комментарием, похожим на строку: “Pacman won’t upgrade packages listed in IgnorePkg and members of IgnoreGroup.” Затем раскомментируйте и отредактируйте строку IgnorePkg.
Пример для одного пакета:
IgnorePkg = nanoЧтобы игнорировать несколько пакетов, перечислите их через пробел:
IgnorePkg = nano vim linuxЭто предотвратит обновление nano, vim и текущего ядра linux. Сохраните файл и выйдите из редактора.
Для игнорирования целой группы пакетов используйте IgnoreGroup:
IgnoreGroup = kde-applicationsЕсли вам потребуется снять блокировку, просто удалите соответствующие имена из IgnorePkg и IgnoreGroup и сохраните файл.
Важно: если вы вручную попытаетесь установить пакет через pacman -S имя_пакета, pacman предупредит, что пакет находится в IgnorePkg и спросит, хотите ли вы принудительно обновить его. Вы всегда можете временно обойти игнорирование в интерактивном режиме.
Временное исключение пакета при обновлении системы
Если нужно пропустить пакет лишь раз, используйте флаги командной строки pacman без изменения конфигурации.
Пример, чтобы пропустить обновление ядра при полном обновлении системы:
sudo pacman -Syyu --ignore=linuxЧтобы игнорировать несколько пакетов, укажите их через запятую:
sudo pacman -Syyu --ignore=linux,vim,nanoДля групп пакетов существует аналогичный флаг –ignoregroup:
sudo pacman -Syyu --ignoregroup=kde-applicationsЧтобы позднее обновить пакет, просто выполните команду без флагов –ignore или –ignoregroup.
Что делать, если пакет уже сломал систему
Если обновление привело к проблемам, чаще всего полезно выполнить откат на предыдущую версию пакета и затем заблокировать его.
Варианты действий:
- Установить предыдущую версию из кеша pacman, если пакет ещё есть в /var/cache/pacman/pkg:
sudo pacman -U /var/cache/pacman/pkg/имя-пакета-версия.pkg.tar.zst - Использовать скрипт или утилиту downgrade из AUR для поиска и установки старых версий.
- При необходимости собрать пакет из PKGBUILD с нужной версией.
После отката добавьте пакет в IgnorePkg, чтобы обновление не повторилось неожиданно.
Быстрый справочник команд
# Открыть конфиг pacman
sudo vim /etc/pacman.conf
# Временно пропустить пакет при полном обновлении
sudo pacman -Syyu --ignore=linux,vim
# Принудительно установить пакет из кеша
sudo pacman -U /var/cache/pacman/pkg/имя-пакета-версия.pkg.tar.zst
# Найти строки Ignore в конфиге
grep -E "^Ignore" /etc/pacman.confАльтернативные подходы и когда они применимы
- Временное игнорирование (–ignore) — подходит для единичных сеансов обновления и быстрых исключений.
- Редактирование pacman.conf (IgnorePkg/IgnoreGroup) — подходит для долгосрочной стабилизации критичных пакетов.
- Использование кеша /var/cache/pacman/pkg и pacman -U или AUR-утилит для отката — когда нужно вернуть рабочую версию.
Когда этот подход не поможет:
- Если проблема ядра или драйвера требует патча, а не отката; игнорирование лишь отсрочит решение.
- Если пакет имеет зависимости, которые требуют обновления — игнорирование может вызвать конфликты при установке других пакетов.
Ментальные модели и плоскости принятия решения
- Rolling release = быстрота обновлений + риск.
- IgnorePkg = «заморозка» пакета на вашей проверенной версии.
- –ignore = «пропустить на один раз», без долговременных изменений.
Решение принято по простой эвристике:
- Если пакет критичен для работы системы и новая версия вызывает сбои — используйте IgnorePkg.
- Если обновление одноразовое или экспериментальное — используйте –ignore.
Роли и контрольные списки
Для обычного пользователя:
- Оценить, мешает ли обновление вам сейчас.
- Использовать –ignore при необходимости.
Для системного администратора:
- Добавить критичные пакеты в IgnorePkg на всех серверах после тестирования.
- Документировать причины блокировки и план по обновлению.
Для разработчика/тестировщика:
- Отслеживать баги в upstream и планировать обновление после исправления.
- Использовать тестовую машину для приёма обновлений прежде чем менять продакшен.
Шаблон принятия решения (Mermaid)
flowchart TD
A[Обновление доступно] --> B{Нужна ли новая версия?}
B -- Да --> C[Обновить]
B -- Нет --> D{Риск для системы?}
D -- Высокий --> E[Добавить в IgnorePkg]
D -- Низкий --> F[Обновить с мониторингом]
E --> G[Документировать причину]
C --> H[Мониторить]
F --> HКритерии приёмки
- Пакет больше не появляется в списке пакетов для автоматического обновления при pacman -Syu.
- При попытке установить пакет вручную pacman предупреждает об IgnorePkg и спрашивает подтверждение.
- При удалении пакета из IgnorePkg обновления снова применяются.
Часто задаваемые вопросы
Как временно обновить пакет, который стоит в IgnorePkg?
Попробуйте выполнить sudo pacman -S имя-пакета: pacman спросит, хотите ли вы принудительно обновить пакет, несмотря на IgnorePkg. Также можно временно удалить имя из IgnorePkg, выполнить обновление и вернуть строку обратно.
Как узнать, какие пакеты сейчас игнорируются?
Выполните:
grep -E "^Ignore" /etc/pacman.confЭто покажет строчки IgnorePkg и IgnoreGroup из конфигурации.
Как откатить пакет до предыдущей версии?
Проверьте наличие нужного пакета в кеше /var/cache/pacman/pkg и установите его через pacman -U. Если в кеше нет пакета, рассмотрите утилиту downgrade из AUR или сборку из PKGBUILD.
Итог и рекомендации
Блокировка обновлений — простой и эффективный инструмент для сохранения стабильности в Arch Linux. Используйте IgnorePkg и IgnoreGroup для долгосрочной фиксации версий и –ignore/–ignoregroup для разовых исключений. Документируйте причины и план обновления, чтобы в будущем вернуть пакет в актуальное состояние после тестирования.
Important: регулярно проверяйте обновления безопасности и совместимость зависимостей — блокировка пакета не должна служить заменой поддержке и мониторингу.
Короткая шпаргалка:
- Для постоянного запрета — редактируйте /etc/pacman.conf и добавьте IgnorePkg/IgnoreGroup.
- Для разового пропуска — используйте –ignore и –ignoregroup.
- Для отката — используйте кеш pacman или утилиты для старых пакетов.
Похожие материалы
Разбить диск в Windows 10 через DiskPart
Контекстные менеджеры в Python — руководство
Добавить фото и видео в Highlights без спама
Отключить Firefox View — как убрать вкладку
Подмена местоположения iPhone/iPad — AnyGo