Журнал Эмбеддед-Инженера

Yum: советы и шпаргалки

Ускоряем yum

sudo yum makecache

Фиксация версии ПО в yum

Задача: необходимо запретить обновление следующих пакетов (на виртуалбокс необходимо каждый раз вручную накатывать ext-pack, а из-за отсутствия зависимостей по dkms при обновлении ядра не пересобираются модули виртуалбокс и он перестаёт запускаться):

kernel-ml
kernel-ml-devel
kernel-ml-headers
VirtualBox-5.0

Устанавливаем плагин к yum и фиксим текущие версии пакетов:

sudo yum install -y yum-plugin-versionlock.noarch
sudo yum versionlock add VirtualBox-5.0
sudo yum versionlock add kernel-ml kernel-ml-devel kernel-ml-headers

Установка свежего ядра 4.х

Можно ставить и обновлять через yum из репозитория elrepo-kernel, а можно напрямую:

wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-4.9.2-1.el7.elrepo.x86_64.rpm
sudo rpm -iUv kernel-ml-4.9.2-1.el7.elrepo.x86_64.rpm
sudo grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
sudo grub2-set-default 0
sudo reboot

Подключение локального репозитория

Посмотрим список подключенных реп yum repolist; отключаем их, если надо, в /etc/yum.repos.d/*.repo, меняя опцию enabled=0. Создаем файл /etc/yum.repos.d/CentOS-Base-local.repo со следующим содержимым:

[base]
name=CentOS-$releasever - Base
baseurl=file:///repository/centos/7/os/x86_64
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=file:///repository/centos/7/updates/x86_64
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=file:///repository/centos/7/extras/x86_64
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Создаем файл /etc/yum.repos.d/elrepo-local.repo со следующим содержимым:

[elrepo]
name=ELRepo.org Community Enterprise Linux Repository - el7
baseurl=file:///repository/epel
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0

[elrepo-kernel]
name=ELRepo.org Community Enterprise Linux Kernel Repository - el7
baseurl=file:///repository/epel-kernel
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0

Команды обновления локальных реп (лучше запускать по крону раз в неделю, например):

rsync -iavrt --delete-before rsync://mirror.yandex.ru/centos/7/os/x86_64 /repository/packages/centos/7/os
rsync -iavrt --delete-before rsync://mirror.yandex.ru/centos/7/updates/x86_64 /repository/packages/centos/7/updates
rsync -iavrt --delete-before rsync://mirror.yandex.ru/centos/7/extras/x86_64 /repository/packages/centos/7/extras/
rsync -iavrt --delete-before --exclude debug rsync://mirror.yandex.ru/fedora-epel/7/x86_64 /repository/packages/epel
PS: если заметка помогла Вам, поделитесь ей с друзьями или коллегами: