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
Пример обновления ядра centos
1. Run the uname command and check the version of the running kernel
[root@localhost ~]# uname -r
3.10.0-327.el7.x86_64
2. Run the yum command to install the latest available kernel from the subscription management service using either the update or the install subcommand:
[root@localhost ~]# yum -y update kernel
3. Confirm that the kernel package has been updated. The output indicates that a higher kernel version 3.10.0-123.8.1.el7 has been installed. It also shows the presence of the previous kernel.
[root@localhost ~]# yum list installed kernel
Installed Packages
kernel.x86_64 3.10.0-327.el7 @anaconda
kernel.x86_64 3.10.0-327.36.2.el7 @updates
4. The /boot/grub2/grub.cfg file gets the newest kernel menuentry added to it as well. Reboot the system and you will see the new kernel menu entry shows up in the GRUB boot list. The system will boot with this kernel as the install process has marked it as the default kernel
[root@localhost ~]# cat /boot/grub2/grub.cfg | grep menuentry | grep el7
menuentry 'CentOS Linux (3.10.0-327.36.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-9de934e4-f41b-4169-ab46-d4d8e9e43664' {
menuentry 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-9de934e4-f41b-4169-ab46-d4d8e9e43664' {
5. Reboot the system and you will see the new kernel menu entry shows up in the GRUB boot list. The system will boot with this kernel as the install process has marked it as the default kernel. Run the uname command again after the reboot to confirm the loading of the new kernel. You can also view the contents of either of the following files to verify the new kernel.
[user1@localhost ~]$ uname -r
3.10.0-327.36.2.el7.x86_64
Проблемы

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

  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