Система управления пакетами AgiliaLinux.
-
console - Консольные инструменты mpkg, относящиеся к mpkg.
-
lib - Основные библиотеки, ядро mpkg.
-
i18n - Файлы локализации для mpkg.
-
mpkgsupport - Библиотека поддержки mpkg. Содержит множество полезных функций, не связанных напрямую с mpkg и которые можно использовать в других программах.
-
nwidgets - Фреймворк виджетов NCurses.
-
manager2 - GUI для консольных программ mpkg
-
chroot_installer - Этот скрипты, для создания LiveCD на основе спецификаций ISOBUILD.
-
guiinstaller - Графическая программа установки AgiliaLinux. Используется для установки операционной системы с LiveCD. Также может использоваться из реальной системы.
-
guiinstaller-qt5 - Мои попытки портировать guiinstaller на Qt5 (Возможно следует отказаться от guiinstaller в пользу textinstaller).
-
textinstaller - Текстовая версия установщика AgiliaLinux основанного на ncurses.
-
libagiliasetup - Это Библиотека установки ОС AgiliaLinux, библиотека была отделена от guiinstaller, для реализаций установки без графического интерфейса.
-
mpkg-parted - Разделенные привязки для mpkg, в основном используются установщиками системы, такими как guiinstaller.
-
mpkg-gui-installer - Похоже старая версия guiinstaller.
Последовательность сборки:
- mpkgsupport
- nwidgets
- lib
- console
- i18n
- mpkg-parted
- manager2
- mpkg-gui-installer
- libagiliasetup
- guiinstaller
- textinstaller
Сборка:
mkdir -p build
cd build
cmake ../PROJECT_DIR \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib64
make
sudo make install
-
само собой пофиксить быги.
-
починить chroot_installer.
На данный момент этот набор скриптов сломан (или я тупо не понимаю как им пользоваться) также мне не нравится что приходится патчить ядро патчем для поддержки aufs.
-
разобраться с системой хуков.
Похоже что это просто bash скрипты в /etc/mpkg/hooks которые запускается после обновления системы или установки программ, до конца не уверен что оно работает правильно, единственный пакет в котором имеется hooks это dracut.
-
рассмотреть возможность объединения console, lib, i18n, mpkgsupport и nwidgets в один проект, думаю стоит объединить и mkpkg.
Это позволит избавится от четырёх пакетов в пользу одного, что на мой взгляд проще.
-
считаю что следует ввести понятие опциональных зависимостей.
-
следует изучить вопрос добавления системных пользователей и групп.
В большинстве дистрибутивов этим похоже занимается systemd в gentoo существуют отдельные пакеты при установке которых происходит добавлене или удаление системных пользователей и групп.
-
разобраться с makepkg.
Данный скрипт служит для упаковки программы в *.txz пакет. makepkg взят из pkgtools дистрибутива Slakware, на данный момент текущий makepkg датируется 2009-2010 годом и для упаковки использует tar-1.13 поскольку данная версия последняя которая сохраняет символические ссылки в архивах что заставляет таскать с собой устаревшую версию (кажется в 2018 году в Slakware это исправили). Возможно стоит написать свой скрипт для упаковки.
-
удалить nwidgets и как следствие mpkg-menu.
Если всётаки решусь на данный шаг то nwidgets следует объеденить с textinstaller.
-
разобраться с менеджером загрузки.
Сейчас по умолчанию используется внешний wget хотя мне больше нравится curl, у последнего и выхлоп в консоль меньше и красивее. Указать желаемый менеджер можно в конфигурационном файле /etc/mpkg.xml указав wget aria2 mpkg между открывающим и закрывающим тегом download_tool.
<download_tool> wget, aria2, aria2c или mpkg </download_tool>
Вся реализация находится в lib/HttpDownload.cpp строки с 506 по 597 строки 507-514 относятся к aria2c, 515-588 относятся к libcurl, 589-595 относятся к wget.
Думаю конструкцию что конструкцию
if (dl_tool=="aria2" || dl_tool=="aria2c") {
...
}
else if (dl_tool=="mpkg") { // Default is libcurl
...
} // End of libcurl
else { // Now default is wget
...
}
лучше заменить на
switch(dl_tool){
case "wget":
...
break;
case "aria2":
...
break;
default:
...
break;
}
- по возможности уменьшить количество зависимостей.