Ответ
В DevOps стабильность часто важнее новизны, поэтому последние версии обычно ставятся в тестовых средах или для конкретных пакетов, где нужна новая функциональность. Процесс зависит от дистрибутива.
Debian/Ubuntu (APT): Сначала обновляю списки пакетов, затем устанавливаю конкретный пакет, что приведет к установке его последней доступной версии из репозиториев.
sudo apt update
sudo apt install --only-upgrade <имя_пакета>
# Или просто установка/обновление до последней версии
sudo apt install <имя_пакета>
RHEL/CentOS/Rocky/AlmaLinux (DNF/YUM):
# На современных системах (RHEL 8+) использую DNF
sudo dnf update <имя_пакета>
# На более старых (RHEL 7) — YUM
sudo yum update <имя_пакета>
Arch Linux (Pacman): Полное обновление системы — стандартная практика, но можно обновить и отдельный пакет.
sudo pacman -Syu <имя_пакета>
Критически важные практические моменты:
- Версионность репозиториев: По умолчанию менеджеры пакетов используют стабильные репозитории, где версии пакетов не самые свежие. Чтобы получить действительно последнюю версию (например, для Nginx, Docker, PostgreSQL), я добавляю официальные репозитории разработчиков (например,
ppa:nginx/stable,download.docker.com,apt.postgresql.org). - Использование
--only-upgradeв APT: Этот флаг предотвращает установку пакета, если он не установлен, что полезно в скриптах, где нужно только обновить существующее. - Проверка версии после установки: Всегда проверяю, что нужная версия установилась.
dpkg -l | grep <имя_пакета> # Debian/Ubuntu rpm -q <имя_пакета> # RHEL/CentOS pacman -Q <имя_пакета> # Arch - Контейнеризация: Для полного контроля над версиями софта я чаще использую Docker-образы, где версия зафиксирована в теге (
nginx:1.25-alpine).