#Когда возникает проблема и к каким системам относится
DNF показывает установленный пакет, но оболочка сообщает command not found. Причина может быть в другом названии бинарника, PATH, профиле пользователя или пакете без исполняемой команды. Rocky Linux с RPM/DNF; примеры требуют заменить ПАКЕТ и ИМЯКОМАНДЫ на реальные имена, сначала проверяется наличие исполняемого файла.
#Основные причины: как отличить одну от другой
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Пакет не содержит нужную программуИмя пакета отличается от имени запускаемого файла | rpm -ql не находит ожидаемый бинарник | Установить корректный пакет после проверки его назначения |
| Папки нет в PATHФайл есть, но оболочка не ищет в его каталоге | Абсолютный путь запускается | Исправить профиль PATH пользователя, без глобального переназначения |
| Кэш или ограничения правКоманда найдена для root, но не для пользователя либо файл без исполнения | type и ls -l дают разные результаты | Сопоставить права, команду и окружение |
#Пошаговая диагностика и устранение неисправности
- Шаг 1. Зафиксируйте имя и текст ошибкиВ том терминале и от имени того пользователя, где проявляется сбой, повторите команду и запишите точное написание. Например, пакет и запускаемый файл могут иметь разные имена; не принимайте факт установки библиотеки за наличие программы.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
printf "PATH=%s\n" "$PATH"idcommand -v ИМЯКОМАНДЫ || true
- Шаг 2. Проверьте, установлен ли именно нужный RPMЗамените ПАКЕТ на реальное имя из списка DNF. Если пакет не найден — это другая неисправность. В Rocky Linux сведения об установленных RPM можно проверить локально, даже когда репозиторий недоступен.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
rpm -q ПАКЕТdnf list --installed ПАКЕТ
- Шаг 3. Посмотрите исполняемые файлы, которые поставил пакетКоманда rpm -ql перечисляет все пути установленного RPM; наличие только /usr/share или библиотек означает, что пакет может не поставлять запускаемую утилиту. Не угадывайте /usr/bin по названию пакета.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
rpm -ql ПАКЕТ | grep -E "/(bin|sbin)/|/usr/libexec/" || true
- Шаг 4. Проверьте существование и права конкретного файлаИз результата предыдущего шага скопируйте абсолютный путь исполняемого файла. Если файл отсутствует, сначала проверьте целостность пакета; если права не позволяют запуск, выясните, кто управляет установкой. Не применяйте chmod 777 или chown ко всему /usr.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
FILE="/usr/bin/ИМЯКОМАНДЫ"ls -l "$FILE"file "$FILE"
- Шаг 5. Сравните PATH текущего пользователя с расположением программыОткройте новый терминал и проверьте наличие /usr/bin, /usr/local/bin и нужного каталога. Для исполняемых файлов только в /usr/sbin возможны ограничения роли: не добавляйте системные каталоги всем пользователям без необходимости. В скриптах используйте абсолютный путь.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
printf "%s\n" "$PATH" | tr : "\n"type -a ИМЯКОМАНДЫ || true
- Шаг 6. Проверьте расхождение оболочек и входа через sudoСравните PATH обычной и привилегированной сессии без запуска сторонних команд. Если файл в /opt, согласуйте точечный экспорт переменной в личном профиле только владельца; при наличии systemd unit для службы меняйте Environment= в unit, а не .bashrc.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
echo "$SHELL"sudo env | grep "^PATH="
- Шаг 7. Проверьте запуск без добавления каталогов глобальноЕсли абсолютный путь известен, попробуйте справку программы без изменения системы; некоторые приложения вместо --help используют -h, что нужно уточнить по man. При неудаче смотрите библиотеки и архитектуру, а не устанавливайте случайные пакеты.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
FILE="/usr/bin/ИМЯКОМАНДЫ"command -v ИМЯКОМАНДЫ || truels -l "$FILE"
#Как убедиться, что неисправность устранена
Команда обнаруживается в том же пользовательском терминале, или запуск по абсолютному пути явно объясняет ограничение PATH; не нарушены права и системные каталоги.
#Если предложенный способ не сработал
Если файл есть и не запускается, сохраните сообщение оболочки, вывод rpm -q и rpm -ql: возможны несовместимый формат ELF, отсутствующая библиотека или ограничение доступа.