- Вопрос или проблема
- Ответ или решение
- Вопрос 1: Необходимы ли дополнительные файлы, которые нужно обновить или слить после обновления версии Ubuntu, помимо ".dpkg-dist" и ".ucf-dist"?
- Вопрос 2: Что такое файлы ".ucf-dist" и какие файлы конфигурации они сопоставляются?
- Вопрос 3: Советы по слиянию старых версий конфигурационных файлов с версиями пакета?
Вопрос или проблема
Некоторое время назад я выполнил обновление версии с 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 без каких-либо проблем совместимости.
Для этого мне нужно ответить на три вопроса:
-
Есть ли файлы, которые мне нужно объединить/обновить, которые поставщик пакета сохранил на моем сервере во время обновления, кроме файлов “
.dpkg-dist
” и “.ucf-dist
“? -
Что именно представляют собой файлы
.ucf-dist
, и к каким старым конфигурационным файлам они соответствуют? Например, я знаю, что/etc/systemd/resolved.conf.dpkg-dist
– это версия от системного администратора для/etc/systemd/resolved.conf
. Но чем соответствует файл.ucf-dist
? -
Есть ли у вас другие советы или рекомендации, о которых я должен знать, когда объединяю старые версии своих конфигурационных файлов с версиями от поставщиков пакетов? Любые предложения или советы по завершению моего обновления версии будут очень признательны!
Спасибо
В общем, когда пакеты обновляются/переустанавливаются/понижаются, все файлы, принадлежащие пакету, заменяются, кроме конфигурационных файлов (“conffiles”). Конфигурационные файлы получают специальное обращение по политике. Конфигурационные файлы могут предоставляться пакетами в двух формах:
- В виде обычного содержимого пакета, установленного напрямую в правильное место с помощью
dpkg
, как и большинство файлов. - Сгенерированные в скриптах администраторов, о которых
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". В частности, следует обратить внимание на следующее:
-
Файлы с суффиксом ".dpkg-old": Эти файлы создаются, когда вы выбираете обновление конфигурационного файла и хотите сохранить старую версию при установке новой. Их следует проверить и оценить необходимость слияния изменений.
-
Пользовательские конфигурационные файлы: Каждое приложение может иметь свои специфические конфигурационные файлы, которые могут быть не включены в систему управления версиями. Убедитесь, что вы проверили все файлы в
/etc/
, так как они могут содержать важные для вас настройки, которые могли быть изменены. -
Логи изменения конфигурации: Некоторые пакеты дополнительно могут сохранять файлы логов изменений (например, с расширением
.log
или.backup
), которые также могут потребовать проверки на предмет совместимости с новой версией. -
Файлы в директориях приложений: Обратите внимание на файлы в пользовательских директориях проектов, которые не являются частью стандартного процесса установки пакета. Например, в приложениях с открытым исходным кодом могут быть свои конфигурации.
Вопрос 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: Советы по слиянию старых версий конфигурационных файлов с версиями пакета?
-
Регулярное резервное копирование: Перед слиянием важно создать резервные копии всех конфигурационных файлов. Это позволит вернуться к исходным данным в случае ошибок.
-
Используйте инструменты для слияния: Программы, такие как
meld
,diff
, или встроенные в текстовые редакторы инструменты для сравнения, могут значительно ускорить процесс сопоставления и слияния изменений. -
Проверяйте каждый файл вручную: Не стоит доверять автоматизированным процессам. Обратите внимание на каждую конфигурацию и определите, какие изменения нужны для вашего окружения.
-
Документация изменений: Ведите документацию о том, какие изменения вы внесли, чтобы избежать путаницы при будущих обновлениях.
-
Тестирование: После слияния изменений проверьте конфигурацию на тестовом сервере, прежде чем внедрять её в производственную среду.
Следуя приведенным выше рекомендациям, вы сможете успешно управлять изменениями конфигурационных файлов и обеспечить совместимость с новыми версиями Ubuntu.