Thank you for reading this post, don't forget to subscribe!
В данном руководстве мы будем использовать только команду yum, так как она работает и в CentOS 7 и в 8.
Репозитории
Команда yum/dnf использует репозитории для своей работы. Очень важно понять, как с ними работать в системе. Конфиги репозиториев CentOS описывают пути, по которым система может брать установочные файлы для пакетов, а также правила работы с самими репозиториями.
Примеры команд для управления репозиториями
1. Просмотр репозиториев.
Список включенных репозиториев:
yum repolist
Список включенных и отключенных репозиториев:
yum repolist all
Также мы можем получить подробное описание для каждого включенного репозитория:
yum repolist -v
Список отключенных репозиториев можно посмотреть отдельно командой:
yum repolist disabled
2. Добавление репозитория командой.
Для добавления репозитория мы можем воспользоваться командой yum-config-manager, для этого сначала нужно установить yum-utils:
yum install yum-utils
Теперь вводим:
yum-config-manager --add-repo <репозиторий>
Например:
yum-config-manager --add-repo https://yum.mariadb.org/10.5/centos8-amd64
* на основе ссылки https://yum.mariadb.org/10.5/centos8-amd64 будет добавлен репозиторий.
3. Добавление репозитория через файл.
Также мы можем создать конфигурационный файл с описанием репозитория. Все файлы находятся в каталоге /etc/yum.repos.d. Например, создадим файл с добавлением репозитория mariadb:
vi /etc/yum.repos.d/mariadb.repo
1 2 3 4 5 6 |
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.5/centos8-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 enabled=1 |
* где:
- name — произвольное имя репозитория.
- baseurl — путь, по которому система может забирать пакеты из репозитория.
- gpgkey — путь до открытого gpg-ключа. Нужен для проверки цифровой подписи пакетов.
- gpgcheck — нужно ли проверять цифровую подпись пакетов.
- enabled — опция включает или выключает репозиторий.
4. Временное включение и отключение репозиториев во время операций (на примере репозитория EPEL).
Отключить во время обновления:
yum update --disablerepo=epel
Включить во время обновления:
yum update --enablerepo=epel
Отключить во время установки:
yum install --disablerepo=epel
Включить во время установки:
yum install --enablerepo=epel
5. Постоянное отключение/включение репозиториев.
Мы можем отключить наш репозиторий командой:
yum-config-manager --disable <имя репозитория>
* для выполнения данной команды мы должны установить в систему пакет yum-utils.
Например:
yum-config-manager --disable yum.mariadb.org_10.5_centos8-amd64
Разрешить репозиторий можно той же командой с опцией --enable:
yum-config-manager --enable yum.mariadb.org_10.5_centos8-amd64
Также мы можем выполнить настройку в конфигурационном файле, например:
vi /etc/yum.repos.d/mariadb.repo
Находим:
enabled=1
… и меняем на:
enabled=0
* в данном примере 1 разрешает репозиторий, а 0 запрещает.
6. Управление потоками в CentOS 8
dnf module list nodejs
dnf module enable nodejs:12
7. Настройка опций.
Наши репозитории настраиваются с помощью опций, которые перечислены в конфигурационном файле. Мы можем также их задавать командой:
yum-config-manager --save --setopt=<имя репозитория>.<имя опции>=<значение>
Например:
yum-config-manager --save --setopt=mariadb.module_hotfixes=1
Процесс установки и обновления пакетов
1. Установка пакета:
yum install <имя пакета>
2. Обновление всех установленных пакетов:
yum update
3. Обнолвение конкретного пакета
yum update <имя пакета>
4. Установить пакет из определенного репозитория:
yum --disablerepo="*" --enablerepo=thirdparty install nginx
* как говорилось выше, мы можем оперировать опциями disablerepo и enablerepo для включения и отключения репозитория во время установки. В данном примере мы запретили все и разрешили установить нужный нам пакет из репозитория thirdparty.
Обслуживание
1. Удалить кэш для списков пакетов в репозиториях, а также загруженные исходники для пакетов:
yum clean --enablerepo=* all
Заблокировать установку и обновление пакетов
В некоторых случаях, может возникнуть необходимость запретить установку и обновление определенных пакетов. Есть несколько способов это сделать.
1. Во время обновления (разово)
Данный метод можно использовать при обновлении пакетов. Мы с помощью ключа -x просто указываем через запятую те, которые не должны быть обновлены, например:
yum -x postgresql*,asterisk update
* данной командой мы обновим все пакеты, кроме asterisk и тех, название которых начинается на postgresql.
2. Постоянный запрет в yum.conf
Аналогично, можно запретить как установку, так и обновление в конфигурационном файле yum.conf. Открываем его командой:
vi /etc/yum.conf
Добавляем:
exclude=postgresql* asterisk
* в данном примере мы также запретим установку и обновление asterisk, а также пакетов, название которых начинается на postgresql.
3. Настройка репозитория
Ну и также мы можем заблокировать установку и обновление через конфигурационный файл репозитория. Например:
vi /etc/yum.repos.d/pgdg-redhat-all.repo
И добавим:
[pgdg12]
…
exclude=postgresql12*
* в данном примере мы блокируем пакет postgresql12.
Возможные ошибки
Рассмотрим примеры ошибок, с которыми мы можем столкнуться и способы их решения.
1. Curl error (60): SSL peer certificate or SSH remote key was not OK
Ошибка появляется при попытке выполнить операцию обновления или установки пакетов.
Причина: сертификат подключенного репозитория не проходит проверку. Возможно, он просрочен или выдан не доверенным центром сертификации.
Решение: проблему можно решить на стороне сервера (если мы являемся его администратором), например, получив правильный сертификат у Let's Encrypt. На стороне клиента можно отключить проверку SSL для репозитория командой:
yum-config-manager --save --setopt=<имя репозитория>.sslverify=0
Или в конфигурационном файле репозитория добавить или изменить строку с sslverify:
sslverify=0
* данная опция задает необходимость проверки SSL для репозитория.
2. Error: GPG validation FAILED
Ошибка появляется при попытке установить пакет.
Причина: система не может загрузить и импортировать gpg-ключ. Это возможно в разных сценариях, например, в настройках репозитория не указан путь до него, но при этом указано, что проверка подписи необходима или ключ не удалось загрузить и импортировать.
Решение: для некоторых пакетов идет отдельная инструкция по настройке репозитория, в частности, установки ключа GPG. Или мы можем отключить проверку gpg командой:
yum-config-manager --save --setopt=<имя репозитория>.gpgcheck=0
Или через конфигурационный файл:
gpgcheck=0