Перенос приложений при переустановке системы

install.jpg

Известно, что Calculate Linux обновляется двумя способами, первый - из ISO образа, второй - попакетно. Оба способа имеют свои плюсы и минусы. Обновление образом выполняется за считанные минуты, но после обновления не переносит доустановленный софт. Обновление попакетно выполняется заметно дольше, но состав пакетов остаётся прежним. В отличие от обновлений пакетами, обновление образом считается более безопасным, т.к. вы всегда имеете рабочий образ системы в отдельном разделе диска.

Уже на протяжении 12 лет в нашей компании десктопы сотрудников обновляются из образа. Большой сложности в доустановке ПО на компьютерах программистов не возникало, остальные ПК используют только базовый софт. Сегодня возникла потребность доустановить ПО на некотрых машинах и, чтобы не перегружать систему и не собирать модифицированный образ, мы решили добавить поддержку переноса установленных программ.

Главное, что нужно было учесть, это отсечь временные установки пакетов и изменения флагов и масок, т.е. переносить только “зафиксированные” изменения. Для этого в директориях /etc/portage/package.keywords/, /etc/portage/package.mask/, /etc/portage/package.unmask/ и /etc/portage/package.use/ был добавлен файл zz-autounmask. Имя файла выбрано не случайно, портежи сами создают файл с таким именем пытаясь исправить зависимости, при наличии пустой директории. В дальнейшем портежи продолжают работать с этим файлом, т.к. он в алфавитном порядке последний. Вместо привычного custom создаётся custom.cld, где cld - сокращение от имени дистрибутива. Этот файл как раз и будет переноситься в новую систему. Расширение cld позволяет пресечь миграцию программ, если вы например захотите установить во второй раздел другой дистрибутив, например сервер. Переносимый файл custom.cld будет использоваться так же в сетах /etc/portage/sets/ и в глобальных настройках /etc/portage/make.conf/.

В установщике cl-install начиная с версии 3.6.3 добавлена опция “-K [ON/OFF], --update-pkg [ON/OFF]”, при использовании которой в установленной системе будет сформирован скрипт обновления, который запустится во время первой загрузки после поднятия сети и выполнит обновление пакетов. Так как custom.cld прописан в списке предустановленных сетов, помимо обновления будут установлены пакеты, которые ранее использовались в предыдущей установке. Лог установки будет выводиться на tty12.

Надо сказать, что последнее время мы всё чаще и осознанней используем сет custom. Это неплохая возможность выделить из массы предустановленных пакетов те, которые необходимы для работы конкретной машины. Теперь же этот список будет мигрировать вместе с остальными базовыми настройками системы, такими как настройки сети, учётные записи пользователей и т.д.

Ревизия ближайшего обновления переименует сет custom в custom.cld, а файлы custom масок и флагов переименует в zz-autounmask и создаст пустые файлы custom.cld.

1 Like

Что с поддержкой дополнительных оверлеев?

Что с поддержкой дополнительных оверлеев?

Немного позже можно будет решить эту задачу, спасибо за напоминание. Мы планируем пересмотреть работу с оверлеями, добавить локальный оверлей. Заодно можно будет решить вопрос с миграцией.

Не понятно, переносятся ли конфиги и добавляются ли в автозагрузку сервисы перенесенных приложений.

Не понятно, переносятся ли конфиги и добавляются ли в автозагрузку сервисы перенесенных приложений.

Запуска сервисов на данный момент нет, мы планируем решить эту проблему в ближайшее время.

Во время установки выполняются пользовательские шаблоны /var/calculate/templates или /var/calculate/remote/templates. Так же будут перенесены шаблоны clt из /etc в устанавливаемую систему. Если обновление выполняется вручную, можно забэкапить выполненные настройки и восстановить их при помощи утилиты cl-backup. Описания работы утилиты пока к сожалению нет.

Если обновление выполняется вручную, можно забэкапить выполненные настройки и восстановить их при помощи утилиты cl-backup.

Утилита cl-backup идет в составе calculate-server в cds. Получается, что для переноса конфигов при обновлении css нужно или писать шаблоны или переносить конфиги руками.

У сервера есть своя утилита бэкапа, какое-то время назад она была переименована в cl-backup-server. Она бэкапит только настройки сервера выполненные утилитами.