Linux: использование yum в CentOS (обновление, установка, удаление приложений)

  • Аналог статьи про Ubuntu, Gentoo
  • Поиск драйверов для ядра (напр. bnx2)
  • CentOS работает с .rpm пакетами (так же как и RHEL, Fedora, Suse, Mandriva).
  • Вот тут есть очень хорошая шапаргалка. Ниже только самое используемое, остальное проще взять оттуда.

Обновление всех приложений (сразу и обновляем данные из репозиториев о пакетах и ставим эти пакеты)

sudo yum update

Так же может понадобиться добавление репозитория epel (оффициальный репо fedora). Приложения из репозиториев ставятся через аналогичную команду.

sudo yum install epel-release
sudo yum install python36

Установка приложения из .rpm пакета делается с помощью утилиты rpm. Можно отключить проверку на зависимости, в случае с tcpdump работает. Если не использовать этот подход, то можно получить dependency hell (tcpdump -> libpcap -> glibc…).

sudo rpm --force --nodeps -i tcpdump-4.9.2-3.el7.x86_64.rpm

Если в списке обновлений было ядро – без перезагрузки не обойтись (если нужно проверить что код нового ядра запустится корректно прямо сейчас).

(37/37): kernel-3.10.0-957.10.1.el7.x86_64.rpm

uname -a

Обновление конкретного приложения

sudo yum update certbot

Список всех приложений

sudo yum list installed

Список установленных приложений

sudo yum list installed

Поиск приложения

yum search python36

Просмотр информации о приложении

yum info python36u-pip

Удаление ненужных приложений

sudo yum autoremove

Удаление конкретного приложения

sudo yum -y remove vsftpd
Проблемы

Если ни одно из приложений при обновлении не устанавливается с ошибкой невозможности аллоцировать память – скорей всего память утекла, поможет перезагрузка. Так же имеет смысл в будущем:

  1. разобраться с тем, какое приложение послужило проблемой (напр. sql, apache)
  2. нарастить память RAM или
  3. как минимум создать SWAP файл, чтобы система могла в случае необходимости использовать память на ЖД как RAM
[Errno 5] [Errno 12] Невозможно выделить память

Пример OOM из-за mysql (сервис mysql падает в activating до перезагрузки)
~$ dmesg
[Fri Mar 27 11:16:03 2020] Out of memory: Kill process 20533 (mysqld) score 62 or sacrifice child
[Fri Mar 27 11:16:03 2020] Killed process 20533 (mysqld), UID 27, total-vm:1433124kB, anon-rss:116248kB, file-rss:0kB, shmem-rss:0kB
[Fri Mar 27 11:16:03 2020] httpd invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 ~$ sudo service mysql status ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: activating (start-post) since Пт 2020-03-27 11:16:06 MSK; 6min ago

Если жалуется на недостаток места в разделе /boot – удаляем старые ядра через утилиту package-cleanup из пакета yum-utils.

Transaction check error:
installing package kernel-3.10.0-957.5.1.el7.x86_64 needs 15MB on the /boot filesystem

Error Summary
-------------
Disk Requirements:
At least 15MB more space needed on the /boot filesystem.
~$ df -h /boot
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 240M 206M 18M 93% /boot

~$ rpm -q kernel
kernel-3.10.0-327.28.2.el7.x86_64
kernel-3.10.0-327.28.3.el7.x86_64
kernel-3.10.0-862.14.4.el7.x86_64
kernel-3.10.0-957.1.3.el7.x86_64

~$ sudo yum install yum-utils
~$ sudo package-cleanup --oldkernels --count=2

Чтобы в будущем не возникало таких же проблем можно по умолчанию оставлять только одно или два старых ядра в системе (при установке нового будут удалятся старые, если количество старых превышает лимит).

sudo vi /etc/yum.conf
installonly_limit=2 # меняем с 5 до 1 или 2

Если возникли проблемы с совместимостью пакетов и в целом работе пакетного менеджера yum, то возможно поможет чистка кеша пакетов.

sudo yum clean all

Leave a Reply