Команда autoreconf завершается сообщением command not found прежде всего потому, что пакет autoconf не установлен в системе либо его исполняемый файл отсутствует в переменной окружения PATH. Это типичная ситуация при сборке программ из исходников: разработчик запускает ./autogen.sh или autoreconf -fi, а терминал отвечает, что утилита не найдена.
Ошибка встречается в дистрибутивах Ubuntu, Debian, CentOS, Fedora, Arch Linux, а также в окружениях WSL и macOS. Ниже разберём, как проверить наличие утилиты, установить недостающие пакеты и устранить сопутствующие проблемы с набором GNU Autotools.
Что такое autoreconf и почему он нужен
Утилита autoreconf входит в состав пакета autoconf и служит для повторной генерации скрипта configure и связанных файлов сборки. Она последовательно вызывает другие инструменты: autoconf, autoheader, automake, aclocal и при необходимости libtoolize. Поэтому одной установки autoconf иногда недостаточно — для полноценной работы требуется вся цепочка autotools.
Без этих инструментов проект, распространяемый в виде репозитория (а не готового архива tarball), собрать не получится: скрипт configure в репозитории обычно отсутствует, и его нужно сгенерировать именно через autoreconf.
Диагностика: проверяем, что именно отсутствует
Прежде чем что-то устанавливать, выполните короткую проверку. Она покажет, отсутствует ли сама утилита или проблема кроется в путях поиска.
which autoreconf
autoreconf --version
echo $PATH
Если команда which autoreconf ничего не вернула, утилита не установлена или лежит вне каталогов, перечисленных в PATH. Если же путь отображается, но запуск не работает, проверьте права на исполнение файла и целостность установки пакета.
- 🔍
which autoreconf— показывает путь к исполняемому файлу, если он доступен. - 📦
dpkg -l | grep autoconf(Debian/Ubuntu) илиrpm -q autoconf(RHEL/CentOS/Fedora) — проверяет, установлен ли пакет. - 🧭
echo $PATH— позволяет убедиться, что/usr/binприсутствует в путях поиска. - 🔁
hash -r— сбрасывает кэш путей оболочки, полезно сразу после установки.
Установка autoconf в популярных дистрибутивах
Основной способ устранить ошибку — поставить пакет autoconf штатным пакетным менеджером. Команды различаются в зависимости от дистрибутива:
| Дистрибутив | Команда установки |
|---|---|
| Ubuntu / Debian | sudo apt install autoconf |
| Fedora | sudo dnf install autoconf |
| CentOS / RHEL | sudo yum install autoconf |
| Arch Linux | sudo pacman -S autoconf |
| macOS (Homebrew) | brew install autoconf |
На системах семейства Debian и Ubuntu часто удобнее установить метапакет build-essential, который включает компилятор и базовые инструменты сборки:
sudo apt update
sudo apt install build-essential autoconf automake libtool
⚠️ Внимание: установка толькоautoconfне гарантирует работуautoreconf -fiв реальном проекте. Если в дереве исходников используется automake или libtool, их тоже нужно установить, иначе появятся новые ошибки вроде aclocal not found или libtoolize not found.
Пошаговое решение для Ubuntu и Debian
Наиболее частый сценарий — сборка из исходников на свежей системе, где ещё нет инструментов разработки. Порядок действий выглядит так.
☑️ Устранение autoreconf not found
После установки убедитесь, что утилита доступна:
autoreconf --version
Вывод с номером версии означает, что инструмент готов к работе. Далее в каталоге проекта выполните autoreconf -fi, после чего должен появиться скрипт configure. Если вместо этого появляются сообщения о других отсутствующих утилитах, установите их по аналогии.
Ошибка в macOS и WSL
В macOS утилита отсутствует из коробки, даже если установлены Xcode Command Line Tools. Решение — пакетный менеджер Homebrew:
brew install autoconf automake libtool
В WSL поведение полностью соответствует выбранному дистрибутиву: для Ubuntu внутри WSL используйте apt, как описано выше. Учтите, что в минимальных Docker-образах (например, debian:slim или alpine) autotools тоже отсутствуют — их нужно добавлять в Dockerfile явно. Для Alpine пакеты ставятся командой apk add autoconf automake libtool.
Почему в готовых архивах релизов autoreconf не нужен
В релизных tarball-архивах скрипт configure уже сгенерирован мейнтейнером. Поэтому из них проект собирается классической командой ./configure && make без установки autotools. Ошибка autoreconf not found обычно возникает именно при сборке из Git-репозитория, где configure отсутствует.
Когда установка не помогает
Бывают случаи, когда пакет установлен, а ошибка сохраняется. Вот что стоит проверить в такой ситуации.
- 🧩 Кэш оболочки: выполните
hash -rили откройте новый терминал — оболочка могла запомнить старое состояние путей. - 📁 Нестандартный префикс: если autoconf собран вручную, убедитесь, что его каталог
binдобавлен вPATH. - 🐳 Контейнер или chroot: проверьте, что установку вы выполняете в той же среде, где запускаете сборку.
- 👤 Права: при установке в системные каталоги требуется
sudo; без него пакет мог не установиться корректно.
⚠️ Внимание: не копируйте бинарные файлы autotools вручную между системами и не скачивайте их со сторонних сайтов. Это создаёт риск несовместимости версий и угрозу безопасности. Используйте только штатный пакетный менеджер или официальные исходники GNU.
Часто задаваемые вопросы
Чем autoreconf отличается от autoconf?
autoconf генерирует скрипт configure из файла configure.ac, а autoreconf — обёртка, которая последовательно запускает все нужные инструменты autotools (autoconf, autoheader, automake, libtoolize) в правильном порядке. На практике для проектов из репозитория почти всегда используют именно autoreconf -fi.
Что означают флаги autoreconf -fi?
Флаг -f (force) заставляет пересоздать файлы даже если они существуют, а -i (install) копирует недостающие вспомогательные файлы, например install-sh и missing. Это стандартная комбинация при первой генерации скрипта configure.
Ошибка aclocal: command not found после установки autoconf — что делать?
Утилита aclocal входит в пакет automake, а не autoconf. Установите его отдельно: sudo apt install automake в Debian/Ubuntu или аналогичной командой вашего дистрибутива.
Можно ли собрать проект без autoreconf?
Да, если у вас есть релизный архив (tarball) проекта — в нём скрипт configure уже сгенерирован, и достаточно выполнить ./configure && make. Autotools требуются только при сборке из системы контроля версий.
Как исправить ошибку в Docker-образе на Alpine?
Добавьте в Dockerfile строку RUN apk add --no-cache autoconf automake libtool build-base до шага сборки проекта, затем пересоберите образ.