Как настроить локальный репозиторий HTTP YUM на CentOS

Как настроить локальный репозиторий HTTP YUM на CentOS

Репозиторий программного обеспечения (repository или сокращенно repo) — это центральное хранилище пакетов ПО для операционной системы, предназначенных для скачивания и установки на компьютеры пользователей данной ОС. Как правило, такие удаленные хранилища размещаются в сети Интернет — на серверах, обеспечивающих поддержку соответствующей платформы. Репозитории могут быть как бесплатными (большинство репозиториев ПО для ОС семейства GNU / Linux и Unix), так и платными.

С другой стороны, поимом глобальных можно создать и настроить собственный локальный репозиторий. Доступ к такому хранилищу будет возможен лишь в масштабах конкретного компьютера или локальной сети. Например, так часто поступают на предприятиях, создавая собственное хранилище для пакетов ПО. Локальный репозиторий удобен тем, что не зависит от подключения к Интернету.

В этой статье мы расскажем о том, как настроить локальный веб-сервер YUM-хранилища через HTTP (Nginx) на CentOS VPS. Также на примерах покажем, как найти и установить пакеты программного обеспечения на клиентских компьютерах CentOS.

Содержание:

  1. Что такое YUM
  2. Локальный репозиторий HTTP YUM, пошаговая инструкция по настройке
    1. Шаг №1 — установка веб-сервера Nginx
    2. Шаг №2 — создание локального репозитория YUM
      1. Опции команд reposync
      2. Пример вывода reposync
      3. Завершение создания локального репозитория
    3. Шаг №3 — создание задания Cron для синхронизации пакетов репозитория
    4. Шаг №4 — настройка локального репозитория YUM на клиентских машинах
  3. Выводы

Что такое YUM

YUM — это Yellowdog Updater Modified, популярный менеджер пакетов в дистрибутивах Linux, использующих формат RPM (RedHat Package Manager). Он существенно упрощает установку программного обеспечения и потому часто использует при работе в следующих дистрибутивах Linux:

  • RHEL (Red Hat Enterprise Linux, востребованный дистрибутив с платной техподдержкой для корпоративных клиентов);
  • CentOS (бесплатный форк RHEL, обладающий тем же функционалом без технической поддержки);
  • Fedora (аналог RHEL, спонсируемый Red Hat и IBM, создаваемый на основе принципов ПО с открытым исходным кодом силами сообщества);
  • Oracle Linux (еще один бесплатный аналог RHEL с возможностью платной технической поддержки).

Любой системный администратор в своей работе будет сталкиваться хотя бы с одним из перечисленных выше дистрибутивов, потому очень важно научиться работать с YUM как можно скорее.

Локальный репозиторий HTTP YUM, пошаговая инструкция по настройке

Мы разобрались в том, что представляет собой этот популярный пакетный менеджер и обсудили вкратце его сферу применения. Давайте разберемся в процессе настройки локального репозитория HTTP YUM на примере популярного дистрибутива CentOS из семейства RHEL-подобных операционных систем.

Шаг №1 — установка веб-сервера Nginx

Сперва нужно осуществить установку Nginx — необходимого нам HTTP-сервера. Выполнить ее можно из репозитория EPEL (хранилища дополнительных пакетов Enterprise Linux, не входящих в список ПО по умолчанию). Уже на этом этапе попробуем воспользоваться YUM, введя в командную строку следующую команду:

 

Мы установили веб-сервер Nginx! После чего нужно запустить его и внести в список приложений, которые должны запускаться автоматически при загрузке операционной системы. В этом нам помогут следующие команды управления службами: systemctl start (запуск приложения) и systemctl enable (внесение в список автозагрузки). Тогда как проверить результаты их введения поможет команда systemctl status (состояние приложения).

 

Чтобы обеспечить работоспособность Nginx, придется разрешить службе веб-трафик. Для этого следует открыть порты 80 и 443, после чего — обновить правила брандмауэра операционной системы, разрешив передачу пакетов по HTTP / HTTPS. Чтобы сделать это — введите в командную строку следующие команды:

 

Вам наверняка захочется убедиться, что Ваш сервер Nginx работает нормально. Сделать это довольно просто — введите в своем веб-браузере следующий URL-адрес:

 

В результате Вы должны увидеть страницу, показанную на приведенном выше скриншоте.

Шаг №2 — создание локального репозитория YUM

Теперь все готово к тому, чтобы заняться созданием локального репозитория YUM. Для этого нам потребуются соответствующие пакеты, скачать и установить которые поможет следующая команда:

 

Далее нужно создать каталоги, в которых будут хранится пакеты со всеми необходимыми данными — это и будет Ваш локальный репозиторий YUM. Выполнить эту операцию поможет следующая команда:

 

