Додавання і управління репозиторій в CentOS / RHEL

У стандартних (офіційних) репозиторіях RHEL / CentOS є лише невелика кількість базових пакетів, причому в них іноді пропонуються не найновіші версії програм. Однак ви можете використовувати сторонні публічні або приватні репозиторії для установки нових версій програм в Red Hat Enterprise Linux, CentOS, Oracle Linux і Scientific Linux. З найбільш поширених сторонніх репозиторіїв можна виділити Remi і EPEL. У цій статті ми розглянемо особливості підключення, управління і використання додаткових репозиторіїв за допомогою пакетного менеджера YUM в CentOS 7.

зміст:

  • Підключення репозиторіїв EPEL і Remi в CentOS
  • Файли репозиторіїв (* .repo)
  • Як відключити репозиторій в CentOS?
  • Перевірка оновлень в потрібному репозиторії
  • Інші популярні репозиторії пакетів для CentOS

Репозиторій є оновлюється сховище rpm-пакетів програм для Linux. Різні менеджери пакетів можуть використовувати мережеві репозиторії для встановлення та оновлення програм.

Підключення репозиторіїв EPEL і Remi в CentOS

При установці операційної системи (в нашому прикладі це CentOS 7), за замовчуванням встановлюються базові репозиторії. Подивитися їх список можна за допомогою такої команди:

yum repolist

Як можна побачити на скріншоті в системі встановлено 3 сховища - base, extras, updates.

Цих основних репозиторіїв вистачить, щоб почати вашу роботу по установці базового ПО та встановлення додаткових репозиторіїв.

Розглянемо, як додати додаткові репозиторії в CentOS.

Мабуть, найпопулярніший на даний момент репозиторій - це EPEL.

EPEL (Extra Packages for Enterprise Linux) - це відкритий і безкоштовний проект сховища, що надається командою Fedora. Він містить в собі високоякісні пакети додаткового ПЗ для Linux. В даному репозиторії розміщується величезна кількість пакетів починаючи з ftp-серверів, закінчуючи php і утилітами моніторингу системи. Це найпопулярніший додатковий репозиторій. Важливо відзначити, що пакети з EPEL не конфліктують з рідними пакетами CentOS / RHEL і не замінюють їх.

Репозиторій EPEL в CentOS 7 встановлюється дуже просто (на відміну від CentOS 6) через RPM пакет (це найпростіший спосіб додавання репозиторію):

yum install epel-release

Після установки даний репозиторій відображається в списку, навіть без додаткових маніпуляцій (очищення кеша yum не потрібно).

Щоб підключити репозиторій Remi, виконайте команду:

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Remi - ще один популярний репозиторій для CentOS. Містить в собі найновітніші версії php, а так само mysql. Був створений людиною на ім'я Remi Collet. Щоб використовувати цей репозиторій, в системі повинен бути встановлений Epel. Зверніть увагу, що можуть бути конфлікти пакетів з цього сховища з пакетами з базових репозиторіїв.

Якщо RPM пакета для потрібного сховища немає, ви можете додати його, вручну створивши конфігураційний .repo файл в каталозі /etc/yum.repos.d (див. Наступний розділ).

Щоб зрозуміти з яких репозиторіїв встановлені конкретні пакети у вашій систему, ви можете вивести повний список пакетів:

yum list installed

Як ви бачите, для кожного пакета вказано з якого сховища він встановлений (на скріпншоте є репозиторії base, update, epel і anaconda).

Ви можете вивести список пакетів, доступних для установки в конкретному репозиторії:

yum repo-pkgs epel list

Файли репозиторіїв (* .repo)

Всі конфігураційні файли репозиторіїв розташовані в директорії /etc/yum.repos.d/. В конфігураційних файл * .repo. Типовий конфігураційний файл сховища містить наступні параметри:

  • name - ім'я сховища;
  • baseurl - посилання на репозиторій (може бути ftp: // address, http: // address, https: // address або file: // address для локального сховища);
  • enabled - чи потрібно використовувати даний репозиторій: 1 - репозиторій підключений, 0 - відключений;
  • async - використовувати чи паралельну завантаження пакетів (auto / on / off);
  • gpgcheck - чи потрібно виконувати перевірку GPG (1 - перевіряти);
  • gpgkey - посилання на GPG ключ;
  • exclude - список виключених пакетів;
  • includepkgs - список включених пакетів;
  • mirrorlist - список дзеркал сховища.

У мінімальному випадку repo файл може виглядати так:

[Rep_name] name = rep_name baseurl = rep_url

Наприклад, після підключення сховища REMII, в директорії репозиторіїв з'явиться кілька конфігураційних файлів Remi (remi - *. Repo).

Як ви бачите, Remi має окремий конфігураційний файл для кожної версії php. Вам потрібно включити потрібну вам версію в файлі конфігурації, наприклад у мене на сервері буде стояти версія php 7.3, для цього я включив саме цей репозиторій (в файлі remi-php73.repo вказав enabled = 1):

Ви можете підключить репозиторій вручну, для цього потрібно створити конфігураційний файл сховища в директорії /etc/yum.repos.d/. Підключимо репозиторій MaruaDB.

nano /etc/yum.repos.d/mariadb.repo

Додамо в нього дані, яке нам надає розробник пакета MariaDB:

[Mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos73-amd64/ gpgkey = https: //yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1 

Як відключити репозиторій в CentOS?

Щоб відключити один з підключених репозиторіїв, досить в його файлі конфігурації вказати enabled = 0.

Після цього, потрібно скинути кеш в yum:

yum clean all

І перебудувати його заново:

yum makecache

Тепер при установці або оновленні пакетів, репозиторій remi-php73 використовуватися не буде.

Якщо ви хочете, щоб певний репозиторій не використовувалася тільки при виконанні поточної команди поновлення / установки пакета, можна відключити репозиторій в рамках виконання запиту yum, наприклад:

yum update -disablerepo = epel

У цьому прикладі ми відключили репозиторій EPEL і виконали оновлення пакетів в системі.

Ви можете тимчасово відключити всіх репозиторії, крім певних. Наприклад, щоб встановити оновлення тільки для пакетів з репозиторію MariaDB:

yum update --disablerepo "*" --enablerepo = mariadb

Для видалення репозиторіїв використовується утиліта yum-config-manager, яка входить в набір yum-utils.

Встановіть yum-utils:

yum -y install yum-utils

Видаліть репозиторій, наприклад remi:

yum-config-manager --disable remi

Для повного видалення репозиторій потрібно видалити його конфігураційні файли і оновити кеш yum.

Перевірка оновлень в потрібному репозиторії

Ми можемо перевірити, чи є оновлення пакетів в потрібному репозиторії, трохи ізмегім команду з минулого пункту:

yum check-update --disablerepo "*" --enablerepo = mariadb

Таким чином ви можете управляти підключеним репозиторіями на сервері. Відзначимо, що різні сховища можуть містити однакові пакети і при оновленні у вас може виникати конфлікт версій. Тому завжди залишайте ввімкненими тільки ті репозиторії, з якими ви працюєте.

Інші популярні репозиторії пакетів для CentOS

MariaDB - як можна здогадатися з назви, це репозиторій в якому містяться пакети MariaDB. Репозиторій Створено розробниками MariaDB, підтримується і оновлюється постійно.

Щоб встановити даний репозиторій в систему, потрібно створити для нього repo файл з вмістом:

[Mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos73-amd64/ gpgkey = https: //yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1

Nginx - аналогічно попередньому сховища, несе в собі пакети пов'язані з httpd-сервером nginx.

І підключення даного сховища, схоже на підключення сховища MariaDB. Створюємо створюємо .repo файл і поміщаємо туди дану інформацію:

[Nginx-stable] name = nginx stable repo baseurl = http: //nginx.org/packages/CentOS/$releasever/$basearch/ gpgcheck = 1 enabled = 1 gpgkey = https: //nginx.org/keys/nginx_signing. key

Даного списку репозиторіїв вистачить для настройки так званого LAMP, з встановленим в якості front-end сервера nginx-му.

Мабуть, цього списку репозиторіїв вистачить практично кожному користувачеві, я наведу ще пару прикладів більш-менш популярних.

Webtatic - даний репозиторій підтримується обмеженою кількістю фахівців, в основному це Andy Thompson, в ньому міститися пакети відносяться до php, але менш популярний, ніж Remi, і я здогадуюся чому. На момент написання статті, остання версія php в цьому репозиторії була 7.2.

yum repo-pkgs webtatic list | grep php7

mod_php71w.x86_64 7.1.31-1.w7 webtatic mod_php72w.x86_64 7.2.21-1.w7 webtatic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ php72w-tidy.x86_64 7.2.21-1.w7 webtatic php72w-xml.x86_64 7.2.21-1.w7 webtatic php72w-xmlrpc.x86_64 7.2.21-1.w7 webtatic 

Щоб підключити даний репозиторій, потрібно встановити rpm пакет:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

MySQL - ну і мабуть я нагадаю про mysql. Даний репозиторій не поставив разом з популярними, так як на мій погляд mysql як сервер БД відійшов на другий план і в основному на сервера встановлюється MariaDB. АЛЕ якщо хтось бажає встановити саме mysql (наприклад, для Bitrix потрібен саме mysql), ви можеже підключити цей репозиторій собі. Наприклад якщо хочете підключити mysql 5.7:

Викачуємо пакет:

wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

І встановлюємо його:

rpm -Uvh mysql57-community-release-el7-9.noarch.rpm

Після установки, у мене з'явилася можливість встановити mysql:

У цій статті ми показали особливості управління репозиторіями в CentOS і розглянули корисні репозиторії.