В настоящий момент пользователи созданные в cl-build режиме, к примеру при установке некоторых служб не создаются в основной системе.
Это связано с тем, что файлы /etc/{group,passwd,shadow} уже изменены в слое workspace.
В качестве решения данной проблемы можно:
# вручную насоздавать новых юзеров/группы в workspace
# тупо открыть едитором файлы /etc/{group,passwd,shadow} в workspace, и явно прописать этих новых юзеров/группы (когда я с таким столкнулся, я так и сделал)
# Воспользоваться теми двумя фактами, что
- если удалить файлы /mnt/scratch/workspace/etc/{group,passwd,shadow}, то в корне будут видны аналогичные файлы из /mnt/builder
- в calculate уже есть механизм поиска созданных юзеров, и переноса их в устанавливаемую сисему.
Хоть при возникновении подобной ситуации я и воспользовался вторым методом, предлагаю внести в calculate-утилиты функционал вкрадце описанный в п.3 и подробнее расписанный ниже, и при необходимости - предлагать пользователю выполнить нужную команду, подобно тому как предлагается выполнить cl-kernel --symlink
Итак, суть моего видения этого процесса можно разделить на две части - это обнаружение лишних пользователей/группы в delta-слое (если в delta самих файлов нет, то чего-то нового ТОЧНО быть не должно). На bash это можно реализовать к примеру такой функцией:
<code class="bash">
group=
passwd=
shadow=
changet(){
for f in {group,passwd,shadow}: do
export ${f}=$(
while read x; do
x=${x%%:*}
grep -qE "^$x:[^:]*:[^:]*:[^:]*" </mnt/scratch/workspace/etc/$f || echo $x
done < /mnt/scratch/delta/etc/$f 2>/dev/null )
done
[ -n "${group}${passwd}${shadow}" ]
return $?
}
</code>
Дальше осталось просто скопировать свойства профилей, подобно тому как это происходит в утилите cl-install, удалить файлы /mnt/scratch/workspace/etc/{group,passwd,shadow} (тем самым мы получаем в корне эти файлы аналогичные /mnt/builder), и создать юзеров/группы по новой, пользуясь сохраненными свойствами юзеров.@
@
Поскольку вторая часть понятна мне не до конца (а именно - что в каком файле в кальке прописывается для создания юзеров при первой загрузке системы, и что при этой загрузке вызывается), полноценный скрипт выложить не получилось. Просьба к девелоперам дать подсказку по этому вопросу, или самим дописать этот скриптик и вложить его в sys-apps/calculate-builder.@
@
Также возможна ситуация, когда созданный для службы пользователь удаляется при удалении самой службы, но насколько мне известно, это производится не автоматически(нет в ebuild-ах механизма userdel), а админом вручную, так что в автоматической синхронизации удаляемых не вижу необходимости.