---

- [Команды](#команды)
  - [Установка](#install)
  - [Удаление](#remove)
  - [Обновление пакетов](#upgrade)
  - [Информация о пакете](#info)
  - [Список пакетов](#list)
  - [Сборка](#build)
  - [Добавление репозитория](#addrepo)
  - [Удаление репозитория](#removerepo)
  - [Обновление изменений](#refresh)
  - [Исправление](#fix)
  - [Версия](#version)
- [Переменные окружения](#переменные-окружения) 
  - [Дистрибутивы](#alr_distro)
  - [Формат пакета](#alr_pkg_format)
  - [Архитектура](#alr_arm_variant)
  - [Кросс-упаковка для других дистрибутивов](#кросс-упаковка-для-других-дистрибутивов)

## команды

Аргумент имени пакета не обязан быть точными(для пакетов из репозитория ALR).

### install

Команда `install` устанавливает пакет из репозиториев ALR. Любые пакеты, которых нет в репозиториях ALR, передаются в системный менеджер пакетов для установки. ALR проверит массив и сообщит, если точное совпадение не найдено. Также поддерживается использование `%` в качестве замены. Если найдено несколько пакетов, вы будете проинформированы о выборе пакета для установки. По умолчанию, если пакет уже был собран, ALR установит кэшированный пакет вместо повторной пересборки. Используйте флаг `-c` или `--clean`, чтобы принудительно пересобрать пакет.

Примеры:
```sh
alr in alr-bin # найдёт только alr-bin
alr in alr # находит alr-bin и alr-git
alr in it% # находит alr-bin, alr-git и itgui-git
alr in -c alr-bin
```
### remove

Команда `remove` предназначена для удобства. Она просто перенаправляет команду удаления в системный менеджер пакетов.

Пример:
```sh
alr rm firefox
```

### upgrade

Команда `upgrade` просматривает установленные в вашей системе пакеты и проверяет, соответствуют ли они пакетам из репозиториев ALR. Если да, то их версии сравниваются с использованием алгоритма `rpmvercmp`. Если в репозиториях ALR содержится более новая версия, пакет обновляется.

По умолчанию, если пакет уже был собран, ALR установит кэшированный пакет, а не пересоберёт его. Используйте флаг `-c` или `--clean`, чтобы принудительно пересобрать.

Пример:
```sh
alr up
```

### info

Команда `info` отображает информацию о пакете в репозиториях ALR.

Если найдено несколько пакетов, вам будет предложено выбрать, какой из них вы хотите просмотреть.

Пример:
```sh
alr info alr-bin # находит только alr-bin
alr info alr # находит alr-bin и alr-git
alr info it% # находит alr-bin, alr-git и itgui-git
```

### list

Команда `list` отображает все пакеты из репозитория ALR, а также их версии.

Эта команда принимает один необязательный аргумент. Этот аргумент представляет собой шаблон для фильтрации найденных пакетов.

Существует флаг `-I` или `--installed`, который фильтрует пакеты, установленные в системе.

Примеры:
```sh
alr ls # выводит все пакеты alr
alr ls -I # выводит все установленные пакеты
alr ls i% # выводит все пакеты, начинающиеся с "i"
alr ls %d # выводит все пакеты, заканчивающиеся на "d"
alr ls -I i% # выводит все установленные пакеты, начинающиеся с "i"
```

### build

Команда `build` собирает пакет с использованием скрипта сборки `alr.sh` в текущем каталоге. Путь к скрипту можно изменить с помощью флага `-s`.

Пример:
```sh
alr build
```

### addrepo

Команда `addrepo` добавляет репозиторий в ALR, если он еще не существует. Флаг `-n` устанавливает имя репозитория, а флаг `-u` — это URL репозитория. Оба являются обязательными.

Пример:
```sh
alr ar -n default -u https://gitea.plemya-x.ru/xpamych/xpamych-alr-repo.git
```

### removerepo

Команда `removerepo` удаляет репозиторий из ALR и удаляет его содержимое, если он существует. Флаг `-n` указывает имя репозитория, который необходимо удалить.

Пример:
```sh
alr rr -n default
```

### refresh

Команда `refresh` загружает все изменения из всех репозиториев ALR, которые были изменены.

Пример:
```sh
alr ref
```

### fix

Команда `fix` пытается исправить проблемы с ALR, удаляя и пересобирая кэш ALR.

Пример:
```sh
alr fix
```

### version

Команда version возвращает текущую версию ALR и завершает выполнение.

Пример:
```sh
alr version
```
## Переменные окружения
### ALR_DISTRO

Переменная окружения `ALR_DISTRO` должна быть установлена в дистрибутив, для которого должен быть собран пакет. Это говорит ALR, какие переопределения использовать. Значения должны совпадать с полем `ID` в `/etc/os-release` или `/usr/lib/os-release`. Возможные значения включают:
```sh
    arch
    alpine
    opensuse
    debian
```

### ALR_PKG_FORMAT

Переменная окружения `ALR_PKG_FORMAT` должна быть установлена в формат упаковки, который следует использовать. Допустимые значения:
```
    archlinux
    apk
    rpm
    deb
```
### ALR_ARM_VARIANT

Переменная окружения `ALR_ARM_VARIANT` указывает, для какого варианта ARM следует собирать, если ALR работает на ARM-системе. Возможные значения включают:
```
    arm5
    arm6
    arm7
```
### Кросс-упаковка для других дистрибутивов

Вы можете создавать пакеты для различных дистрибутивов, устанавливая переменные окружения `ALR_DISTRO` и `ALR_PKG_FORMAT`, как указано выше.

Примеры:
```sh
alr_DISTRO=arch     alr_PKG_FORMAT=archlinux alr build
alr_DISTRO=alpine   alr_PKG_FORMAT=apk       alr build
alr_DISTRO=opensuse alr_PKG_FORMAT=rpm       alr build
alr_DISTRO=debian   alr_PKG_FORMAT=deb       alr build
```