обновление dnf caddy удаляет установленный пакет

Вопрос или проблема

Я установил transform-encoder через caddy addpackage github.com/caddyserver/transform-encoder (на Rocky Linux 9, если это имеет значение). Похоже, это обновляет бинарный файл caddy в /usr/bin. В любом случае, позже я сделал dnf update для системы, и установка transform-encoder теряется и должна быть переустановлена после обновления.

Есть ли какой-то способ сделать этот пакет caddy постоянным, чтобы он как-то пережил dnf update?

К вашему сведению, когда я делал оригинальный addpackage, была установлена самая новая версия caddy (2.9.1). Но я думаю, что это, вероятно, не имеет отношения к вопросу.

Вот вывод из dnf update, если это поможет:

  Running scriptlet: caddy-2.9.1-1.el9.x86_64                           112/236 
  Upgrading        : caddy-2.9.1-1.el9.x86_64                           112/236 
  Running scriptlet: caddy-2.9.1-1.el9.x86_64                           112/236 
File context for /usr/bin/caddy already defined, modifying instead
File context for /usr/share/caddy(/.*)? already defined, modifying instead
File context for /etc/caddy(/.*)? already defined, modifying instead
File context for /var/lib/caddy(/.*)? already defined, modifying instead
Port udp/80 already defined, modifying instead
Port udp/443 already defined, modifying instead
Port tcp/2019 already defined, modifying instead

Ответ или решение

Обновление системы с использованием DNF, которое приводит к удалению ранее установленных пакетов или их изменений, является распространенной проблемой для пользователей Linux. В данном случае, проблема заключается в том, что установленный модуль transform-encoder для Caddy теряется после выполнения команды dnf update. Давайте подробно разберем, почему это происходит и какие шаги можно предпринять для решения этой проблемы.

Теория

Caddy — это веб-сервер с открытым исходным кодом, известный своей простотой в установке и использовании. Caddy позволяет добавлять модули или плагины, что позволяет расширять функциональность сервера. Команда caddy addpackage, которую вы использовали для установки transform-encoder, загружает и интегрирует модуль непосредственно в двоичный файл caddy. Такое подход означает, что модуль фактически "встраивается" в исполняемый файл Caddy.

Когда вы выполняете dnf update, пакетный менеджер DNF обновляет пакеты до последней версии, замещая старые версии новыми из репозиториев. В случае Caddy, обновление пакета приводит к перезаписи двоичного файла в /usr/bin/caddy, что приводит к потере всех установленных модулей, таких как transform-encoder, которые не являются частью стандартного дистрибутива.

Пример

Предположим, вы установили Caddy версии 2.9.1 и добавили модуль transform-encoder. Исполняемый файл Caddy в директории /usr/bin был модифицирован для включения этого модуля. Однако, при выполнении dnf update, система перезаписывает файл /usr/bin/caddy новой версией Caddy 2.9.1-1.el9.x86_64 из репозитория, что приводит к удалению всех нестандартных модулей и модификаций.

Применение

Для предотвращения удаления модулей при обновлении, можно рассмотреть несколько подходов:

  1. Использование уникальной директории: Вместо использования системного пути /usr/bin/caddy, рассмотрите возможность установки Caddy в отдельную директорию, такую как /opt/caddy. Это позволит вам вручную управлять обновлениями и изменениями исполняемого файла без вмешательства пакетного менеджера.

  2. Создание пользовательских пакетов: Рассмотрите возможность создания собственного RPM-пакета, который бы включал необходимый модуль. Это позволит вам управлять обновлением Caddy и его модулей централизованно и безопасно через систему управления пакетами.

  3. Автоматизация восстановления модулей: Создайте скрипт, который автоматически переустанавливает необходимые модули после выполнения обновления системы. Этот скрипт можно запускать вручную или встраивать в процесс обновления.

  4. Изоляция в контейнере: Используйте Docker или другой контейнерный сервис для изоляции веб-сервера Caddy с установленными модулями. Контейнеризация позволяет легче управлять версиями приложений и их зависимостей.

  5. Проверка обновлений вручную: Перед выполнением dnf update, вручную проверяйте, какие пакеты будут обновлены, и временно исключайте Caddy из этого списка, добавляя его в исключения с помощью dnf versionlock.

Заключение

Проблема потери установленных модулей при обновлении системы является значительной для пользователей, добавляющих нестандартные модули к приложениям, таким как Caddy. Несмотря на то, что непосредственное решение может потребовать нескольких изменений в текущих процессах установки и обновления, понимание природы проблемы и знание альтернативных подходов позволит вам более эффективно управлять серверной инфраструктурой на базе Linux. Используя указанные методы, вы сможете создать более устойчивую и гибкую систему, способную легко адаптироваться к изменениям и обновлениям без потери функциональности.

Оцените материал
Добавить комментарий

Капча загружается...