Сайт | Скачать | Видео | Wiki

Автор Тема: Объединение составных модулей  (Прочитано 1234 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23440
  • Репутация: +171/-0
    • PuppyRus-A
Объединение составных модулей
« : 19 Апрель 2018, 10:35:39 »
По итогу
Плохая идея - объединять составные модули mkpfs -m
На выходе задвоения списков. Особенно если модуль собран под одним именем, а потом переименован
Оптимально все распаковать и mkpfs -d

По идее можно оформить как ошибку. Если не сохранить исходные модули - разобрать потом "составной pfs из составных pfs" будет проблемно...

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #1 : 19 Апрель 2018, 12:05:47 »
Напрашивается два варианта. Первый, самый простой, а может и правильный - объединять составные модули как простые. То есть не сохранять списки для подмодулей. И второй вариант сохранять списки для каждого подмодуля, но не делать новые списки для объединяемых контейнеров. Тогда двоиться списки не должны, даже после переименования. А если хранить все и создавать новые списки, то будет двоиться  мне кажется.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23440
  • Репутация: +171/-0
    • PuppyRus-A
Re: Объединение составных модулей
« Ответ #2 : 19 Апрель 2018, 12:52:22 »
самый простой, а может и правильный - объединять составные модули как простые.
Плохая идея. Теряется возможность разборки на молекулы (если модуль не из пакетов)
второй вариант сохранять списки для каждого подмодуля
Так бы хорошо
если хранить все и создавать новые списки, то будет двоиться
Сейчас примерно так и получается

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #3 : 20 Апрель 2018, 17:42:17 »
Посмотрел как у нас сейчас получается. Если склеить два контейнера то в итоговый модуль попадут списки для всех сабмодулей и для исходных контейнеров тоже. То есть можно извлечь любой сабмодуль и контейнер тоже можно извлечь. Но. Списки для контейнеров не содержат списков для сабмодулей. То есть если извлечь из итогового контейнера один из входящих контейнеров, то он окажется обычным модулем без списков сабмодулей. Нужно ли что-то чинить? Вроде норм. И не двоилось ничего.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23440
  • Репутация: +171/-0
    • PuppyRus-A
Re: Объединение составных модулей
« Ответ #4 : 21 Апрель 2018, 08:39:20 »
Если склеить два контейнера то в итоговый модуль попадут списки для всех сабмодулей и для исходных контейнеров тоже.  И не двоилось ничего.
Получается - если разобрать итоговый пфс полностью - один и тот же файл окажется в двух модулях (время место теряем зря)
Причем информация о том, какие одиночные модули входили в склеенный составной все равно утеряна
Для чего такой модуль... Уж лучше его из одиночных пересобрать... Только список придется угадать (сравнить со склеенным составным)
В идеале было бы логично получить исходные составные модули (которые потом еще можно разобрать)
Иначе получается - главная идея убита : не все что собрано можно разобрать ...

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #5 : 22 Апрель 2018, 10:50:05 »
В идеале было бы логично получить исходные составные модули (которые потом еще можно разобрать)
Иначе получается - главная идея убита : не все что собрано можно разобрать ...
Наверное трудно будет провернуть такое для любой степени вложенности. Надо подумать, было бы прикольно конечно.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23440
  • Репутация: +171/-0
    • PuppyRus-A
Re: Объединение составных модулей
« Ответ #6 : 22 Апрель 2018, 11:03:38 »
для любой степени вложенности
Думаю, достаточно 2 уровня

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #7 : 22 Апрель 2018, 11:10:53 »
Думаю, достаточно 2 уровня
Ну тут логичный вопрос, а что делать если объединяем двухуровневые контейнеры?. Наверное проще будет все же придумать универсальное решение, а если не получится хранить списки только для атомарных модулей, а для контейнеров не сохранять.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #8 : 22 Апрель 2018, 17:22:06 »
Вроде получается, но ломает достаточно много. Надо проверять и чинить.
Отправил  в гит, бранч v4. Ломать в мастере  не стал.
Склеивает контейнеры с любой вложенностью. При распаковке разделяет по последней склейке. Достать подмодуль из ранних чем последняя склейка контейнеров пока не получится, но теоретически проблем нет. Пробуйте, интересно вроде, не знаю только надо это кому или нет :))
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #9 : 22 Апрель 2018, 20:26:12 »
Извлечение любых по глубине сабмодулей тоже запилил.
Смотрите как сабмодуль называется в pfsinfo contaner.pfs и дальше как обычно.
Названия приблизительно такие:
сабмодуль1:сабмодуль2:сабмодуль3:модуль
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23440
  • Репутация: +171/-0
    • PuppyRus-A
