Поскольку Gobo потихоньку загибается, а Arch и Gobo идеологически близки друг к другу как системы типа сделай-сам, возникла идея скрестить ужа с ежом и получить следующий пакетный менеджер.
* Пакеты «устанавливаются» (фактически, просто распаковываются) каждый в свой подкаталог: /programs/имяпакета-версияпакета/
* Используются арчевские пакеты. Перекомпиляция не обязательна. Т.е., фактически, это только Arch с иным пакетным менеджером, а не новый дистрибутив.
* Реальная установка производится отображением файлов пакета в корневое пространство. Примерно так:
/var и /etc — сюда копируются файлы из /programs/имяпакета-версияпакета/{var,etc} (при апдейте изменённых файлов принцип тот же, что и в арче — ворнинг в консоль, что надо смерджить файлы)
/usr, /lib и т.п. — сюда кидаются симлинки на соответствующие файлы из /programs/имяпакета-версияпакета/
* Таких корневых пространств может быть любое количество. Пространства можно наследовать («пространство A = пространство B + еще 10 таких-то пакетов»), импортировать часть одного пространства в другое («отобразить в пространство C из пространства A файлы пакета blabla-1.0 по маске /usr/bin/*»). При этом, ссылки на бинарники из другого пространства ведут на утилиту, которая делает chroot в нужное пространство и exec соответствующего бинарника.
Этим решаем проблему библиотечного ада, зоопарка версий, да и в целом задачу удобного управления системами, запускающимися в чруте.
* Разумеется, предусмотреть правила биндинга в пространства имён прочих файлов: одному надо дать доступ к /media, другому — нет; одному один /home, другому — другой и т.п.
* Скрипты сборки пакетов модифицировать, чтобы пакет всегда компилировался в минимально необходимом пространстве имён на основе его списка build-зависимостей.
Еще плюшки, которые можно реализовать в процессе:
* Предусмотреть возможность глобально переопределять имена пакетов и задавать правила поиска в репозиториях. Что-то типа такого:
blabla-1.2: bazbaz-1.2 # Пакет bazbaz-1.2 пакетный менеджер будет считать пакетом blabla-1.2
barbar-*: myextra/barbar-* # Пакеты barbar всех версий пакетный менеджер всегда будет искать в репозитории myextra.
* Предусмотреть набор хуков-фильтров, отрабатывающих в момент распаковки пакета в /programs/ (или во время проставления симлинков? не уверен) и позволяющих откусывать лишнее из содержимого пакета. Например: система без info (это и так выкусывается сборочными скриптами арча, но представим, что нет); система без любых манов, кроме англоязычных; система совсем без манов; система вообще без лишнего мусора в /usr/share, такого как README, INSTALL и прочая документация.
* Предосмотреть возможность собранное корневое пространство имён сконвертировать в систему без пакетного менеджера.
Итого: экономия дискового пространства, удобно разруливать несовместимости пакетов, удобно держать на одном разделе несколько разных конфигураций ОС, удобно создавать изолированные чруты для отдельных программ. При этом сохраняются все преимущества Arch-а, включая и изкоробочную работу всего массива ПО для него — нет необходимости велосипедить свой аналог PKGBUILD-ов, как это было сделано в Gobo.
Собственно, вопросы:
1. Может быть, всё уже есть, а я изобретаю велосипед?
2. Насколько будет востребован такой механизм менеджмента пакетов?
3. Если я начну это пилить потихоньку, найдутся среди ЛОР юзеров Ъ, которые будут это принимать участие в разработке, тестировать и т.п.?
В общем, стоит браться или нет?
![](/img/p.gif)
![](/img/p.gif)
![](/photos/52754:1317211183.png)
![](/photos/52754:1317211183.png)
Ответ на:
комментарий
от proud_anon
![](/photos/52754:1317211183.png)
Ответ на:
комментарий
от proud_anon
![](/photos/71287:-1126245462.png)
![](/photos/41720:-856814700.jpg)
![](/photos/48574:-1474163456.gif)
![](/img/p.gif)
Ответ на:
комментарий
от tensai_cirno
![](/img/p.gif)
Ответ на:
комментарий
от Led
![](/photos/41720:-856814700.jpg)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.