Как настроить локальный репозиторий HTTP Yum в CentOS 7
Репозиторий программного обеспечения (сокращенно репо) — это центральное хранилище файлов для хранения и обслуживания пакетов программного обеспечения, из которого пользователи могут извлекать пакеты и устанавливать их на свои компьютеры.
Репозитории часто хранятся на серверах в сети, например в Интернете, к которым могут иметь доступ несколько пользователей. Однако вы можете создать и настроить локальный репозиторий на своем компьютере и получить к нему доступ как один пользователь или разрешить доступ другим компьютерам в вашей LAN (Локальная сеть).
Одним из преимуществ настройки локального репозитория является то, что вам не требуется подключение к Интернету для установки пакетов программного обеспечения.
YUM (Yellowdog Updater Modified) — это широко используемый инструмент управления пакетами для RPM (RedHat Package Manager) на базе систем Linux, который упрощает установку программного обеспечения в Red Hat. /CentOS Linux.
В этой статье мы объясним, как настроить локальный репозиторий YUM через веб-сервер HTTP (Nginx) на CentOS 7 VPS. , а также покажет, как найти и установить пакеты программного обеспечения на клиентских компьютерах с CentOS 7.
Наша среда тестирования
Yum HTTP Repository Server: CentOS 7 [192.168.0.100]
Client Machine: CentOS 7 [192.168.0.101]
Шаг 1. Установите веб-сервер Nginx
1. Сначала начните с установки HTTP-сервера Nginx из репозитория EPEL с помощью менеджера пакетов YUM следующим образом.
yum install epel-release
yum install nginx
2. После установки веб-сервера Nginx вы можете запустить его в первый раз и включить его автоматический запуск при загрузке системы.
systemctl start nginx
systemctl enable nginx
systemctl status nginx
3. Далее вам необходимо открыть порты 80 и 443, чтобы разрешить веб-трафик службе Nginx, обновить правила системного брандмауэра, чтобы разрешить входящие пакеты. на HTTP и HTTPS, используя приведенные ниже команды.
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
4. Теперь вы можете убедиться, что ваш сервер Nginx запущен и работает, используя следующий URL-адрес; если вы видите веб-страницу Nginx по умолчанию, все в порядке.
http://SERVER_DOMAIN_NAME_OR_IP
Шаг 2. Создайте локальный репозиторий Yum
5. На этом этапе вам необходимо установить необходимые пакеты для создания, настройки и управления локальным репозиторием.
yum install createrepo yum-utils
6. Далее создайте необходимые каталоги (репозитории yum), в которых будут храниться пакеты и любая связанная с ними информация.
mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}
7. Затем используйте инструмент reposync для синхронизации репозиториев CentOS YUM с локальными каталогами, как показано.
reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/
Пример вывода
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.fibergrid.in
* epel: mirror.xeonbd.com
* extras: mirrors.fibergrid.in
* updates: mirrors.fibergrid.in
base/7/x86_64/group | 891 kB 00:00:02
No Presto metadata available for base
(1/9911): 389-ds-base-snmp-1.3.7.5-18.el7.x86_64.rpm | 163 kB 00:00:02
(2/9911): 389-ds-base-devel-1.3.7.5-18.el7.x86_64.rpm | 267 kB 00:00:02
(3/9911): ElectricFence-2.2.2-39.el7.i686.rpm | 35 kB 00:00:00
(4/9911): ElectricFence-2.2.2-39.el7.x86_64.rpm | 35 kB 00:00:00
(5/9911): 389-ds-base-libs-1.3.7.5-18.el7.x86_64.rpm | 695 kB 00:00:04
(6/9911): GConf2-devel-3.2.6-8.el7.i686.rpm | 110 kB 00:00:00
(7/9911): GConf2-devel-3.2.6-8.el7.x86_64.rpm | 110 kB 00:00:00
(8/9911): GConf2-3.2.6-8.el7.i686.rpm | 1.0 MB 00:00:06
В приведенных выше командах опция:
-g
— включает удаление пакетов, не прошедших проверку подписи GPG, после загрузки.-l
— включает поддержку плагина yum.-d
— включает удаление локальных пакетов, которых больше нет в репозитории.-m
– включает загрузку файлов comps.xml.--repoid
— указывает идентификатор репозитория.--newest-only
— укажите reposync, чтобы он извлекал только последнюю версию каждого пакета в репозиториях.--download-metadata
— позволяет загружать все метаданные, отличные от стандартных.--download_path
— указывает путь для загрузки пакетов.
8. Затем проверьте содержимое ваших локальных каталогов, чтобы убедиться, что все пакеты синхронизированы локально.
ls -l /var/www/html/repos/base/
ls -l /var/www/html/repos/base/Packages/
ls -l /var/www/html/repos/centosplus/
ls -l /var/www/html/repos/centosplus/Packages/
ls -l /var/www/html/repos/extras/
ls -l /var/www/html/repos/extras/Packages/
ls -l /var/www/html/repos/updates/
ls -l /var/www/html/repos/updates/Packages/
9. Теперь создайте новые реподаты для локальных репозиториев, выполнив следующие команды, где флаг -g
используется для обновления информации о группе пакетов с использованием указанного .xml
файл.
createrepo -g comps.xml /var/www/html/repos/base/
createrepo -g comps.xml /var/www/html/repos/centosplus/
createrepo -g comps.xml /var/www/html/repos/extras/
createrepo -g comps.xml /var/www/html/repos/updates/
10. Чтобы включить просмотр репозиториев и пакетов в них через веб-браузер, создайте блок сервера Nginx, который указывает на корень ваших репозиториев, как показано.
vim /etc/nginx/conf.d/repos.conf
Добавьте следующую конфигурацию в файл repos.conf.
server {
listen 80;
server_name repos.test.lab; #change test.lab to your real domain
root /var/www/html/repos;
location / {
index index.php index.html index.htm;
autoindex on; #enable listing of directory index
}
}
Сохраните файл и закройте его.
11. Затем перезапустите сервер Nginx и просмотрите репозитории в веб-браузере, используя следующий URL-адрес.
http://repos.test.lab
Шаг 3. Создайте задание Cron для синхронизации и создания репозиториев
12. Затем добавьте задание cron, которое будет автоматически синхронизировать ваши локальные репозитории с официальными репозиториями CentOS для получения обновлений и исправлений безопасности.
vim /etc/cron.daily/update-localrepos
Добавьте эти команды в скрипт.
#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/
done
Сохраните скрипт, закройте его и установите для него соответствующие разрешения.
chmod 755 /etc/cron.daily/update-localrepos
Шаг 4. Настройка локального репозитория Yum на клиентских компьютерах
13. Теперь на своих клиентских компьютерах CentOS добавьте локальные репозитории в конфигурацию YUM.
vim /etc/yum.repos.d/local-repos.repo
Скопируйте и вставьте приведенную ниже конфигурацию в файл local-repos.repo (при необходимости внесите изменения).
[local-base]
name=CentOS Base
baseurl=http://repos.test.lab/base/
gpgcheck=0
enabled=1
[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://repos.test.lab/centosplus/
gpgcheck=0
enabled=1
[local-extras]
name=CentOS Extras
baseurl=http://repos.test.lab/extras/
gpgcheck=0
enabled=1
[local-updates]
name=CentOS Updates
baseurl=http://repos.test.lab/updates/
gpgcheck=0
enabled=1
Сохраните файл и начните использовать локальные зеркала YUM.
14. Затем выполните следующую команду, чтобы просмотреть ваши локальные репозитории в списке доступных репозиториев YUM на клиентских компьютерах.
yum repolist
OR
yum repolist all
Вот и все! В этой статье мы объяснили, как настроить локальный репозиторий YUM в CentOS 7. Мы надеемся, что это руководство оказалось для вас полезным. Если у вас есть какие-либо вопросы или другие мысли, которыми вы хотите поделиться, воспользуйтесь формой комментариев ниже.