Що б зменшити навантаження, і прискорити процес - можна створити окремий репозиторій на одній машині, яка буде оновлювати в ньому пакети, і потім роздавати поновлення іншим машинам в мережі.
Налаштування виконується на CentOS 6.6.
Список дзеркал (як HTTP. Так і rsync) можна знайти тут >>>.
Створюємо каталоги для сховища:
Коротко про структуру директорій в репозиторії.
- [Base] - зазвичай зберігається в директорії os. містить в собі пакети, що знаходяться в релізний випуску системи;
- [Updates] - зазвичай зберігається в директорії updates. містить в собі більш нові стосовно [Base] пакети.
Зараз нам потрібні тільки ці два. Опис інших можна знайти тут >>>.
Підключаємо образ DVD. що б не качати все з мережі:
Копіюємо вміст диска в директорію /repository/CentOS/6.6/os/i386/:
Підключаємо DVD2. і повторюємо, але копіюємо тільки rpm-файли:
Загальний розмір вийшов:
На завантаження файлів з дисків пішло
Якщо ж підключити диск можливості немає - можна скачати [Base] з дзеркала.
Вибираємо сервер, перевіряємо його вміст:
І починаємо завантаження:
Репозиторій [Base] готовий. Утиліта createrepo потрібно тільки в тому випадку, якщо ви хочете створювати свій репозиторій зі своїми пакетами.
Так як ми копіювали дані з диска або мережі - всі метадані для сховища вже є в каталозі /repository/CentOS/6.6/os/i386/repodata/:
Приступаємо до [Updates]. Вміст будемо завантажувати з дзеркала.
І завантажуємо дані в каталог updates:
За часу зайняло
Створюємо файл конфігурації нашого сховища /etc/yum.repos.d/local.repo:
Перевіряємо поновлення, відключивши всі репозиторії, крім нашого нового [Updates]:
Далі, що б відкрити доступ до сховища для інших серверів - налаштовуємо NGINX (або Apache HTTP. Але у мене всюди NGINX).
Створюємо файл /etc/nginx/conf.d/repo.local.net.conf з таким вмістом:
Далі, повертаємося до файлу налаштувань сховища, і міняємо:
Тепер замість звернення безпосередньо до локальної директорії - YUM буде відправляти запит по HTTP.
У разі помилок виду:
Error importing repomd.xml for update: Damaged repomd.xml file
В першу чергу пробуємо отримати файл по HTTP:
І дивимося помилки веб-сервера.
Встановлюємо новий репозиторій (файл local.repo) на інших серверах.
Останній крок - налаштувати оновлення пакетів в [Updates].
Зробимо простий скрипт /etc/cron.daily/reposupdate.sh:
Останній момент, який варто уточнити. У всіх прикладах вище - завантаження пакетів робиться з директорії 6.6, тоді як на дзеркалах є директорія 6:
Можна оновлюватися з нього (обов'язково і [Base] і [Updates]), тоді система оновиться при виході нової версії, наприклад, 6.7 (хоча такий вже не буде, напевно).
Так само - додаються репозиторії Elrepo. RPMforge і інші.