https://github.com/pfs-utils/pfs-utils-cliЕсть идея. Предлагаю обмозговать.
Вот так приблизительно может выполняться.
chroot2pfs -f -o nano.xzm --command urpmi nano пакет в модуль в росе # работает
chroot2pfs -f -o nano --command urpmi nano пакет в каталог
chroot2pfs -f -o nano.pfs --command pacman -S nano пакет в модуль в PRA # работает
chroot2pfs -o module.xzm --command urpmi nano && ln -s /usr/bin/nano /bin/nano # не проверено
chroot2pfs -o users.xzm --command adduser www_data # не проверено
chroo2pfs -o module.xzm --script ./install_my_soft.sh # работает
chroot2pfs -o nano.xzm --command urpmi nano && rm -rf /var/lib/rpm # не проверено
сhroot2pfs -o nano.xzm -m "^[1-4].*"--command urpmi nano # работает
сhroot2pfs -o nano.xzm ---command XFdrake (создает конфиги иксов) # работает
То есть создаем chroot из модулей, выполняем команды, пакуем изменения.
Пока только идея ни буквы кода
Добавил обработку параметров --script и --mask.
./chroot2pfs -o nano.xzm -m "^[1-4].*"--command urpmi nano
подключит в чрут только те из модулей, названия которых начинаются на 1, 2, 3 или 4, выполнит в чруте urpmi nano и соберет модуль из изменений с именем nano.xzm
Создаем файл ./nano.sh, с таким содержимым
#!/bin/bash
urpmi nano
./chroot2pfs -o nano.xzm --script ./nano.sh
подключит в чрут все модули что подключены в основной системе (так как маски нет), перенесет в чрут файл ./nano.sh (в /var/lib/chroot2pfs/nano/), сделает его исполняемым, выполнит скрипт в чруте и соберет модуль nano.xzm
При наличии systemd используется виртуализация с systemd-nspawn, чтоб принудительно включить chroot используем ключ -c chroot
Ключ --mkscript создаем в текущем каталоге скрипт-шаблон для использование со --script
без -o спросит имя, впишете без расширения будет папка