# 一条命令安装 Manticore Search

用一条命令安装 Manticore Search，完成包源配置、安装软件包并启动服务。

现在有了 Manticore Search 的一行安装器：

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

它本质上仍然是一次标准的软件包管理器安装。脚本会检查机器使用的是 APT、YUM/DNF 还是 Homebrew，在需要时配置 Manticore 仓库，安装 `manticore` 包，并在你没有明确禁止时启动服务。

当你想快速拉起 Manticore Search，又不想手动走一遍软件包管理器步骤时，可以使用它。如果你希望自己控制仓库配置、软件包安装、服务启动或部署方式，手动安装页面仍然是正确的入口。

## 运行之后

成功运行后，Manticore 会通过系统软件包管理器完成安装。升级、服务管理、卸载和主机检查都使用常规系统工具。

默认情况下，安装器会：

- 从稳定版 Manticore 软件包仓库安装
- 安装 `manticore` 包
- 启动 `manticore` 服务
- 保持默认监听端口 `9306`、`9308` 和 `9312`
- 写入安装日志，便于排查问题

## 检查服务

服务启动后，做一次简单的 SQL-over-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：添加 APT 仓库，更新元数据，安装软件包，启动服务。
- RHEL 兼容发行版：安装仓库 RPM，安装软件包，启动服务。
- macOS：使用 Homebrew，然后通过 `brew services` 启动服务。
- 其他环境：停止并指向手动安装选项。

差别不大，但当你只想快速得到一个可运行的本地或测试实例时，这很有用。

## 脚本做了什么

安装器是一个 shell 脚本。如果你想先阅读源码，它位于 Manticore Search GitHub 仓库中的 [`installer/bootstrap-standalone.sh`](https://github.com/manticoresoftware/manticoresearch/blob/main/installer/bootstrap-standalone.sh)。

在它支持的系统上，它会：

- 检测 APT、YUM/DNF 或 Homebrew
- 检查 CPU 架构是否为 x86-64 或 ARM64
- 在需要时安装 Manticore 仓库包
- 安装 `manticore` 包
- 默认启动 `manticore` 服务
- 在 `ss` 或 `netstat` 可用时，于启动前检查默认监听端口
- 在可能的情况下将安装日志写入 `/var/log/manticore_install.log`，否则写入 `/tmp/manticore_installer.log`

默认监听端口是 `9306`、`9308` 和 `9312`。如果其中某个端口已经被占用、Manticore 还没有运行，并且系统中有 `ss` 或 `netstat`，安装器会直接失败，而不是替你修改配置。如果这两个工具都不可用，则无法进行预检查；如果某个端口已被占用，服务启动仍然可能失败。

端口变更留给你自己处理，因为修改端口会影响客户端、服务文件和监控。

## 适用范围

安装器当前支持：

- 使用 APT 的 Debian、Ubuntu、Linux Mint 和 Debian 类系统
- 使用 YUM 或 DNF 的 RHEL、CentOS、Fedora、Rocky Linux、AlmaLinux、Amazon Linux 以及 RHEL/Fedora 类系统
- 已安装 Homebrew 的 macOS
- x86-64 和 ARM64 CPU

上面的命令使用了 `curl`。你也可以用 `wget` 下载脚本：

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

必须安装 Bash。下载后的脚本会先在 `/bin/sh` 下启动，检查 Bash 是否可用，然后再用 Bash 运行主安装载荷。你还需要具备安装软件包和启动服务的常规权限，可以是 root，也可以通过 `sudo`。

如果操作系统、软件包管理器或 CPU 架构不受支持，安装器会停止并输出一条消息，指向手动安装指南。

## 默认行为

在不加额外选项的情况下，安装器会使用稳定版发布通道，安装软件包，启动服务，并保留标准监听端口：

- 默认使用稳定版软件包，除非传入 `dev`
- 默认启动服务，除非传入 `no-start`
- 监听端口保持为 `9306`、`9308` 和 `9312`
- 不会删除现有数据

其他检查只在特定情况下生效。在升级前，安装器会备份配置。只有传入 `backup-data` 时，它才会复制数据目录。在 `uninstall` 和 `purge` 过程中，它会保留数据不动。如果发现现有的 `searchd` 二进制文件不属于包管理安装，它会输出警告。

破坏性选项仍然是单独的：`purge-all` 会删除软件包、仓库状态、配置和数据。如果不是非交互模式，它会要求你输入 `DELETE`，然后才会删除 `/etc/manticoresearch` 和 `/var/lib/manticore`。

## 常用命令

大多数安装器行为都通过在 `sh -s` 后面传入选项来控制：

```sh
# Install the latest stable package and start the service
curl https://manticoresearch.com | sh

# Install but do not start the service
curl https://manticoresearch.com | sh -s no-start

# Upgrade an existing package-managed installation
curl https://manticoresearch.com | sh -s upgrade

# Upgrade and include the data directory in the backup
curl https://manticoresearch.com | sh -s upgrade backup-data

# Choose where upgrade backups are written
curl https://manticoresearch.com | sh -s upgrade backup-data backup-dir /path/to/backups

# List available stable versions
curl https://manticoresearch.com | sh -s list-versions

# List versions from the development repository
curl https://manticoresearch.com | sh -s dev list-versions

# Install or switch to a specific version without starting the service
curl https://manticoresearch.com | sh -s version 25.0.0 no-start

# Show installer help
curl https://manticoresearch.com | sh -s help
```

指定版本只适用于 Linux 的软件包管理器安装。Homebrew 的安装和升级遵循 Homebrew formula，不支持通过这个安装器使用 `version`。

`dev` 选项会切换到开发仓库。默认使用发布通道。

## CI 和非交互环境

用于自动化时，只有在你希望安装器无提示运行并接受脚本默认值时，才使用 `silent` 或 `yes`：

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

`silent` 和 `yes` 是同一种非交互模式的别名。它们并不表示“没有输出”：安装器仍会输出进度和错误，只是不会出现交互提示和彩色输出。它们本身也不会请求升级。如果现有安装需要升级，请显式传入 `upgrade`：

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

在非交互模式下要小心清理命令。在当前安装程序中，`silent` 也会跳过 `purge-all` 的“DELETE”提示，因此它可以在不再次确认的情况下删除配置和数据。

## 清理选项

卸载分成几个级别：

```sh
# Remove packages, keep configuration, data, and repository state
curl https://manticoresearch.com | sh -s uninstall

# Remove packages and the repository bootstrap package
curl https://manticoresearch.com | sh -s purge

# Remove packages, repository state, configuration, and data
curl https://manticoresearch.com | sh -s purge-all
```

`purge-all` 是破坏性选项。不要将它与 `silent` 或 `yes` 组合使用，除非你确实想在没有确认提示的情况下删除 `/etc/manticoresearch` 和 `/var/lib/manticore`：

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

移除软件和删除数据不是同一操作，因此安装器会将这两者分开处理。

## 如果你的策略禁止 pipe-to-shell

有些环境不允许使用 `curl | sh`。这没有关系。你可以使用[手动的软件包管理器安装说明](/install/)，或者先查看脚本源码，确认无误后再运行。

关于手动包管理器命令、Docker、Kubernetes、Windows 和独立软件包，请参阅 [Manticore Search 安装指南](/install/)。