Re: Объединение составных модулей
« Ответ #10 : 23 Апрель 2018, 13:23:14 »
Отправил  в гит, бранч v4. Ломать в мастере  не стал.
Очень правильно
На самом деле такой функционал нужен не всегда и не всем. Поэтому - если решение сложное - надо ли вообще...
Я в пра перешел на сборку pfs из пакетов. С пакетами можно делать метапакеты (без файлов - только со списком пакетов). Так удобнее и проще. Т.е. разборка pfs почти не нужна

Протестировал в4
selftest проходит
собрал составной 1234 из друх составных 12 и 34 -норм

pfsextract 1234.pfs = 12.pfs + 34.pfs - норм.
pfsextract 12.pfs 34 -норм

pfsextract -d 1234.pfs = диры 12 и 34 ,т.е. инфа про то что они составные утеряна
Не лучше ли здесь было получить диры 1 2 3 4
-d наиболее востребованный вариант

В аттаче модулт с утил в 4 и модуль для тестов

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #11 : 23 Апрель 2018, 14:51:02 »
На самом деле такой функционал нужен не всегда и не всем. Поэтому - если решение сложное - надо ли вообще...
Там не сложно, но заранее не известно где аукнется. Сейчас пока менял только mkpfs, pfsextract, pfsinfo, pfs(mklist). Проверял только самый стандартный вариант сборку из модулей и разборку в модули. Ограничений на количество вложений нет, как устроено легко понять если сделать глубоко вложенный контейнер и заглянуть у него в $PFSDIR. Думаю надо допилить не торопясь, тем более, что для обычных контейнеров, состоящих из атомарных модулей вообще ничего не меняется.

pfsextract -d 1234.pfs = диры 12 и 34 ,т.е. инфа про то что они составные утеряна
Не лучше ли здесь было получить диры 1 2 3 4
-d наиболее востребованный вариант
По разборке в папки даже не думал еще. Может делать аналогично модулям, то есть с сохранением PFSDIR? Или разбирать сразу на атомы?

З.Ы. еще косяк нашел. Извлечь за раз более одного сабмодуля не получается. Либо все, либо один.
З.З.Ы Попробуйте склеивать контенеры с разной степенью вложенности. Или контейнер склеивать с атомарным модулем. Тоже должно работать. Главное смотреть названия через pfsinfo. Нормально, кстати, через ":" ? как вариант можно еще "::" сделать разделителем или "->"
« Последнее редактирование: 23 Апрель 2018, 14:57:27 от betcher »
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23440
  • Репутация: +171/-0
    • PuppyRus-A
Re: Объединение составных модулей
« Ответ #12 : 23 Апрель 2018, 15:24:43 »
надо допилить не торопясь
да. Только в3 отладили...
По разборке в папки даже не думал еще. Может делать аналогично модулям, то есть с сохранением PFSDIR?
А смысл? если собрать mkpfs он это убъет
Ну или допилить чтобы не убивал
Или разбирать сразу на атомы?
Мне кажется так лучше...
Хотя надо бы не теоретические задачи, а практические
Может по итогу придет понимание что это вообще не нужно...
контейнер склеивать с атомарным модулем.
Проверил - норм

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 9908
  • Репутация: +103/-0
Re: Объединение составных модулей
« Ответ #13 : 23 Апрель 2018, 15:56:57 »
Может в packages делать подкаталог для каждого составного модуля со списком пакетов, а в packages/mount все пакеты из всех модулей составных.

При объединении двух составных модулей, их состав будет отражен в /packages (вместо файлов можно просто ссылки на соответствующее содержимое /packages/mount)


Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1371
  • Репутация: +14/-0
    • Беседка магос
Re: Объединение составных модулей
« Ответ #14 : 23 Апрель 2018, 16:29:12 »
Я сделал немного иначе, вариант хорош тем, что для обычных модулей и контейнеров сделанных из  обычных модулей ничего не меняется. Во время сборки модуля перед созданием списка проверяется не содержит ли модуль уже PFSDIR/mount. Если каталог есть он копируется в PFSDIR/modules/packname/submod/ для будующего модуля. Если склеивать снова копирование произойдет снова увеличивая вложенность submod/mount. При распаковке сдвиг в обратном порядке.
Сложно словами описать, загляните внутрь контейнера с большой глубиной склеек. И pfsinfo контейнер.pfs думаю сразу станет понятно. То есть для хранения информации о вложенности используется дерево fs. Типа как в proc и sys.
« Последнее редактирование: 23 Апрель 2018, 16:31:39 от betcher »
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)