# Установка Manticore Search одной командой

Установите Manticore Search одной командой: скрипт настроит репозиторий, установит пакет и запустит службу.

Теперь Manticore Search можно установить одной командой:

```sh
curl https://manticoresearch.com | sh
```

Manticore при этом устанавливается обычным способом — через пакетный менеджер. Скрипт определяет операционную систему и использует APT, YUM/DNF или Homebrew. При необходимости он подключает репозиторий Manticore, устанавливает пакет `manticore` и запускает службу, если не передать `no-start`.

Установщик пригодится, когда нужно быстро установить и запустить Manticore Search, не настраивая репозиторий и не устанавливая пакет вручную. Если вы хотите полностью контролировать установку и запуск службы или использовать другой способ развёртывания, обратитесь к инструкциям по ручной установке.

## После установки

После успешного завершения работы скрипта Manticore будет установлен через пакетный менеджер. Обновлять и удалять пакет, управлять службой и проводить диагностику можно стандартными системными инструментами.

По умолчанию установщик:

- если репозиторий пакетов ещё не настроен, выбирает стабильный
- устанавливает пакет `manticore`
- после установки запускает службу Manticore через systemd
- не меняет стандартные порты `9306`, `9308` и `9312`
- записывает лог установки для диагностики

## Проверка службы systemd

Чтобы проверить, запущена ли мантикора, достаточно выполнить SQL-запрос по HTTP:

```sh
curl -sS "http://127.0.0.1:9308/sql?mode=raw" -d "SELECT VERSION()"
```

Или через MySQL-клиент:

```sh
mysql -P9306 -h0 -e "SELECT VERSION()"
```

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

## Зачем нужен ещё один способ установки?

Подробные инструкции по установке остаются [на странице инсталляции](/install/). Они лучше подходят для Docker, Kubernetes и Windows, а также для случаев, когда установка через пакетный менеджер строго регламентирована или политика безопасности запрещает запуск shell-скриптов из интернета.

Однострочный установщик упрощает типовую установку. Вам не нужно заранее выбирать между APT, YUM/DNF и Homebrew: скрипт сам определяет подходящий вариант и выполняет стандартные действия:

- В Debian, Ubuntu и других дистрибутивах на базе Debian скрипт при необходимости подключает APT-репозиторий, обновляет метаданные, устанавливает пакет и запускает службу.
- В RHEL- и Fedora-совместимых дистрибутивах скрипт при необходимости устанавливает служебный RPM-пакет для подключения репозитория, затем пакет Manticore и запускает службу.
- В macOS при установленном Homebrew скрипт устанавливает Manticore и запускает службу с помощью `brew services`.
- В неподдерживаемых системах скрипт останавливается и выводит ссылку на инструкции по ручной установке.

Такой способ особенно удобен, когда нужно быстро запустить локальный или тестовый сервер Manticore.

## Что делает скрипт

Установщик — это shell-скрипт. Перед запуском можно изучить его исходный код: файл [`installer/bootstrap-standalone.sh`](https://github.com/manticoresoftware/manticoresearch/blob/main/installer/bootstrap-standalone.sh) находится в репозитории Manticore Search на GitHub.

В поддерживаемых системах скрипт:

- определяет операционную систему и выбирает APT, YUM/DNF или Homebrew
- проверяет архитектуру процессора; поддерживаются x86-64 и ARM64
- в Linux при необходимости устанавливает служебный пакет для подключения репозитория Manticore
- устанавливает пакет `manticore`
- после установки по умолчанию запускает службу systemd Manticore
- перед запуском службы проверяет, свободны ли стандартные порты, если доступна утилита `ss` или `netstat`
- по возможности пишет лог в `/var/log/manticore_install.log`, иначе — в файл `manticore_installer.log` во временном каталоге системы

По умолчанию Manticore использует порты `9306`, `9308` и `9312`. Если Manticore ещё не запущен, скрипт проверяет эти порты с помощью `ss` или `netstat`, если одна из утилит доступна. Обнаружив занятый порт, скрипт завершится с ошибкой и не станет менять конфигурацию. Если обе утилиты отсутствуют, предварительная проверка портов не выполняется. В таком случае мантикора затем может не запуститься из-за занятого порта.

Скрипт не меняет порты автоматически: их изменение может потребовать перенастройки клиентов, параметров запуска службы и мониторинга.

## Где это работает

Сейчас установщик поддерживает:

- Debian, Ubuntu, Linux Mint и другие дистрибутивы на базе Debian с APT
- RHEL, CentOS, Fedora, Rocky Linux, AlmaLinux и Amazon Linux, а также другие RHEL- и Fedora-совместимые дистрибутивы с YUM или DNF
- macOS при установленном Homebrew
- архитектуры x86-64 и ARM64

В примере выше скрипт загружается с помощью `curl`. Вместо него можно использовать `wget`:

```sh
wget -O- https://manticoresearch.com | sh
```

В системе должен быть установлен Bash. Загруженный скрипт сначала запускается интерпретатором `/bin/sh`: он проверяет наличие Bash, после чего запускает основную часть уже в Bash. В Linux для установки пакетов и управления службой нужны права `root` или доступ к `sudo`; при установке через Homebrew команды выполняются от имени текущего пользователя.

Если операционная система или архитектура процессора не поддерживается, установщик останавливается с сообщением об ошибке. Для неподдерживаемой ОС сообщение также содержит ссылку на руководство по ручной установке.

## Поведение по умолчанию

Без дополнительных параметров поведение зависит от состояния системы. Если Manticore не установлен, скрипт устанавливает пакет и запускает службу. Если установлен — проверяет, доступна ли более новая версия, и при необходимости предлагает обновление. При этом:

- `dev` и `release` явно выбирают канал; без них сохраняется уже настроенный канал, а если канал не настроен, выбирается стабильный
- после установки или обновления служба запускается, если не передать `no-start`
- стандартные порты остаются `9306`, `9308` и `9312`
- существующие данные не удаляются

Дальнейшее поведение зависит от команды. Перед обновлением скрипт создаёт резервную копию, если такого каталога для установленной версии ещё нет. В Linux туда копируется конфигурация, а каталог данных — только с параметром `backup-data`; каталоги Homebrew в резервную копию не входят. Команды `uninstall` и `purge` не удаляют данные. При новой установке скрипт также предупреждает, если находит `searchd`, установленный не из пакета Manticore.

Для полного удаления предусмотрена отдельная команда `purge-all`: она удаляет пакеты, служебный пакет для подключения репозитория, а также каталоги `/etc/manticoresearch` и `/var/lib/manticore`, если они существуют. В интерактивном режиме перед удалением этих каталогов нужно ввести `DELETE`.

## Частые команды

Параметры установщика указываются после `sh -s`:

```sh
# Установить Manticore и запустить службу
curl https://manticoresearch.com | sh

# Установить пакет, но не запускать службу
curl https://manticoresearch.com | sh -s no-start

# Обновить Manticore, установленную через пакетный менеджер
curl https://manticoresearch.com | sh -s upgrade

# При обновлении включить каталог данных в резервную копию
curl https://manticoresearch.com | sh -s upgrade backup-data

# Указать каталог для резервных копий перед обновлением
curl https://manticoresearch.com | sh -s upgrade backup-data backup-dir /path/to/backups

# Показать версии, доступные в текущем канале
curl https://manticoresearch.com | sh -s list-versions

# Показать версии из канала разработки
curl https://manticoresearch.com | sh -s dev list-versions

# Установить указанную версию или переключиться на неё, не запуская службу
curl https://manticoresearch.com | sh -s version 25.0.0 no-start

# Показать справку установщика
curl https://manticoresearch.com | sh -s help
```

Параметр `version` поддерживается только при установке через пакетные менеджеры Linux. При установке и обновлении через Homebrew используется версия из формулы, поэтому выбрать её с помощью `version` нельзя.

Параметр `dev` явно выбирает канал разработки, а `release` — стабильный канал. В Linux это разные репозитории, в macOS — разные формулы Homebrew. Если канал не указан, скрипт сохраняет текущую настройку, а при её отсутствии выбирает стабильный канал.

## CI и неинтерактивное использование

В автоматизированных сценариях можете запустить установщик с `silent` или `yes`, чтобы отключить интерактивные запросы:

```sh
curl https://manticoresearch.com | sh -s silent no-start
```

`silent` и `yes` — два названия одного неинтерактивного режима. Они не отключают вывод: установщик по-прежнему сообщает о ходе работы и ошибках, но не задаёт вопросов и не использует цвет. Сами по себе эти параметры не запускают обновление. Однако если вместе с ними явно указать канал `dev` или `release`, скрипт может без запроса перейти на доступную в этом канале версию даже без `upgrade`. Чтобы обновить пакет в уже настроенном канале, явно передайте `upgrade`:

```sh
curl https://manticoresearch.com | sh -s upgrade silent
```

Будьте осторожны с командами удаления в неинтерактивном режиме. В текущей версии установщика при параметре `silent` подтверждение удаления также не запрашивается, поэтому команда `purge-all` может удалить конфигурацию и данные без подтверждения.

## Варианты деинсталляции

Установщик поддерживает три варианта удаления мантикоры:

```sh
# Удалить пакеты, сохранив конфигурацию и данные
curl https://manticoresearch.com | sh -s uninstall

# Также удалить служебный пакет для подключения репозитория
curl https://manticoresearch.com | sh -s purge

# Также удалить каталоги `/etc/manticoresearch` и `/var/lib/manticore`
curl https://manticoresearch.com | sh -s purge-all
```

Команда `purge-all` необратимо удаляет `/etc/manticoresearch` и `/var/lib/manticore`, если эти каталоги существуют. Не сочетайте её с `silent` или `yes`, если только действительно не хотите удалить их без запроса подтверждения:

```sh
curl https://manticoresearch.com | sh -s purge-all silent
```

В macOS команды `uninstall` и `purge` действуют одинаково. `purge-all` удаляет пакет, но не каталоги Homebrew с конфигурацией и данными; при этом он проверяет `/etc/manticoresearch` и `/var/lib/manticore` и удаляет их при наличии. Конфигурацию и данные Homebrew при необходимости придётся удалить отдельно.

## Если правила безопасности запрещают `curl | sh`

Если в вашей инфраструктуре запрещено выполнять `curl | sh`, воспользуйтесь [инструкциями по ручной установке через пакетный менеджер](/install/). Другой вариант — скачать скрипт, изучить его исходный код и только затем запустить локально.

Инструкции по установке через пакетный менеджер и из отдельных пакетов, а также по развёртыванию в Docker, Kubernetes и Windows см. в [руководстве по установке Manticore Search](/install/).
