Centos 7 ошибка при настройке базового репозитория

Обновлено: 06.07.2024

Свой репозиторий может понадобиться в случае использования защищенного сегмента сети, желания сократить время загрузки пакетов, использовании своих сборок для установочных пакетов. Установка и настройка будет выполнена из командной строки.

Подготовка сервера

Выполняем некоторые настройки безопасности сервера.

Firewall

Разрешаем порты, на которых наш сервер будет принимать запросы:

firewall-cmd --permanent --add-port=/tcp

SELinux

Данный модель безопасности лучше отключить. Для этого вводим две команды:

* первая команда отключить его разово, вторая — на постоянной основе.

При необходимости использовать SELinux, читаем статью Настройка SELinux в CentOS 7.

Настройка веб-сервера

В качестве последнего мы будем использовать nginx. Для его установки, устанавливаем репозиторий epel:

yum install epel-release

После ставим сам nginx:

yum install nginx

Разрешаем запуск веб-сервера:

systemctl enable nginx

systemctl start nginx

Приветствие NGINX

Создание репозитория

Настроим свой репозиторий, в котором будут храниться установочные пакеты. Также настроим их автоматическую синхронизацию с репозиторием CentOS.

Устанавливаем необходимые утилиты для работы с локальным репозиторием:

yum install createrepo yum-utils

Создаем каталоги для репозитория:

mkdir -p /usr/share/nginx/html/repos/7//x86_64

* в данном примере будет создан каталог /usr/share/nginx/html/repos/7, а внутри него каталоги os (стандартный репозиторий для установка пакетов) и updates (обновления), в каждой из которых каталог x86_64 (для систем x64 архитектуры x86).

Синхронизируем наш будущий репозиторий с источником пакетов, например, с зеркалом от Яндекса:

После синхронизируем updates:

createrepo -v /usr/share/nginx/html/repos/7/os/x86_64

createrepo -v /usr/share/nginx/html/repos/7/updates/x86_64

А также разрешаем группы:

createrepo /usr/share/nginx/html/repos/7/os/x86_64 -g /usr/share/nginx/html/repos/7/os/x86_64/repodata/repomd.xml

createrepo /usr/share/nginx/html/repos/7/updates/x86_64 -g /usr/share/nginx/html/repos/updates/os/x86_64/repodata/repomd.xml

* в некоторых репозиториях файл repomd.xml может иметь другое название, например, comps.xml.

.
location / root /usr/share/nginx/html;
index index.html index.htm;
autoindex on;
>
.

* в данном примере мы добавили autoindex on для удобства — это позволит просматривать содержимое репозитория в браузере.

systemctl restart nginx

Настройка клиента

Чтобы гарантировать, что все пакеты будут скачиваться с локального репозитория, отключаем имеющиеся:

find /etc/yum.repos.d -type f -exec sed -i "s/enabled=1/enabled=0/g" <> \;

