Установка CMake на Rocky Linux: полное руководство

CMake — это открытая система сборки, которая генерирует файлы сборки для любой платформы и компилятора. Вместо того чтобы писать отдельные сценарии сборки для разных сред, вы описываете процесс сборки один раз в файле CMakeLists.txt, а CMake создаёт соответствующие Makefile, Ninja или файлы проектов для IDE. Это делает CMake незаменимым инструментом для кроссплатформенной разработки на C и C++, сборки игровых движков и крупных программных проектов со сложными зависимостями.

💡 Если вы разрабатываете на C/C++, собираете проекты из исходных кодов или работаете с большими системами, где важна единообразная сборка — CMake предоставит надёжный и стандартизированный способ генерации файлов сборки под любую платформу.

В этом руководстве мы рассмотрим два метода установки CMake на Rocky Linux 8, 9 и 10:

  1. Установка из репозитория AppStream — для стабильной, протестированной версии с автоматическими обновлениями.
  2. Установка из исходных кодов — для доступа к самой свежей версии со всеми новыми функциями.

Для кого: новички (кто только начинает знакомиться со сборкой программ), разработчики C/C++ (для настройки кросс-платформенных проектов), сисадмины (для сборки утилит из исходников).


Оглавление

1. CMake: DNF (AppStream) или сборка из исходников?

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

МетодКаналВерсияОбновленияДля кого
DNF (AppStream)Стандартный репозиторий RockyВерсия по умолчанию для дистрибутиваАвтоматические через dnf upgradeБольшинство пользователей, которым нужна стабильность и простота обслуживания
Сборка из исходниковGitHub ReleasesПоследняя стабильнаяТребуется ручная перекомпиляцияРазработчикам, которым нужны новейшие функции или специфические флаги сборки

💡 Вывод для новичка: Для большинства задач подойдёт установка через DNF — это просто, надёжно и не требует ручного обновления. Сборку из исходников используйте, только если ваш проект требует версию новее, чем та, что есть в репозитории Rocky.

Версии CMake в разных релизах Rocky Linux

Версия CMake, доступная в репозитории AppStream, зависит от версии вашей Rocky Linux:

Версия Rocky LinuxВерсия CMake в AppStream
Rocky Linux 103.30.x
Rocky Linux 93.26.x
Rocky Linux 83.26.x

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


2. Подготовка системы

2.1 Обновление системы

sudo dnf upgrade --refresh -y

Что делает:

  • sudo — права суперпользователя.
  • dnf upgrade — обновляет все пакеты до последних версий.
  • --refresh — принудительно перекачивает метаданные репозиториев (игнорирует кэш).
  • -y — автоматически отвечает «yes».

Зачем: Это стандартная практика безопасности перед установкой нового ПО. Снижает риск конфликтов зависимостей.

2.2 Установка базовых утилит (для метода из исходников)

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

sudo dnf install -y gcc gcc-c++ make curl wget tar openssl-devel

Что делает: Устанавливает компиляторы (gcc, gcc-c++), утилиту make для сборки, программы curl и wget для скачивания файлов, tar для распаковки и заголовочные файлы OpenSSL (нужны для поддержки HTTPS при скачивании через CMake).

Зачем: Без этих пакетов сборка из исходников будет невозможна — вы получите ошибки о пропущенных компиляторах или библиотеках.


3. Установка CMake через DNF (AppStream)

Этот метод подходит для большинства пользователей. Вы получаете стабильную версию, которая будет обновляться вместе с системой через dnf upgrade.

3.1 Установка пакета

sudo dnf install -y cmake

Что делает: Устанавливает пакет cmake и все его зависимости из официального репозитория Rocky Linux.

3.2 Проверка версии

cmake --version

Ожидаемый вывод (пример для Rocky 10):

cmake version 3.30.5

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Зачем: Убедиться, что установка прошла успешно и CMake доступен в системе.

Готово. Если версия устраивает — можете пропустить следующий раздел и переходить к использованию.


4. Установка CMake из исходников (последняя версия)

Этот метод сложнее, но даёт доступ к самой свежей версии CMake. Подходит, если ваш проект требует функций, которых нет в версии из AppStream.

4.1 Создаём директорию для сборки

mkdir -p ~/cmake-build && cd ~/cmake-build

Что делает:

  • mkdir -p — создаёт папку cmake-build в домашней директории (если её нет).
  • cd — переходит в эту папку.

Зачем: Чтобы не засорять домашнюю директорию временными файлами сборки. Все исходники и промежуточные файлы будут лежать в одном месте.

4.2 Определяем последнюю версию и скачиваем исходники

bash

