Skip to content

Commit 05f89ba

Browse files
committed
Сделал тему
1 parent 12b3c88 commit 05f89ba

4 files changed

Lines changed: 535 additions & 61 deletions

File tree

docs/apg-pkg/fail-metadata.json.md

Lines changed: 74 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
# Файл metadata.json
22

3-
## Документация по файлу metadata.json
3+
Файл `metadata.json` содержит метаданные пакета APG и используется менеджером пакетов Tulpar для управления установкой, зависимостями и конфликтами.
44

5-
Файл `metadata.json` содержит информацию о пакете и используется системой управления пакетами apg.
6-
7-
### Пример файла metadata.json
5+
## Пример файла
86

97
```json
108
{
@@ -19,7 +17,7 @@
1917
"example",
2018
"test",
2119
"apg"
22-
]
20+
],
2321
"homepage": "https://nuros.org",
2422
"dependencies": [],
2523
"conflicts": [
@@ -38,27 +36,75 @@
3836

3937
## Описание полей
4038

39+
### Основные поля
40+
41+
| Поле | Тип | Описание | Пример |
42+
|------|-----|----------|--------|
43+
| `name` | string | Уникальное имя пакета | `"firefox"` |
44+
| `version` | string | Версия пакета | `"1.2.3"` |
45+
| `type` | string | Тип пакета | `"binary"`, `"source"`, `"misc"` |
46+
| `architecture` | string \| null | Целевая архитектура | `"x86_64"`, `"aarch64"`, `"riscv64"`, `"all"`, `null` |
47+
| `description` | string | Краткое описание пакета | `"Веб-браузер"` |
48+
49+
### Информация о разработке
50+
51+
| Поле | Тип | Описание | Пример |
52+
|------|-----|----------|--------|
53+
| `maintainer` | string | Сопровождающий пакета | `"Ivan Petrov <ivan@example.com>"` |
54+
| `license` | string \| null | Лицензия | `"MIT"`, `"GPL-3.0"`, `"Apache-2.0"` |
55+
| `homepage` | string | URL проекта | `"https://example.com"` |
56+
| `tags` | array | Теги для поиска | `["browser", "web", "internet"]` |
57+
58+
### Зависимости и конфликты
59+
60+
| Поле | Тип | Описание | Пример |
61+
|------|-----|----------|--------|
62+
| `dependencies` | array | Список зависимостей | `["glibc", "openssl >= 1.1"]` |
63+
| `conflicts` | array | Конфликтующие пакеты | `["chromium"]` |
64+
| `provides` | array | Виртуальные пакеты, которые предоставляет данный пакет | `["www-browser"]` |
65+
| `replaces` | array | Пакеты, которые заменяет данный | `["old-firefox"]` |
66+
67+
### Конфигурация
68+
69+
| Поле | Тип | Описание | Пример |
70+
|------|-----|----------|--------|
71+
| `conf` | array | Файлы конфигурации, которые не перезаписываются при обновлении | `["/etc/app.conf", "$HOME/.apprc"]` |
72+
73+
## Типы пакетов
74+
75+
| Тип | Описание |
76+
|-----|----------|
77+
| `binary` | Скомпилированные бинарные файлы |
78+
| `source` | Исходный код для компиляции |
79+
| `misc` | Прочее (данные, документация, темы и т.д.) |
80+
81+
## Архитектуры
82+
83+
| Значение | Описание |
84+
|----------|----------|
85+
| `x86_64` | 64-битные процессоры AMD/Intel |
86+
| `aarch64` | 64-битные процессоры ARM |
87+
| `riscv64` | 64-битные процессоры RISC-V |
88+
| `all` | Архитектурно-независимый пакет |
89+
| `null` | Архитектура не определена |
90+
91+
## Формат зависимостей
92+
93+
Зависимости могут указываться с версионными ограничениями:
94+
95+
```json
96+
"dependencies": [
97+
"glibc", // любая версия
98+
"openssl >= 1.1", // версия 1.1 или выше
99+
"libpng < 2.0", // версия ниже 2.0
100+
"zlib == 1.2.11" // точная версия
101+
]
102+
```
103+
104+
:::info Информация
105+
Поля `license` и `architecture` могут быть `null`, но рекомендуется указывать корректные значения для лучшей совместимости.
106+
:::
41107

42-
| Поле | Описание поля | Пример содержания |
43-
| ------------ | ------------------------- | --------------------------------------------------------- |
44-
| name | Название пакета | example-package |
45-
| version | Версия программы | 1.2.3 |
46-
| type | Тип пакета | misc, binary, source |
47-
| architecture | Целевая архитектура | x86\_64, aarch64, risc_v, all, null |
48-
| description | Подробное описание пакета | "Текстовый редактор с подсветкой синтаксиса" |
49-
| maintainer | Сопровождающий пакета | "Иван Петров [ivan@example.com](mailto:ivan@example.com)" |
50-
| license | Лицензия | MIT, GPL-3.0, Apache-2.0 |
51-
| tags | Тэги для поиска по ним | ["example", "test", "apg"] |
52-
| homepage | Веб-сайт проекта | https://example.com |
53-
| dependencies | Список зависимостей | \["lib-example >= 2.0.0"] |
54-
| conflicts | Конфликтующие пакеты | \["old-package"] |
55-
| provides | Виртуальные пакеты (Пакеты, которые предоставляет один пакет) | \["virtual-package"] |
56-
| replaces | Заменяемые пакеты | \["legacy-package"] |
57-
| conf | Файлы конфигурации | ["/etc/example.conf", "$HOME/exmplrc"] |
58-
59-
60-
### Важные замечания
61-
62-
* Поле `license` может быть `null`, но лучше указать соответствующую лицензию.
63-
* Поле `architecture` может быть `null`.
64-
* Убедитесь, что список зависимостей (`dependencies`) корректен, чтобы избежать проблем при установке.
108+
:::warning Внимание
109+
Убедитесь, что список зависимостей корректен. Неправильные зависимости могут привести к ошибкам при установке пакета.
110+
:::

docs/apg-pkg/struktura-paketa.md

Lines changed: 68 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,75 @@
1-
# Структура пакета
1+
# Структура пакета APGv2
22

3-
## Структура пакета APG
3+
APG (Advanced Package) — формат пакетов для NurOS. Пакет представляет собой tar-архив с дополнительным сжатием (например, `.tar.xz`, `.tar.zst`).
44

5-
APG это .tar.<дополнительное сжатие, например, .xz>
5+
## Структура архива
66

7-
### Структура пакета
7+
```
8+
package.apg
9+
├── metadata.json # Метаданные пакета (обязательно)
10+
├── md5sums # Контрольные суммы файлов (обязательно)
11+
├── data/ # Файлы для установки в / (обязательно)
12+
│ ├── usr/
13+
│ │ ├── bin/
14+
│ │ └── lib/
15+
│ └── etc/
16+
├── scripts/ # Скрипты установки (опционально)
17+
│ ├── pre-install
18+
│ ├── post-install
19+
│ ├── pre-remove
20+
│ └── post-remove
21+
└── home/ # Файлы для $HOME (опционально)
22+
└── .config/
23+
```
824

9-
Пакет APG состоит из следующих компонентов:
25+
## Компоненты пакета
1026

11-
* `metadata.json` — содержит информацию о пакете.
12-
* `md5sums` — контрольные суммы MD5 (также содержит список файлов).
13-
* `data/` — каталог с директориями и файлами, которые будут распакованы в корень системы.
14-
* `scripts/` — каталог с скриптами post/pre (не обязателен).
15-
* `home/` — каталог как `data/`, но для $HOME. (не обязателен)
27+
| Компонент | Описание | Обязательный |
28+
|-----------|----------|:------------:|
29+
| `metadata.json` | Информация о пакете: имя, версия, зависимости | Да |
30+
| `md5sums` | Контрольные суммы MD5 всех файлов пакета | Да |
31+
| `data/` | Файлы, устанавливаемые в корень файловой системы `/` | Да |
32+
| `scripts/` | Скрипты pre/post install/remove | Нет |
33+
| `home/` | Файлы, устанавливаемые в домашний каталог `$HOME` | Нет |
1634

17-
### Дополнительная информация
35+
## Подробнее о компонентах
1836

19-
Новейший и полный стандарт пакетов .apg можно посмотреть [тут](https://github.com/NurOS-Linux/apg-docs).
37+
### metadata.json
38+
39+
Содержит всю информацию о пакете в формате JSON. Подробнее см. [Файл metadata.json](./fail-metadata.json.md).
40+
41+
### md5sums
42+
43+
Текстовый файл с контрольными суммами всех файлов пакета. Формат:
44+
45+
```
46+
d41d8cd98f00b204e9800998ecf8427e data/usr/bin/example
47+
e99a18c428cb38d5f260853678922e03 data/etc/example.conf
48+
```
49+
50+
### data/
51+
52+
Каталог с файлами, которые будут распакованы в корень системы `/`. Структура внутри `data/` повторяет структуру файловой системы.
53+
54+
### scripts/
55+
56+
Каталог со скриптами, выполняемыми при установке/удалении:
57+
58+
| Скрипт | Когда выполняется |
59+
|--------|-------------------|
60+
| `pre-install` | Перед распаковкой файлов |
61+
| `post-install` | После распаковки файлов |
62+
| `pre-remove` | Перед удалением файлов |
63+
| `post-remove` | После удаления файлов |
64+
65+
### home/
66+
67+
Каталог с файлами для домашнего каталога пользователя. Работает аналогично `data/`, но относительно `$HOME`.
68+
69+
:::tip Совет
70+
Используйте `home/` для конфигурационных файлов пользователя, таких как `.bashrc`, `.config/` и т.д.
71+
:::
72+
73+
## Дополнительная информация
74+
75+
Полная спецификация формата APG доступна в репозитории [apg-docs](https://github.com/NurOS-Linux/apg-docs).

docusaurus.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ const config = {
127127
],
128128
copyright: `Copyright © ${new Date().getFullYear()} NurOS. Licensed under CC BY-SA 4.0. Built with Docusaurus.`,
129129
},
130+
colorMode: {
131+
defaultMode: 'dark',
132+
disableSwitch: false,
133+
respectPrefersColorScheme: true,
134+
},
130135
prism: {
131136
theme: prismThemes.github,
132137
darkTheme: prismThemes.dracula,

0 commit comments

Comments
 (0)