Skip to content
/ mpkg Public
forked from aix27249/mpkg

AgiliaLinux package management system

Notifications You must be signed in to change notification settings

007exe/mpkg

 
 

Repository files navigation

mpkg

Система управления пакетами 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.

Последовательность сборки:

  1. mpkgsupport
  2. nwidgets
  3. lib
  4. console
  5. i18n
  6. mpkg-parted
  7. manager2
  8. mpkg-gui-installer
  9. libagiliasetup
  10. guiinstaller
  11. 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;
}
  • по возможности уменьшить количество зависимостей.

About

AgiliaLinux package management system

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 84.5%
  • Roff 4.4%
  • Shell 4.2%
  • HTML 3.8%
  • CMake 2.0%
  • C 0.6%
  • Other 0.5%