Yum менеджером пакетов

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

* где:

  • 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