Репозитории Linux - одна из самых полезных функций дистрибутива Linux. Они содержат базу данных пакетов и программного обеспечения для конкретного дистрибутива или его дочерних версий.
Yum - один из таких репозиториев. Это базовый репозиторий для пакетов RPM, используемых в дистрибутивах RedHat и основанных на RedHat. RPM прост в настройке и использовании, что позволяет пользователям легко и быстро устанавливать пакеты программ в свои системы.
Пакеты Yum могут быть размещены на сервере и обслуживаться удаленно через HTTP, HTTPS и FTP или локальной установкой из репозитория. Локальная установка подразумевает загрузку пакетов и сохранение их на локальном диске.
Установка веб-сервера
Обычно пакеты yum обслуживаются по протоколу HTTP/HTTPS или FTP. Однако, поскольку мы не можем использовать оба, я выбираю веб-сервер, так как он, на мой взгляд, проще в установке и настройке.
Мы будем использовать Apache. Используйте приведенную ниже команду для установки и запуска сервера.
1 | yum install httpd |
Следует отметить, что для локального хранилища можно использовать FTP или HTTP/HTTPS. Вы также можете использовать другие веб-серверы, такие как Nginx.
Отключаем страницу welcome, для просмотра содержимого репозиториев
1 | > /etc/httpd/conf.d/welcome.conf |
Запускаем службу
1 2 | systemctl start httpd systemctl enable httpd |
После успешной установки и запуска Apache мы можем приступить к настройке локального хранилища.
Так же открываем 80 порт на межсетевом экране
1 2 | firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload |
Установка необходимых пакетов
На втором этапе нам необходимо установить пакеты и инструменты, которые помогут в создании, настройке и управлении локальным репозиторием.
Необходимые инструменты - это пакет createrepo, который собирает .rpm файлы вместе в repomd repo, и yum-utils для управления репозиторием. Вы можете установить пакеты с помощью команды:
1 | yum install createrepo yum-utils |
Создание каталогов репозиториев
Третий шаг - создание необходимых каталогов для настройки репозиториев. Поскольку мы используем веб-сервер, имеет смысл создать их в каталоге /var/www/html.
Нам нужны следующие каталоги:
- Baseos
- Extras
- Appstream
- Epel
Используйте команду, показанную ниже, чтобы установить каталоги.
1 | mkdir /var/www/html/{baseos,extras,appstream,epel} |
В зависимости от различных факторов, вам может не потребоваться создавать эти каталоги. Однако, чтобы подстраховаться, создайте их заранее и удалите, если возникнет ошибка.
Синхронизация репозиториев Yum
В этом шаге мы синхронизируем репозитории с каталогами, которые мы создали в предыдущем шаге. Мы будем использовать инструмент reposync следующим образом:
1 2 3 4 | yum reposync -p=/var/www/html --repoid=baseos --download-metadata yum reposync -p=/var/www/html --repoid=extras --download-metadata yum reposync -p=/var/www/html --repoid=appstream --download-metadata yum reposync -p=/var/www/html --repoid=epel --download-metadata |
Синхронизация репозитория может занять значительное время. Так же для создания локального репозитория потребуется значительное количества дискового пространства.
Создание нового репозитория
Последний шаг - создание репозитория с помощью инструмента createrepo, следующей командной:
1 | createrepo /var/www/html/ |
Это запустит создание репозитория, и результат будет показан ниже:
1 2 3 4 5 6 | Directory walk started Directory walk done - 9843 packages Temporary output repo path: /var/www/html/.repodata/ Preparing sqlite DBs Pool started (with 5 workers) Pool finished |
Установка локального репозитория на клиентской машине
Последний шаг - сообщить клиентским машинам о локальном репозитории и ссылке для его загрузки.
Введите команду следующим образом:
1 | nano /etc/yum.repos.d/local.repo |
Внутри файла добавьте следующие записи:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [local-base] name=Yum Local Base baseurl=http://<IP>:80/base enabled=1 gpgcheck=0 [local-extras] name=Yum Local Extras baseurl=http://<IP>:80/extras enabled=1 gpgcheck=0 [local-appstream] name=Yum Local Appstream baseurl=http://<IP>:80/appstream enabled=1 gpgcheck=0 [local-epel] name=Yum Local Epel baseurl=http://<IP>:80/epel enabled=1 gpgcheck=0 |
Где <IP> - IP адрес сервера в локальной сети
Подтверждение реполиста
Чтобы проверить, доступен ли репозиторий, выполните команду:
1 | yum repolist |
Вы также можете перейти к списку репозиториев, используя url
http://<ip>:80