Известно, что 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.