VERSION=$(curl -s https://api.github.com/repos/Kitware/CMake/releases/latest | grep -oP '"tag_name": "v\K[^"]+')
echo "Загружается версия CMake: ${VERSION}"

✅ Ожидаемый вывод в терминале (пример — версия может быть другая):

Загружается версия CMake: 4.3.1

Далее обращаемся к github:

wget https://github.com/Kitware/CMake/releases/download/v${VERSION}/cmake-${VERSION}.tar.gz

✅ Ожидаемый вывод в терминале:

--2026-04-08 12:00:00--  https://github.com/Kitware/CMake/releases/download/v4.3.1/cmake-4.3.1.tar.gz
Resolving github.com... 140.82.112.3
...
Saving to: ‘cmake-4.3.1.tar.gz’

Разбор команды:

  • curl -s ... — обращается к API GitHub и получает JSON с информацией о последнем релизе.
  • grep -oP ... — вырезает номер версии из строки "tag_name": "v4.3.1".
  • wget — скачивает архив с исходниками нужной версии.

💡 Что делать, если GitHub API недоступен? Зайдите на страницу релизов CMake, найдите нужную версию (например, 4.2.1) и выполните команду вручную:

wget https://github.com/Kitware/CMake/releases/download/v4.2.1/cmake-4.3.1.tar.gz

4.3 Распаковываем архив

tar -xzf cmake-${VERSION}.tar.gz
cd cmake-${VERSION}

Что делает:

  • tar -xzf — распаковывает архив (флаг -x — extract, -z — gzip, -f — файл).
  • cd — переходит в распакованную директорию.

4.4 Запускаем скрипт начальной настройки (bootstrap)

./bootstrap

Что делает: Скрипт bootstrap проверяет наличие компилятора и необходимых библиотек, а затем создаёт систему сборки для самого CMake.

Сколько ждать: Обычно 1–3 минуты, в зависимости от производительности сервера.

Ожидаемый вывод в конце:

CMake has bootstrapped.  Now run make.

⚠️ Если bootstrap завершился с ошибкой — проверьте, установлены ли компиляторы (gcc-c++) и библиотека OpenSSL (openssl-devel). Вернитесь к шагу 2.2.

4.5 Компиляция (сборка)

make -j$(nproc)

Что делает:

  • make — запускает процесс компиляции.
  • -j$(nproc) — указывает, сколько ядер процессора использовать для параллельной сборки. nproc возвращает количество ядер (например, 4 или 8). Это ускоряет сборку в несколько раз.

Сколько ждать: От 5 до 15 минут, в зависимости от мощности сервера.

4.6 Установка в систему

sudo make install

Что делает: Копирует скомпилированные бинарные файлы в системные директории (/usr/local/bin — основной исполняемый файл, /usr/local/share — вспомогательные файлы).

Зачем: Чтобы CMake был доступен из любой точки системы.

4.7 Проверяем версию установленного CMake

cmake --version

Ожидаемый вывод:

cmake version 4.3.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Цифра должна совпадать с той, что скачивали на шаге 4.2.

💡 Почему теперь используется версия из /usr/local/bin, а не из /usr/bin? В стандартном PATH в Rocky Linux директория /usr/local/bin находится перед /usr/bin. Поэтому система находит сначала установленный вручную CMake.

Готово. Вы установили самую свежую версию CMake.


5. Обновление CMake (собранного из исходников)

Установленный через DNF CMake будет обновляться автоматически. А вот собранный из исходников нужно обновлять вручную. Чтобы упростить процесс, создадим скрипт.

5.1 Создаём скрипт обновления

nano ~/update-cmake.sh

Скопируйте и вставьте в редактор следующий код:

#!/bin/bash
# Скрипт для обновления CMake из исходников

set -e  # Остановить скрипт при любой ошибке

echo "Проверка последней версии CMake..."
LATEST=$(curl -s https://api.github.com/repos/Kitware/CMake/releases/latest | grep -oP '"tag_name": "v\K[^"]+')

if [ -z "$LATEST" ]; then
    echo "Ошибка: Не удалось определить последнюю версию."
    exit 1
fi

CURRENT=$(cmake --version 2>/dev/null | head -1 | grep -oP '\d+\.\d+\.\d+' || echo "не установлена")

echo "Текущая версия: ${CURRENT}"
echo "Последняя версия: ${LATEST}"
echo ""

if [ "$CURRENT" = "$LATEST" ]; then
    echo "CMake уже последней версии."
    exit 0
fi

read -p "Обновить? (y/n) " -n 1 -r
echo ""

if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "Обновление отменено."
    exit 0
fi

BUILD_DIR="$HOME/cmake-build"
mkdir -p "${BUILD_DIR}"
cd "${BUILD_DIR}"

echo "Скачивание CMake ${LATEST}..."
wget -q "https://github.com/Kitware/CMake/releases/download/v${LATEST}/cmake-${LATEST}.tar.gz"

echo "Распаковка..."
tar -xzf "cmake-${LATEST}.tar.gz"
cd "cmake-${LATEST}"

echo "Запуск bootstrap (1-3 минуты)..."
./bootstrap

echo "Компиляция (5-15 минут)..."
make -j$(nproc)

echo "Установка (требуется пароль sudo)..."
sudo make install

echo ""
echo "Обновление завершено!"
cmake --version

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

  • #!/bin/bash — указывает, что скрипт выполняется в интерпретаторе Bash
  • set -e — если любая команда завершится ошибкой, скрипт сразу остановится
  • LATEST=... — получает номер последней версии с GitHub
  • CURRENT=... — определяет текущую установленную версию
  • read -p "Обновить? (y/n)" — спрашивает разрешение перед обновлением
  • wget -q — скачивает архив (флаг -q подавляет лишний вывод)
  • make -j$(nproc) — компилирует с использованием всех ядер процессора
  • sudo make install — устанавливает собранную версию в систему

Зачем нужен этот скрипт: В отличие от установки через DNF (где обновления приходят автоматически), собранный из исходников CMake требует ручного обновления. Скрипт автоматизирует этот процесс: сам проверяет наличие новой версии, скачивает, собирает и устанавливает.

5.2 Делаем скрипт исполняемым и запускаем

chmod +x ~/update-cmake.sh
~/update-cmake.sh

Что делает chmod +x: Добавляет файлу право на выполнение.

Зачем: Теперь для обновления CMake достаточно выполнить ~/update-cmake.sh и при необходимости ввести пароль sudo.

⚠️ Важно: Не автоматизируйте этот скрипт через cron. Компиляция потребляет много ресурсов CPU, а скрипт требует интерактивного ввода пароля sudo.


6. Удаление CMake

6.1 Если CMake был установлен через DNF

sudo dnf remove -y cmake

Что делает: Удаляет пакет и его зависимости, которые не нужны другим программам.

6.2 Если CMake был собран из исходников

Удалите файлы вручную:

sudo rm -rf /usr/local/bin/cmake /usr/local/bin/ctest /usr/local/bin/cpack /usr/local/bin/ccmake
sudo rm -rf /usr/local/share/cmake-*
sudo rm -rf /usr/local/doc/cmake-*

Осторожно: Эти команды удаляют файлы только CMake. Убедитесь, что не ошиблись в путях.

Также удалите директорию со сборкой и скрипт обновления:

rm -rf ~/cmake-build
rm -f ~/update-cmake.sh

6.3 Проверка удаления

cmake --version

Ожидаемый результат:

-bash: cmake: command not found

7. Диагностика проблем

7.1 Ошибка: «bootstrap: Command not found» или «g++: command not found»

Причина: Не установлены компиляторы или вы находитесь не в той директории.

Решение:

sudo dnf install -y gcc gcc-c++
# Убедитесь, что вы внутри распакованной папки cmake-*
pwd  # должно быть что-то вроде /home/user/cmake-build/cmake-4.2.1

7.2 После сборки из исходников показывает старую версию

Причина: Система находит CMake из /usr/bin (версия из DNF) раньше, чем из /usr/local/bin.

Решение 1 (удалить версию из DNF):

sudo dnf remove -y cmake

Решение 2 (проверить PATH):

which cmake
# Должно показать /usr/local/bin/cmake

Если показывает /usr/bin/cmake — значит, версия из исходников не установилась или установилась с ошибкой.

7.3 Ошибка при wget: «Cannot write to …»

Причина: Закончилось место на диске или нет прав на запись.

Решение:

df -h  # проверить свободное место
# Очистите старые сборки
rm -rf ~/cmake-build

Чек-лист: всё готово к работе

# 1. Проверка версии (должна соответствовать ожидаемой)
cmake --version

# 2. Проверка, откуда взят бинарник (для метода из исходников)
which cmake
# Ожидается: /usr/local/bin/cmake

# 3. Проверка базовой функциональности
cmake --help
# Должна показаться справка с перечнем генераторов

Заключение

Вы установили CMake на Rocky Linux. Теперь ваша система готова к сборке проектов на C/C++ и других языках, использующих эту систему.

Что дальше:

  • Для работы с CMake в проектах изучите официальную документацию: cmake.org/documentation
  • Пример простого CMakeLists.txt для вашего проекта:
  cmake_minimum_required(VERSION 3.10)
  project(MyProject)
  add_executable(myapp main.cpp)
  • Сборка проекта через CMake:
  mkdir build && cd build
  cmake ..
  make

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *