Забудьте про yum install
из прошлого. Если вы на Red OS, правильный путь – dnf install ./пакет.rpm
. Да, именно так, с точкой. Без этого – получите ошибку. Локальный файл? Указывай явно. Не запутайся.
Работаем с пакетами? Никогда не лезьте в rpm -i
, если нет уверенности в зависимостях. Это путь к хаосу. dnf
сам подберёт нужное, если не мешать. Доверяй, но проверяй – dnf repoquery --requires ./имя.rpm
.
Важно! Если используешь
rpm
напрямую – проверь, установлены ли все библиотеки. Ошибка сегментации – частый привет от забытых зависимостей.
Для обновления используйте dnf upgrade ./имя.rpm
. Не update
. Именно upgrade – иначе система проигнорирует версию. И не забудьте ключ --nogpgcheck
, если файл не подписан. Это не рекомендация – это реальность Red OS.
Захотел свериться с текущей версией? rpm -q имя_пакета
. Получил длинный хвост? Используй --queryformat
. Например: rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}\n' имя
.
Внимание! Никогда не обновляй ядро без резервной копии конфигураций. Один неверный пакет – и привет GRUB rescue.
Ошибка зависимости? Разбей по частям. dnf deplist имя
покажет всё. Или dnf repoquery --whatprovides нужная_библиотека
. Не ищи глазами, grep рулит: dnf repoquery --available | grep exactname
.
И наконец. Если руками тащишь сборку – проверь rpm -Va
. Что не совпадает – тот и враг. Повреждён? Переустанови. Командой: dnf reinstall имя
.
Это не Fedora. Здесь важен каждый флаг. Каждый вызов. Игнорируешь детали – запускаешь войну с системой. Победишь ли ты – вопрос.
Содержание статьи
Как установить локальный RPM-пакет с учетом зависимостей
Хочешь сразу видеть, чего не хватает? Используй dnf repoquery --requires ./имя_файла.rpm
. Понял список – проверяй, что доступно: dnf repoquery --whatprovides библиотека
. Ручками можно, но не нужно. Слишком много тонкостей.
Зависимости подтянутся только при наличии правильных репозиториев. Red OS не прощает кривой конфигурации /etc/yum.repos.d/
. Проверь подключение. Командой: dnf repolist
. Пусто? Тебе туда – в документацию по подключению официальных зеркал.
Внимание! Если игнорировать зависимости и запустить
rpm -ivh имя.rpm
, получишь либо нерабочий бинарь, либо обрушение зависимых компонентов. Без предупреждений. Без диалогов. Просто смерть.
Иногда пакет требует конкретной версии чего-то странного. Ищем вручную. Используем dnf provides '*/libчто-то.so'
. Нашёл? Установи. Или собери сам. Иначе не поедет.
Для массовой установки нескольких файлов: dnf install ./путь/*.rpm
. Только без фанатизма. Если хоть один конфликтует – всё встанет. Лучше поштучно, внимательно. Не как на Fedora. Здесь архитектура строже.
Важно помнить: если система в режиме минимального окружения, даже базовые зависимости могут отсутствовать. Без
glibc
ты вообще никто. Убедись, что это не так.
Нужна тишина в логах? Используй ключ -q
. Для отладки наоборот – -v
. Не путай. Тишина бывает опасной. Особенно когда не видишь, что именно пошло не так.
Логика простая: файл → зависимость → проверка → интеграция. Но не верь простоте. Под капотом – сотни условий. Отказ от проверки – добровольный прыжок в пропасть. Кто тебя потом достанет – вопрос открытый.
Обновление установленного ПО с помощью rpm и dnf
Если есть локальный файл новой версии – используй dnf upgrade ./имя.rpm
. Не install
, не update
. Только upgrade. Без этого Red OS проигнорирует версию выше, но с другим релизом. Хочешь ловить баги старой сборки? Действуй по-другому.
rpm -Uvh файл.rpm
– грубый метод. Он не тянет зависимости. Он просто ставит. А если не получится – рухнет. Молча. Без обоснования. Используй --test
перед выполнением, если настаиваешь на rpm
: rpm -Uvh --test имя.rpm
.
Важно помнить:
rpm -Uvh
удаляет старую версию перед тем как поставить новую. Если процесс прервётся – останешься ни с чем. На продакшене – смертельно.
Нужно сравнить текущую сборку с загруженным пакетом? rpm -qp имя.rpm
даст всю базовую информацию. Добавь --queryformat
и получишь ровно то, что нужно. Пример: rpm -qp --queryformat '%{VERSION}-%{RELEASE}\n' имя.rpm
.
Найти, что из текущего окружения можно освежить? dnf check-update
. Не доверяешь? Сравни руками: rpm -q имя
и dnf info имя
. Разница будет видна сразу.
Внимание! Никогда не запускай массовое обновление
dnf upgrade
на боевом сервере без полного бэкапа. Особенно если задействованы сторонние репозитории. Улетишь в неизвестность.
Если хочешь обновить один компонент, а не всё окружение – явно укажи имя: dnf upgrade nginx
. Или путь к файлу. Только не пытайся смешивать методы. Red OS не прощает расплывчатость.
Избавиться от старых версий после обновления? Используй dnf autoremove
. Но смотри, что удаляет. Там могут быть зависимости, нужные для скриптов или сторонних сборок.
И не забывай: dnf history list
– твой чёрный ящик. Всё, что было сделано – там. dnf history undo ID
откатит назад. Но только если повезёт. Иногда уже поздно. Иногда слишком поздно.
Работать с обновлениями надо как сапёр. Ошибся – взорвался. Или сгорел в логах. Или утонул в зависимостях. Вариантов немного.
Решение проблем с конфликтами версий при установке RPM
Сначала найди, кто мешает. Команда dnf list installed | grep имя
покажет всё, что связано. Версия, релиз, архитектура – без догадок. Дальше проверь, что хочет файл: rpm -qpR ./имя.rpm
. Сравни с тем, что в системе. Несовпадение? Конфликт обеспечен.
Чтобы увидеть, кто держит нужную библиотеку – dnf repoquery --whatrequires библиотека
. Или сразу жёстко: rpm -q --whatrequires пакет
. Получишь полный список зависимых. Удалишь – рухнет полсистемы. Решай сам.
Внимание! Не пытайся насильно переустановить несовместимую версию без полной изоляции. Используй контейнер, chroot или другую песочницу. Red OS не игрушка.
Если пакет отказывается идти из-за дублирующегося содержимого – rpm -Uvh --replacepkgs --replacefiles имя.rpm
. Только не забывай, это ломает логику зависимости. После таких трюков – проверяй dnf check
.
Нужно поставить две версии рядом? Только если у них разные имена и разные пути установки. Проверь содержимое: rpm -qpl имя.rpm
. Совпадают директории? Битва неизбежна.
Проблемы с архитектурой? Бывает. Убедись, что ставишь x86_64, если у тебя 64-битная система. uname -m
тебе в помощь. Если там i686 – проверь, не попал ли ты в зоопарк устаревших библиотек.
Помните! Никогда не ставьте сборку из другой версии дистрибутива без пересборки. Она может потянуть glibc, coreutils или systemd. Последствия – необратимы.
Для анализа сложных случаев – dnf download имя --resolve
. Получишь все зависимости. Смотри, что придёт в комплекте. Иногда среди них – старье, которое снесёт работающие библиотеки.
Если всё рушится – начинай с чистого лога: journalctl -xe
и /var/log/dnf.log
. Там не врут. Там вся боль.
Никаких автопилотов. Только ручной режим. Только анализ. Только контроль версий. Не знаешь, что идёт в систему? Лучше не трогай. Ошибка здесь – не сбой. Это катастрофа.