Осталось использовать reposync, чтобы для синхронизировать репозитории CentOS YUM с созданными ранее локальными каталогами. Воспользуйтесь следующими примерами команд:

Опции команд reposync

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

  • -g — удаление пакетов, которые не поддаются проверке подписи GPG после загрузки;
  • -l — поддержка плагина YUM;
  • -d — удаление локальных пакетов, которые больше не представлены в репозитории;
  • -m — поддержка загрузки файлов comps.xml;
  • --repoid — указание идентификатора репозитория;
  • --newest-only — получение только последних версий для каждого пакета в репозитории;
  • --download-metadata — загрузка всех метаданных, отличающихся от стандартных;
  • --download_path — путь для загрузки пакетов.

Пример вывода reposync

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

Завершение создания локального репозитория

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

 

Следующий этап — создание новой реподаты (RepoData) для вашего хранилища. В этом нам поможет команда createrepo с опцией -g, предназначенной для обновления информации о группе пакетов в указанном XML-файле:

 

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

 

Следовательно, нужно добавить в файл repos.conf следующие настройки:

 

Важно: не забудьте сохранить файл перед закрытием!

Обязательно перезапустите свой веб-сервер Nginx. А потом перейдите по следующему URL-адресу в Вашем браузере:

 

View-Local-Yum-Repositories

В результате Вы должны увидеть примерно такую же картину, как на приведенном выше скриншоте.

Шаг №3 — создание задания Cron для синхронизации пакетов репозитория

Чтобы своевременно получать важные обновления программного обеспечения и исправления ошибок, критических для безопасности системы, можно создать задание Cron для автоматической синхронизации. В результате Ваш локальный репозиторий будет обновлять пакеты из официального репозитория CentOS. Даже при отсутствии подключения к сети потом можно будет устанавливать актуальные версии программного обеспечения. Для этого воспользуйтесь следующей командой, чтобы создать текстовый файл:

 

Скрипт оболочки bash должен содержать следующий текст:

 

Важно: не забудьте сохранить файл перед закрытием!

Также нужно установить на файл скрипта соответствующие разрешения. Для этого воспользуемся командой chmod в числовом формате:

Шаг №4 — настройка локального репозитория YUM на клиентских машинах

Теперь осталось добавить созданный локальный репозиторий в конфигурацию YUM на компьютерах пользователей, управляемых CentOS. Для этого снова создадим текстовый файл local-repos.repo:

 

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

 

Важно: не забудьте сохранить файл перед закрытием!

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

 

Или следующая:

 

Как настроить локальный репозиторий HTTP Yum на CentOS 7?

В результате Вы должны увидеть свой репозиторий в списке доступных, как на приведенном выше скриншоте.

Выводы

Мы настроили локальный репозиторий YUM на CentOS — это оказалось куда проще сделать, чем могло бы показаться сначала. Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Больше похожих постов

3 комментария. Оставить новый

  • Добрый день! спасибо за статью! но у меня есть вопрос, я поднимаю локальный репо на Centos 7, и есть клиентские сервера без доступа к интернет и они должны брать обновы с сервера репо. как по статье настроил. дела. yum update что бы скачать обновы но клиентские сервера не обновляются. Вот такую ошибку пишет

    yum update
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
    14: curl#6 — «Could not resolve host: mirrorlist.centos.org; Unknown error»

    One of the configured repositories failed (Unknown),
    and yum doesn’t have enough cached data to continue. At this point the only
    safe thing yum can do is fail. There are a few ways to work «fix» this:

    1. Contact the upstream for the repository and get them to fix the problem.

    2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).

    3. Run the command with the repository temporarily disabled
    yum —disablerepo= …

    4. Disable the repository permanently, so yum won’t use it by default. Yum
    will then just ignore the repository until you permanently enable it
    again or use —enablerepo for temporary usage:

    yum-config-manager —disable
    or
    subscription-manager repos —disable=

    5. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    compromise:

    yum-config-manager —save —setopt=.skip_if_unavailable=true

    Ответить
  • Станислав
    30 апреля 2022 20:13

    Доброго времени суток. Вопрос есть.
    Ставлю чистый CentOS 7
    yum update -y
    yum install -y createrepo yum-utils
    mkdir -p /var/www/html/repos/{base,centosplus,extras,updates,epel,ius}
    reposync -g -l -m —repoid=base —newest-only —download-metadata —download_path=/var/www/html/repos/

    потом можно переносить в закрытую сеть пакеты что скачали и делать createrepo -g comps.xml /var/www/html/repos/base/ или createrepo необходимо сделать на ʼдонереʼ сразу после reposync?
    Заранее спасибо!

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню