- Python 100%
| cpm | ||
| .gitignore | ||
| .python-version | ||
| changelog.md | ||
| crt.py | ||
| index.toml | ||
| LICENSE | ||
| microcpm.py | ||
| packages.toml | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Chio Packages Manager
Маленькая самостоятельная Система управления пакетами Чио.
Cpm упрощает установку, обновление, удаление компонентов Чио.
Для чего CPM?
Предположим вы захотели установить себе Чио. Проблема в том, что репозиторий Чио скачивается только целиком. Это хорошо, когда вам нужен весь функционал, но зачастую это не так. Обычно требуется только ядро, пара плагинов и дополнительные компоненты к ним. Если вы скачали весь архив, то придётся самому удалять лишние. Только вот есть шанс удалить нужный компонент и Чио перестанет работать. Тогда придётся начинать работу с начала.
Теперь предположим, что вышла новая версия какого-либо компонента. Новая версия... новые функции, исправление старых багов и добавление новых. Как вы узнаете, что вышла новая версия? Не думаю, что вы будете время от времен6и заглядывать в репозиторий. А даже если и будете, то придётся скачивать весь архив... ну вы поняли.
Чтобы упростить весь этот процесс и была создана CPM!
# Краткая шпаргалка для использования cpm.
py cpm locate # Поиск локальных пакетов и формирование индекса.
py cpm update # Отдельное обновление данных источников.
py cpm upgrade # Обновление пакетов.
py cpm install PACKAGE # Установить пакет "package".
py cpm remove PACKAGE # Удалить пакет "package".
О CPM
Пойдём от простого к сложному.
Пакет
Это наименьшая единица cpm.
Пакет может содержать себе необходимые файлы и директории.
А также файл packages.toml с различной информацией о пакете.
Пример:
[cpm]
name= "Chio Packages Manager"
desc= "Управление пакетами Чио."
ver= "2.0 rf-V5"
build= 30
type= "pm"
В описание пакета входит:
| имя | тип | описание |
|---|---|---|
| pid | строка | Уникальный packages ID |
| name | строка | Имя пакета |
| desc | строка | Краткое описание пакета |
| full_desc | строка | Полной описание пакета |
| ver | строка | Строка версии |
| build | число | Номер сборки пакета |
| type | строка | Тип пакета (ядро, движок) |
| groups | список | К каким группа принадлежит |
| authors | список | Авторы пакета |
| require | список | PID зависимости проекта |
После попадания в Индекс:
Автоматически добавляются следующие поля.
| имя | тип | описание |
|---|---|---|
| used | список | Кому для работы нужен пакет |
| files | словарь | Фалы и их хеши |
| path | строка | Путь к директории пакета |
| url | строка | Ссылка для загрузки файлов |
| multiple | флаг | Является ли пакет множеством пакетов |
Что можно сделать с пакетом (Package):
- Получить параметры пакета.
- Проверить установлен ли пакет.
- Посмотреть статус пакета.
- Посмотреть полные параметры пакета.
- Удалить пакет.
Пакетный индекс
Сами по себе пакеты не так полезны. Список пакетов выстраивается в пакетный индекс.
- Поиск локальных пакетов.
- Построение зависимостей пакетов.
- Поиск проблем с пакетами.
- Просмотр статистики об индексе пакетов.
- Получение пакета.
- Просмотр списка пакетов.
- Удаление пакетов-сирот (если они не используются).
Пакетный менеджер
Управляет пакетными индексами.
- Поиск локальных пакетов.
- Удаление пакетов.
- Просмотр информацию о пакетах.
- Просмотр статуса пакетов.
- Просмотр статистики индекса.
- Загрузка обновлений.
- Установка пакетов.
О версиях
Router File Version (rf-Vx):
В cpm 2.1 добавлены новые совместимые параметры.
- V5 (
cpm 2.0+): Изменены имена параметров пакета, и наименование файла. - V4 (
cpm 1.6 - 2.0): изменён синтаксис PID для описание источников пакета. - V3 (
cpm 1.5 - 1.6), (+V2): Списки файлов заменены на словари: путь - хеш. Это ускоряет обновления. - V2 (
cpm 1.3 - 1.6): Приведён общий индекс, собираемый CPM.
Отличия версий Cpm
Здесь указаны последние версии каждого этапа.
Для подробного изучения изменений загляните в changelog.md
cpm-full 2.1 Разделение проекта:
- Более безопасное удаление пакетов
- Исправлена загрузка описания пакета
- Больше подсказок при сборке индекса
cpm 2.0: Переработка проекта.
- Нарушается совместимость со старыми версиями.
- Исправлена проблема фантомных пакетов.
- Работает на
rf-V5. - Сокращение ненужного функционала.
- Рекомендуется переходить на cpm 2.1.
cpm 1.5: Продолжение разработки как отдельный проект.
- Работает на
rf-V3. - Поддержка нескольких индексов.
- Не поддерживается.
cpm 1.3: разрабатывалась вместе с Чио как дополнительная утилита.
- Компактная.
- Более стабильная.
- Функциональная.
- Работает с
rf-V2, частичноrf-V3. - Не поддерживается.
Настройки cpm
Настройки cpm расположены в cpm_data/.
├── package_base.toml # Параметры пакетов по умолчанию
├── repositories # Загруженные глобальные индексы
│ ├── chiohub.toml # Глобальный индекс ChioHub (pentergust/chiohub)
│ ├── {repo_name}.toml # Глобальный индекс repo_name (???/repo_name)
│ ├── ... # Тут могут быть другие глобальные индексов
│ └── cpm.toml # Глобальный индекс для Cpm (pentergust/cpm)
└── repositories.toml # Файл определения глобальных индексов
package_base.toml
name = "package"
desc = "no desc"
full_desc = "no full desc"
ver = "1.0"
build = 1
type = "pm"
groups = []
authors = [ "Milinuri Nirvalen"]
require = []
used = []
path = ""
multiple = false
[files]
Если в файле packages.toml нету некоторых параметров, они берутся из package_base.
Вы можете изменить параметры package_base на необходимые вам.
repositories.toml
[chiohub]
url = "https://notabug.org/pentergust/ChioHub/raw/master/"
updated = 1665850118
[cpm]
url = "https://notabug.org/pentergust/cpm/raw/master"
updated = 1665850118
В файле репозиториев указаны источники для загрузки индексов. При желании вы можете исключать или наоборот добавлять свои репозитории.
Пример добавления репозитория:
[name]
url = "ссылка для загрузки файлов"
updated = 0
или:
echo "\n[name]\nurl= \"ссылка для загрузки файлов\"\nupdated= 0" >> cpm_data/repositories.toml