Какие файлы “версии поддерживающих” необходимо вручную обновить или слить после обновления версии Ubuntu, кроме файлов “.dpkg-dist” и “.ucf-dist”?

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

Некоторое время назад я выполнил обновление версии с Ubuntu Server 20.04 LTS до Ubuntu Server 22.04 LTS.

Во время установки, когда обновление предложило мне следующие вопросы:

Файл конфигурации '/etc/foo/bar.list'
 ==> Изменен (вами или скриптом) с момента установки.
 ==> Поставщик пакета выпустил обновленную версию.
   Что вы хотите с этим сделать? Ваши варианты:
    Y или I  : установить версию от поставщика пакета
    N или O  : оставить вашу текущую установленную версию
      D     : показать различия между версиями
      Z     : начать оболочку для изучения ситуации
 Действие по умолчанию - сохранить вашу текущую версию.
*** defaults.list (Y/I/N/O/D/Z) [по умолчанию=N] ?

Я ВСЕГДА выбирал “N”, чтобы сохранить свою текущую версию измененного файла, чтобы гарантировать совместимость.

Похоже, что после сохранения моей текущей версии с “N” обновление Ubuntu также добавляет версию от поставщика пакетов с другим расширением файла в ту же папку, что и оригинальный (мой) файл.

Похоже, что НОВЫЕ версии файлов от поставщиков пакетов Ubuntu имеют расширения файлов .dpkg-dist и .ucf-dist.

Теперь я хотел бы объединить все свои старые файлы с новыми версиями файлов от поставщика пакетов, чтобы я снова мог выполнить обновление до Ubuntu 24.04 LTS без каких-либо проблем совместимости.

Для этого мне нужно ответить на три вопроса:

  1. Есть ли файлы, которые мне нужно объединить/обновить, которые поставщик пакета сохранил на моем сервере во время обновления, кроме файлов “.dpkg-dist” и “.ucf-dist“?

  2. Что именно представляют собой файлы .ucf-dist, и к каким старым конфигурационным файлам они соответствуют? Например, я знаю, что /etc/systemd/resolved.conf.dpkg-dist – это версия от системного администратора для /etc/systemd/resolved.conf. Но чем соответствует файл .ucf-dist?

  3. Есть ли у вас другие советы или рекомендации, о которых я должен знать, когда объединяю старые версии своих конфигурационных файлов с версиями от поставщиков пакетов? Любые предложения или советы по завершению моего обновления версии будут очень признательны!

Спасибо

В общем, когда пакеты обновляются/переустанавливаются/понижаются, все файлы, принадлежащие пакету, заменяются, кроме конфигурационных файлов (“conffiles”). Конфигурационные файлы получают специальное обращение по политике. Конфигурационные файлы могут предоставляться пакетами в двух формах:

  1. В виде обычного содержимого пакета, установленного напрямую в правильное место с помощью dpkg, как и большинство файлов.
  2. Сгенерированные в скриптах администраторов, о которых dpkg не имеет прямого представления.

Для первого случая dpkg может обнаружить, когда конфигурационные файлы изменены (потому что у него есть хэши для этих файлов) и может спросить пользователя, что делать. В зависимости от вашего ответа, вы получите файлы .dpkg-{dist,old}. Однако для второго случая dpkg не может знать, какими должны быть файлы, так как они генерируются скриптами. Поэтому вместо этого скрипты пакета могут использовать утилиту ucf. Из мануала:

Эта утилита предоставляет средство для запроса у пользователя, следует ли принимать новые версии
конфигурационных файлов, предоставленных поставщиком пакета, с различными эвристиками, предназначенными
для минимизации времени взаимодействия. Она использует debconf для взаимодействия с пользователем в соответствии с политикой Debian. [...]

Этот скрипт пытается обеспечить обращение с конфигурационными файлами, установленными в /etc, которые не
входят в состав Debian-пакета, но обрабатываются вместо этого постинсталляционным скриптом. Политика Debian утверждает,
что файлы в /etc, которые являются конфигурационными файлами, должны сохранять изменения пользователя, 
и это правило также распространяется на файлы, обрабатываемые скриптами администраторов. С помощью ucf можно экспортировать набор 
конфигурационных файлов по умолчанию в /usr (/usr/share/<pkg> - хорошее место), и
поддерживать файлы в /etc, сохраняя изменения пользователей и
в целом предоставляя те же возможности при обновлении, которые обычно предоставляет dpkg для "conffiles".