* в данном примере мы во всей файлах каталога /etc/yum.repos.d нашли и заменили enabled=1 на enabled=0.
* можно также поступить радикально и удалить репозитории командой
\rm /etc/yum.repos.d/*

Создаем файл с настройкой репозитория:

Также можно задать приоритет для каждого из репозиториев:

* 1 — наивысший приоритет.

Готово. Можно выполнить установку.

Если в процессе обновления или установки мы получим ошибку [Errno 14] PYCURL ERROR 22, выполняем команду yum clean all. Подробнее в статье Ошибка CentOS: [Errno 14] PYCURL ERROR 22 - The requested URL returned error: 404.

Посмотреть список установленных пакетов и с какого репозитория они были скачаны можно командой:

yum list installed

Обновление репозитория

Для поддержания списка пакетов в актуальном состоянии необходимо постоянно обновлять установочные файлы в репозиториях. Это можно делать вручную и/или автоматическом режиме.

Ручное обновление

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

И обновляем служебную информацию:

createrepo --update /usr/share/nginx/html/repos/7/os/x86_64

Аналогично, со всеми остальными репозиториями.

Автоматическое обновление

Его суть сводится к запуску скрипта в cron. Сначала создадим папку для хранения скриптов, затем сам скрипт:

Разрешаем запуск скрипта на выполнение:

chmod +x /scripts/repos_update.sh

Добавляем задание в cron:

0 1 * * * /scripts/repos_update.sh

* в данном примере мы запускаем наш скрипт каждый день в час ночи.

Разные релизы CentOS

В одном репозитории мы можем легко хранить пакеты для различных релизов операционной системы CentOS (и не только CentOS, но и PPA). Для этого создаем каталог под новый релиз, синхронизируем его с источником и создаем из него репозиторий, например:

mkdir -p /usr/share/nginx/html/repos/6//x86_64

* в данном примере предполагается использование репозитория для релиза 6.

createrepo -v /usr/share/nginx/html/repos/6/os/x86_64

createrepo -v /usr/share/nginx/html/repos/6/updates/x86_64

Epel Repo

Для Epel репозитория схема добавления похожа, кроме метода синхронизации — синхронизация с yandex выполняется с помощью wget.

Создаем отдельную ветку каталога:

mkdir -p /usr/share/nginx/html/repos/epel/7/x86_64

createrepo -v /usr/share/nginx/html/repos/epel/7/x86_64

При настройке клиента создаем файл с настройкой репозитория:

По такому же принципу мы можем добавить любой репозиторий, например, rpmforge, remi, nginx и другие.

В операционных системах семейства Linux основное программное обеспечение хранится в репозиториях. Но далеко не всегда все нужные программы есть в официальных источниках, а поскольку свой репозиторий может создать каждый, то очень скоро появились сторонние ресурсы, в которых можно найти новые версии программ или даже таких, которых пока нет в официальных хранилищах.

В Ubuntu для таких целей используются PPA-репозитории, в CentOS такой технологии нет, но зато есть достаточно простой способ установки сторонних ресурсов через пакетный менеджер. В этой статье мы рассмотрим, как добавить репозиторий CentOS 7.

Как добавить репозиторий в CentOS вручную

Все файлы репозиториев в системе CentOS или Red Hat хранятся в каталоге /etc/yum.repos.d/, вы можете посмотреть их список с помощью такой команды:


Для каждого репозитория обычно создаётся отдельный файл, но в одном файле могут находиться несколько репозиториев, которые связаны между собой. Синтаксис файла такой:

[название_репозитория]
name = описание_репозитория
mirrorlist = ссылка_на_список зеркал
baseurl = ссылка_на_зеркало с пакетами
enabled = 1
gpgcheck = 1
gpgkey = файл_ключа_подписи

А теперь разберём подробнее, что за что отвечает:

  • Название репозитория будет выводиться при обновлении списка пакетов через YUM, а также может использоваться для управления настройками репозитория через yum-config-manager, о котором мы поговорим ниже.
  • Атрибутиы mirrorlist и baseurl взаимозаменяемы, если используется один из них, то другой не нужен. Например, мы можем сразу указать ссылку на архив пакетов с помощью baseurl или указать URL, по которому можно скачать список таких ссылок. Конечно, второе предпочтительнее.
  • Параметр enabled позволяет включить или отключить репозиторий.
  • Параметр gpgcheck включает проверку цифровой подписи пакетов, а gpgkey - указывает адрес ключа, с которым надо сверять подпись. Эти параметры не обязательны.

Таким образом, чтобы подключить репозитории CentOS, необходимо просто добавить в эту папку файл настроек репозитория.


Если вы хотите использовать для репозитория проверку подписи по GPG-ключу, то надо передать URL, по которому этот ключ можно получить с помощью параметра gpgkey.

Но обычно вам не придётся этого всего делать. Большинство популярных репозиториев уже позаботились обо всём этом и создали свой rpm-пакет, который устанавливает все нужные им настройки и ключи. Обычно эти пакеты и саму команду для их установки можно найти на официальном сайте репозитория. Установка репозитория CentOS 7 NUX выполняется такой командой:


Утилита yum скачает и установит все необходимые конфигурационные файлы. И при следующем обращении к YUM будет загружен список пакетов этого репозитория.

Дальше вы можете устанавливать из него пакеты. Также можно проверить конфигурацию репозитория:


Как видите, здесь есть два репозитория: nux-desktop и nux-desktop-testing. Первый включён по умолчанию, а второй отключён. Вы можете включить его, поставив в параметре enabled значение 1.

Настройка репозиториев CentOS

В Red Hat есть утилита subscribtion-manager, которая позволяет управлять подключёнными репозиториями, устанавливать их и менять конфигурации. Она проприетарная, поэтому из CentOS вырезана. Но настройка репозитория CentOS 7 необязательно должна выполняться вручную. Существует специальная утилита - yum-config-manager, правда, она не поставляется вместе с системой и её надо установить:

yum install yum-utils

Утилита имеет несколько опций, но мы будем использовать только некоторые из них:

  • --add-repo - добавить репозиторий;
  • --enable - активировать репозиторий;
  • --disable - отключить репозиторий;
  • --setopt - установить значение параметра репозитория;

Опции --add-repo надо передать адрес файла .repo с описанием репозитория, поэтому она используется очень редко, а вот для включения или отключения репозиториев утилиту использовать очень удобно. Например, отключаем репозиторий nux-dextop:

yum-config-manager --disable nux-dextop


Затем включаем обратно:

yum-config-manager --enable nux-dextop


Если всё прошло так, как надо, то утилита выведет новую конфигурацию, если же ничего не выведено, значит такой пакет не найден. Проверьте, правильно ли вы вводите название репозитория с помощью команды:


Как удалить репозиторий CentOS

Чтобы удалить репозиторий CentOS из системы, достаточно удалить его файл из папки /etc/yum.repos.d или удалить пакет, которым вы его устанавливали. Например, удаляем репозиторий nux-dextop:

yum remove nux-dextop-release


Если репозиторий устанавливался через пакет, то такой метод удаления предпочтительнее, так как система удалит всё, что было установлено. Если же мы добавляли репозиторий вручную, достаточно удалить файл с его настройками:

Теперь этого репозитория больше нет в системе.

Выводы

В этой статье мы рассмотрели, как выполняется подключение репозитория CentOS 7. Как видите, это не сложнее, чем в Ubuntu. Преимущество Ubuntu только в том, что у неё есть централизованная база таких репозиториев и поиск по ней. А для CentOS репозитории надо искать в интернете.

infoitcomua

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

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

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

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


Как можно увидеть на скриншоте в системе установлено 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, выполните команду:

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. Типовой конфигурационный файл репозитория содержит следующие параметры:

В минимальном случае repo файл может выглядеть так:

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


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

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

Добавим в него данные, которое нам предоставляет разработчик пакета MariaDB:

Как отключить репозиторий в CentOS?

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

После этого, нужно сбросить кэш в yum:

И пересоздать его заново:

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

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

yum update —disablerepo=epel

В этом примере мы отключили репозиторий EPEL и выполнили обновление пакетов в системе.

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

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

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

yum -y install yum-utils

Удалите репозиторий, например remi:

yum-config-manager --disable remi

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

Проверка обновлений в нужном репозитории

Мы можем проверить, есть ли обновления пакетов в нужном репозитории, немного измегим команду из прошлого пункта:

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

Таким образом вы можете управлять подключенным репозиториями на сервере. Отметим, что разные репозитории могут содержать одинаковые пакеты и при обновлении у вас может возникать конфликт версий. Поэтому всегда оставляйте включенными только те репозитории, с которыми вы работаете.

Другие популярные репозитории пакетов для CentOS

MariaDB – как можно догадаться из названия, это репозиторий в котором содержатся пакеты MariaDB. Репозиторий cоздан разработчиками MariaDB, поддерживается и обновляется постоянно.

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

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

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

Пожалуй, этого списка репозиториев хватит практически каждому пользователю, я приведу еще пару примеров более-менее популярных.

Webtatic – данный репозиторий поддерживается ограниченным количеством специалистов, в основном это Andy Thompson, в нем содержаться пакеты относящиеся к php, но менее популярный, чем Remi, и я догадываюсь почему. На момент написания статьи, последняя версия php в этом репозитории была 7.2.

yum repo-pkgs webtatic list | grep php7

Чтобы подключить данный репозиторий, нужно установить rpm пакет:

MySQL – ну и пожалуй я напомню о mysql. Данный репозиторий не поставил вместе с популярными, так как на мой взгляд mysql как сервер БД отошел на второй план и в основном на сервера устанавливается MariaDB. НО если кто-то желает установить именно mysql (например, для Bitrix нужен именно mysql), вы можеже подключить этот репозиторий себе. Например если хотите подключить mysql 5.7:

И устанавливаем его:

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

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

В этой статье мы показали особенности управления репозиториями в CentOS и рассмотрели полезные репозитории.

date

13.12.2019

directory

CentOS, Linux

comments

комментария 4

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

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

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

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

yum repolist

Как можно увидеть на скриншоте в системе установлено 3 репозитория — base, extras, updates.

Этих основных репозиториев хватит, чтобы начать вашу работу по установке базового ПО и установке дополнительных репозиториев.

Рассмотрим, как добавить дополнительные репозитории в CentOS.

Пожалуй, самый популярный на данный момент репозиторий — это EPEL.

Репозиторий EPEL в CentOS 7 устанавливается очень просто (в отличии от CentOS 6) через RPM пакет (это самый простой способ добавления репозитория):

yum install epel-release

yum install epel-release

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

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

Remi — еще один популярный репозиторий для CentOS. Содержит в себе самые новейшие версии php, а так же mysql. Был создан человеком по имени Remi Collet. Чтобы использовать данный репозиторий, в системе должен быть установлен Epel. Обратите внимание, что могут быть конфликты пакетов из этого репозитория с пакетами из базовых репозиториев.

Если RPM пакета для нужного репозитория нет, вы можете добавить его, вручную создав конфигурационный .repo файл в каталоге /etc/yum.repos.d (см. следующий раздел).

Чтобы понять из каких репозиториев установлены конкретные пакеты в вашей систему, вы можете вывести полный список пакетов:

yum list installed

Как вы видите, для каждого пакета указано из какого репозитория он установлен (на скрипншоте есть репозитории base, update, epel и anaconda).

yum list installed

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

yum repo-pkgs epel list

Конфигурационные файлы репозиториев (*.repo)

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

В минимальном случае repo файл может выглядеть так:

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

/etc/yum.repos.d

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

enabled=1 включить repository в centos

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

Добавим в него данные, которое нам предоставляет разработчик пакета MariaDB:

Как отключить репозиторий в CentOS?

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

remi repository enabled=0

После этого, нужно сбросить кэш в yum:

И пересоздать его заново:

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

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

yum update —disablerepo=epel

В этом примере мы отключили репозиторий EPEL и выполнили обновление пакетов в системе.

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

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

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

yum -y install yum-utils

Удалите репозиторий, например remi:

yum-config-manager --disable remi

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

Проверка обновлений в нужном репозитории

Мы можем проверить, есть ли обновления пакетов в нужном репозитории, немного измегим команду из прошлого пункта:

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

yum check-update --disablerepo -enablerepo

Таким образом вы можете управлять подключенным репозиториями на сервере. Отметим, что разные репозитории могут содержать одинаковые пакеты и при обновлении у вас может возникать конфликт версий. Поэтому всегда оставляйте включенными только те репозитории, с которыми вы работаете.

Другие популярные репозитории пакетов для CentOS

MariaDB – как можно догадаться из названия, это репозиторий в котором содержатся пакеты MariaDB. Репозиторий cоздан разработчиками MariaDB, поддерживается и обновляется постоянно.

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

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

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

Пожалуй, этого списка репозиториев хватит практически каждому пользователю, я приведу еще пару примеров более-менее популярных.

Webtatic – данный репозиторий поддерживается ограниченным количеством специалистов, в основном это Andy Thompson, в нем содержаться пакеты относящиеся к php, но менее популярный, чем Remi, и я догадываюсь почему. На момент написания статьи, последняя версия php в этом репозитории была 7.2.

yum repo-pkgs webtatic list | grep php7

Чтобы подключить данный репозиторий, нужно установить rpm пакет:

MySQL – ну и пожалуй я напомню о mysql. Данный репозиторий не поставил вместе с популярными, так как на мой взгляд mysql как сервер БД отошел на второй план и в основном на сервера устанавливается MariaDB. НО если кто-то желает установить именно mysql (например, для Bitrix нужен именно mysql), вы можеже подключить этот репозиторий себе. Например если хотите подключить mysql 5.7:

И устанавливаем его:

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

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

add mysql repository centos

В этой статье мы показали особенности управления репозиториями в CentOS и рассмотрели полезные репозитории.

Читайте также: