Как запретить обновление пакетов в Arch Linux
Кратко (TL;DR)
Если после обновления система ломается или вы просто хотите зафиксировать проверенную версию пакета, добавьте его в IgnorePkg/IgnoreGroup в /etc/pacman.conf для постоянной блокировки или используйте –ignore/–ignoregroup при однократном обновлении. Это даёт точечный контроль над обновлениями ядра, критичных библиотек и приложений.
Важно: блокировка пакетов повышает стабильность локально, но требует внимания — игнорированные пакеты не будут получать исправления безопасности автоматически.
Зачем блокировать обновления пакетов в Arch Linux
Arch Linux — дистрибутив с роллинг-релизом: пакеты попадают в репозитории сразу после релизов разработчиков. Это обеспечивает актуальность, но уменьшает время на тестирование, что увеличивает шанс регрессий. Если у вас есть проверенная стабильная версия пакета (например, рабочее ядро или критичный драйвер), стоит предотвратить её автоматическое обновление, чтобы избежать простоя системы.
Кратко о терминологии:
- Pacman — менеджер пакетов Arch (конфиг в /etc/pacman.conf).
- IgnorePkg / IgnoreGroup — параметры pacman.conf, которые запрещают обновление указанных пакетов или групп.
Постоянная блокировка пакета через pacman.conf
Файл конфигурации Pacman: /etc/pacman.conf. Откройте его редактором (в примерах используется vim):
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Сохраните файл и выйдите. Pacman по-прежнему позволит вручную установить игнорируемый пакет (pacman -S packagename) и предложит подтвердить замену, если вы решите переопределить IgnorePkg.
Пример: откат и фиксация версии
Если после обновления пакет стал причиной проблем, вы можете откатить его к предыдущей версии (например, из кеша pacman в /var/cache/pacman/pkg/) и затем добавить его в IgnorePkg, чтобы не получить сломанную версию снова.
Временное исключение при системном обновлении
Если нужно пропустить пакет только один раз, не трогая конфиг, используйте флаги командной строки pacman:
sudo pacman -Syyu --ignore=linuxНесколько пакетов через запятую:
sudo pacman -Syyu --ignore=linux,vim,nanoГруппы:
sudo pacman -Syyu --ignoregroup=kde-applicationsЧтобы обновить позже, просто выполните команду без –ignore/–ignoregroup.
Примечание: –ignore действует только для конкретного запуска pacman; он не меняет /etc/pacman.conf.
Когда блокировка может не помочь или привести к проблемам
- Зависимости: если обновлённый пакет требует более новой версии игнорируемого пакета, pacman может не разрешить обновление или предложить удалить конфликтующие пакеты.
- Безопасность: игнорирование пакета лишит вас автоматических исправлений уязвимостей.
- Совместимость: долго игнорируемые пакеты могут стать несовместимы с другими компонентами системы.
Если система использует сторонние репозитории (например, Chaotic-AUR, custom repos), учтите, что политики версий и зависимости там могут отличаться.
Альтернативные подходы
- Использовать snapshot-репозитории или локальный mirror с контролем версий, чтобы откатываться ко всему состоянию системы.
- Использовать pacman -U для установки конкретных версий пакетов из кеша (/var/cache/pacman/pkg/) или из локального архива.
- Применять контейнеризацию (Docker, Podman) для критичных сервисов, чтобы обновления хоста не влияли на рабочую среду.
- Для рабочих станций: делать бэкапы и снапшоты Btrfs/LVM перед обновлениями.
Пошаговая мини-методика для администраторов
- Оцените критичность пакета (ядро, драйвер, база данных).
- Если нужно временно пропустить — используйте –ignore при обновлении.
- Для долгосрочной фиксации — добавьте пакет в IgnorePkg/IgnoreGroup в /etc/pacman.conf.
- Документируйте изменения (что и зачем заблокировано, дата, ответственный).
- Мониторьте CVE/обновления безопасности для игнорируемых пакетов и периодически пересматривайте блокировку.
Чек-листы по ролям
Домашний пользователь:
- Знать, какие пакеты критичны (ядро, видеодрайверы).
- Использовать временное –ignore для одиночных обновлений.
- Хранить резервную копию конфигураций.
Системный администратор:
- Документировать IgnorePkg/IgnoreGroup и причину блокировки.
- Планировать тестовые обновления в staging перед rollout.
- Подписаться на уведомления безопасности для игнорируемых пакетов.
Разработчик/DevOps:
- Использовать контейнеры или VM для тестирования новых версий.
- Поддерживать локальные зеркала для отката образов.
Decision flow: когда блокировать постоянно, а когда временно
flowchart TD
A[Наблюдается проблема после обновления?] -->|Да| B{Нужен откат на время}
B -->|Да| C[Откатить пакет из кеша и временно --ignore]
B -->|Нет| D[Добавить в IgnorePkg для длительной фиксации]
A -->|Нет| E{Пакет критичен для безопасности?}
E -->|Да| F[Не блокировать — обновить и тестировать]
E -->|Нет| G[Можно временно игнорировать при обновлении]Примеры команд и полезные подсказки
- Открыть конфиг:
sudo EDITOR=vim visudo >/dev/null 2>&1 || true
sudo vim /etc/pacman.conf- Просмотреть локальные пакеты в кеше pacman:
ls -l /var/cache/pacman/pkg | grep <имя_пакета>- Установить конкретную версию пакета:
sudo pacman -U /var/cache/pacman/pkg/package-name-version.pkg.tar.zstБезопасность и соответствие (коротко)
Блокирование пакетов уменьшает удобство автоподдержки безопасности. Для серверов и критичных систем комбинируйте блокировку с мониторингом CVE и плановыми ревизиями зависимости.
Локальные пометки и совместимость
- Если вы используете AUR-пакеты, помните: AUR не управляется pacman напрямую; для AUR-обновлений используйте помощники (yay, paru) и их собственные механизмы игнорирования или фиксации версий.
- При переходе с Debian/RHEL ожидание автоматической стабилизации пакетов может вводить в заблуждение — Arch требует более активного управления зависимостями.
Рисунок: рабочая среда с терминалом и настройкой pacman — пример, где пользователю может понадобиться зафиксировать пакет.
Рисунок: фрагмент /etc/pacman.conf с параметрами IgnorePkg и IgnoreGroup.
Краткое резюме
- Для постоянной блокировки: отредактируйте /etc/pacman.conf и добавьте IgnorePkg/IgnoreGroup.
- Для однократного исключения: используйте –ignore или –ignoregroup в команде pacman.
- Документируйте причины блокировки и следите за обновлениями безопасности для игнорируемых пакетов.
Ключевой совет: блокируйте только тогда, когда это действительно нужно, и регулярно пересматривайте решения, чтобы не пропустить важные исправления.
Глоссарий (одной строкой)
- pacman: стандартный менеджер пакетов в Arch Linux;
- AUR: Arch User Repository — сообщественный репозиторий пакетов;
- IgnorePkg/IgnoreGroup: опции pacman.conf для предотвращения обновлений пакетов/групп.
Похожие материалы
Как перенести данные на iPhone 13
Защита секретов в Git: лучшие практики
Twitch Watch Party с VPN: настройка и проблемы
Изменить стиль часов на экране блокировки Samsung
Как запустить Fortnite на неподдерживаемой Windows