А для файлов .ucf-*:

В процессе операций, работая с конфигурационными файлами, ucf дополнительно
создает копии версий соответствующего конфигурационного файла. Например, файл с
суффиксом ucf-old содержит старую версию конфигурационного файла, замененного ucf. Кроме того,
могут быть созданы копии конфигурационного файла с суффиксами ucf-new и ucf-dist; 
скрипты администраторов должны учитывать возможность удаления копий конфигурационного файла с 
этими расширениями при удалении пакета.

Если ucf следует той же конвенции, что и dpkg, то файлы .ucf-new будут новыми версиями конфигурационных файлов, временно размещенными рядом с текущей версией, пока не будет определено следующее действие, и .ucf-dist будут новыми версиями конфигурационных файлов, для которых вы решили сохранить текущую версию.

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

Вопрос 1: Необходимы ли дополнительные файлы, которые нужно обновить или слить после обновления версии Ubuntu, помимо ".dpkg-dist" и ".ucf-dist"?

После обновления Ubuntu могут возникнуть и другие файлы конфигурации, которые требуют внимания помимо ".dpkg-dist" и ".ucf-dist". В частности, следует обратить внимание на следующее:

  1. Файлы с суффиксом ".dpkg-old": Эти файлы создаются, когда вы выбираете обновление конфигурационного файла и хотите сохранить старую версию при установке новой. Их следует проверить и оценить необходимость слияния изменений.

  2. Пользовательские конфигурационные файлы: Каждое приложение может иметь свои специфические конфигурационные файлы, которые могут быть не включены в систему управления версиями. Убедитесь, что вы проверили все файлы в /etc/, так как они могут содержать важные для вас настройки, которые могли быть изменены.

  3. Логи изменения конфигурации: Некоторые пакеты дополнительно могут сохранять файлы логов изменений (например, с расширением .log или .backup), которые также могут потребовать проверки на предмет совместимости с новой версией.

  4. Файлы в директориях приложений: Обратите внимание на файлы в пользовательских директориях проектов, которые не являются частью стандартного процесса установки пакета. Например, в приложениях с открытым исходным кодом могут быть свои конфигурации.

Вопрос 2: Что такое файлы ".ucf-dist" и какие файлы конфигурации они сопоставляются?

Файлы с расширением ".ucf-dist" создает утилита ucf (update configuration files), которая используется для управления сохранением конфигурационных данных при установке пакетов. В отличие от dpkg, ucf применяется к файлам, которые не контролируются в стандартном процессе управления пакетами.

Файлы ".ucf-dist" являются сохраненными версиями новых конфигурационных файлов, предоставленных пакетом. Пример использования:

  • Если файл /etc/foo.conf модифицируется и утилита ucf устанавливает новый файл, то старый будет сохранен как /etc/foo.conf.ucf-dist.

Таким образом, если вы видите файл с расширением ".ucf-dist", это означает, что он представляет собой новую версию конфигурации, которая предлагается для слияния с вашей версией.

Вопрос 3: Советы по слиянию старых версий конфигурационных файлов с версиями пакета?

  1. Регулярное резервное копирование: Перед слиянием важно создать резервные копии всех конфигурационных файлов. Это позволит вернуться к исходным данным в случае ошибок.

  2. Используйте инструменты для слияния: Программы, такие как meld, diff, или встроенные в текстовые редакторы инструменты для сравнения, могут значительно ускорить процесс сопоставления и слияния изменений.

  3. Проверяйте каждый файл вручную: Не стоит доверять автоматизированным процессам. Обратите внимание на каждую конфигурацию и определите, какие изменения нужны для вашего окружения.

  4. Документация изменений: Ведите документацию о том, какие изменения вы внесли, чтобы избежать путаницы при будущих обновлениях.

  5. Тестирование: После слияния изменений проверьте конфигурацию на тестовом сервере, прежде чем внедрять её в производственную среду.

Следуя приведенным выше рекомендациям, вы сможете успешно управлять изменениями конфигурационных файлов и обеспечить совместимость с новыми версиями Ubuntu.

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

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