- Настройка и использование репозиториев Yum на сервере CentOS 6
- Конфигурационный файл репозитория YUM
- 1: Создание конфигурационного файла YUM-репозитория
- 2: Внесение параметров репозитория YUM
- YUM-репозиторий CentOS DVD ISO
- 1: Загрузка/передача CentOS DVD ISO
- 2: Монтирование CentOS DVD ISO
- 3: Создание конфигурационного файла YUM-репозитория
- Пользовательский репозиторий YUM
- 1: Установка createrepo
- 2: Создание каталога репозитория
- 3: Помещение файлов RPM в каталог репозитория
- 4: Запуск createrepo
- 5: Создание конфигурационного файла YUM-репозитория
- Настройка своего репозитория CentOS
- Подготовка сервера
- Firewall
- SELinux
- Настройка веб-сервера
- Создание репозитория
- Настройка клиента
- Обновление репозитория
- Ручное обновление
- Автоматическое обновление
- Разные релизы CentOS
- Epel Repo
Настройка и использование репозиториев Yum на сервере CentOS 6
Репозитории YUM – это хранилища программного обеспечения Linux (упаковочные файлы RPM). Упаковочный файл RPM – это файл менеджера пакетов Red Hat (Red Hat Package Manager), который позволяет быстро и легко установить программное обеспечение на Red Hat/CentOS Linux. Репозитории YUM содержат ряд упаковочных файлов RPM и позволяют загрузить и установить новое ПО на виртуальный выделенный сервер. Репозитории YUM могут содержать упаковочные файлы RPM локально (на локальном диске) или удаленно (FTP, HTTP или HTTPS). Конфигурационные файлы YUM содержат информацию, необходимую для поиска и успешной установки программного обеспечения на сервер.
Наиболее популярные репозитории CentOS YUM:
Преимущества установки ПО из репозиториев YUM:
- Простота управления программным обеспечением: очень просто установить, обновить и удалить пакеты;
- Разрешение проблемы зависимостей ПО: зависимости программ решаются автоматически;
- YUM является официальным менеджером пакетов Red Hat/CentOS. Иногда необходимое программное обеспечение не доступно из официального репозитория CentOS по умолчанию. В подобной ситуации можно использовать дополнительные (неофициальные) репозитории YUM, перечисленные выше. Иногда дополнительные репозитории содержат более новые версии пакетов ПО, чем официальные репозитории CentOS.
Конфигурационный файл репозитория YUM
Новое программное обеспечение на Red Hat/CentOS Linux можно установить через консоль при помощи команды «yum install packagename». После запуска данная команда сначала проверяет, существует ли конфигурационные файлы YUM-репозитория в каталоге /etc/yum.repos.d/. Команда читает конфигурационный файл каждого репозитория YUM, чтобы получить информацию, необходимую для загрузки и установки нового программного обеспечения, а также решает зависимости ПО и устанавливает необходимые упаковочные файлы RPM.
Конфигурационный файл репозитория YUM должен:
- находиться в каталоге /etc/yum.repos.d/
- иметь расширение .repo, чтобы YUM мог распознать его
Доступные параметры конфигурационного файла YUM:
- Repository ID – уникальный идентификатор репозитория, состощий из одного слова (пример: [examplerepo])
- Name – удобочитаемое для человека имя репозитория (пример: name=Example Repository)
- Baseurl – URL каталога repodata. Можно использовать file://path если репозиторий размещен локально, или же ftp://link, http://link, https://link если он размещен удаленно – аутентификация HTTP доступна по http://user:password@www.repo1.com/repo1 (пример: baseurl=http://mirror.cisp.com/CentOS/6/os/i386/)
- Enabled – активация репозитория при выполнении обновления и установки ПО (пример: enabled=1)
- Gpgcheck – активация/деактивация проверки сигнатуры GPG (пример: gpgcheck=1)
- Gpgkey – URL ключа GPG (пример: gpgkey=http://mirror.cisp.com/CentOS/6/os/i386/RPM-GPG-KEY-CentOS-6)
- Exclude – список исключаемых пакетов(пример: exclude=httpd,mod_ssl)
- Includepkgs – список включемых пакетов (пример: include=kernel)
Обязательные параметры конфигурационного файла YUM:
1: Создание конфигурационного файла YUM-репозитория
При помощи наиболее предпочтительного текстового редактора создайте в каталоге /etc/yum.repos.d/ новый конфигурационный файл репозитория YUM с расширением .repo. Чтобы создать новый файл при помощи редактора «vi», запустите через консоль следующую команду:
2: Внесение параметров репозитория YUM
Задайте параметры YUM-репозитория в только что созданном конфигурационном файле репозитория YUM и сохраните изменения.
Пример конфигурационного файла YUM-репозитория
/etc/yum.repos.d/example.repo
[examplerepo] name=Example Repository
baseurl=http://mirror.cisp.com/CentOS/6/os/i386/
enabled=1
gpgcheck=1
gpgkey=http://mirror.cisp.com/CentOS/6/os/i386/RPM-GPG-KEY-CentOS-6
YUM-репозиторий CentOS DVD ISO
YUM-репозиторий CentOS DVD ISO содержит огромное количество программ (упаковочных файлов RPM), которые можно установить при помощи мастера установки Red Hat / CentOS. Можно также использовать упаковочные файлы RPM из CentOS DVD ISO для создания YUM-репозитория CentOS DVD ISO. Таким образом, при помощи команды «yum install packagename» на CentOS DVD ISO можно установить любое доступное ПО через консоль даже после завершения работы мстера установки Red Hat/CentOS.
1: Загрузка/передача CentOS DVD ISO
Файлы CentOS DVD ISO можно загрузить с http://mirror.centos.org/. Нужно загрузить или передать файлы CentOS DVD ISO на VPS:
- Передача: если файлы CentOS DVD ISO уже загружены на другую машину, следует передать их с этой машины на VPS через FTP или SSH. Это можно сделать при помощи WinSCP (свободный SFTP-клиент и FTP) и подобных ей программ.
- Загрузка: CentOS DVD ISO можно загрузить прямо на сервер, набрав в консоли команду «wget» (пожалуйста, замените HTTP-ссылку)
2: Монтирование CentOS DVD ISO
Чтобы просмотреть данные CentOS DVD ISO, нужно сначала установить файлы в наиболее удобной точке системы. Обычно CD-ROM, USB-устройства или файлы ISO устанавливаются в каталоге /mnt (если его можно свободно использовать). Чтобы установить CentOS DVD ISO, запустите через консоль следующую команду (пожалуйста, замените /path/to/iso и /mnt соответствующими значениями)
mount -o loop /path/to/iso /mnt
3: Создание конфигурационного файла YUM-репозитория
Чтобы начать использовать созданный пользовательский репозиторий YUM, нужно создать конфигурационный файл YUM-репозитория с расширением .repo, который нужно разместить в каталоге /etc/yum.repos.d/. Указания по созданию конфигурационного файла YUM-репозитория приведены в первой главе данного руководства.
Пример конфигурационного файла YUM-репозитория CentOS DVD ISO
/etc/yum.repos.d/centosdvdiso.repo
[centosdvdiso] name=CentOS DVD ISO
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6
Пользовательский репозиторий YUM
Иногда нужно создать пользовательский YUM-репозиторий (это удобно, если VPS не имеет подключения к интернету). Пользовательский репозиторий YUM можно создать из желаемого количества упаковочных файлов RPM. Пользовательский репозиторий YUM содержит только те RPM-файлы, которые пользователь хочет включить в него.
1: Установка createrepo
Для создания пользовательского YUM-репозитория понадобится установить на сервер дополнительное программное обеспечение под названием «createrepo». Данное ПО можно установить, запустив следующую команду через консоль:
yum install createrepo
2: Создание каталога репозитория
Нужно создать новый каталог, в котором будет содержать пользовательский репозиторий YUM и все необходимые упаковочные файлы RPM. То можно сделать через консоль при помощи следующей команды (замените имя different /repository1 именем каталога на свое усмотрение):
3: Помещение файлов RPM в каталог репозитория
Если файлов RPM на VPS еще нет, нужно передать их через FTP или SSH; для этого используйте такое ПО как WinSCP (свободный SFTP-клиент и FTP) и т.п. Можно также загрузить упаковочные файлы RPM прямо на VPS с помощью команды «wget», запущенной через консоль(необходимо подключение к интернету); не забудьте заменить HTTP-ссылку:
Если файлы RPM уже есть на сервере, нужно скопировать и переместить их в созданный в шаге 2 каталог. Можно переместить RPM-файлы при помощи запущенной через консоль команды (замените /path/to/rpm и /repository1 соответствующими значениями):
mv /path/to/rpm /repository1
Файлы RPM можно скопировать через консоль с помощью следующей команды (замените /path/to/rpm и /repository1 соответствующими значениями):
cp /path/to/rpm /repository1
4: Запуск createrepo
Команда createrepo просматривает каталог пользовательского репозитория YUM (см. шаг 2) и создает в нем новый каталог repodata. Каталог repodata содержит метаданные о созданном репозитории. Каждый раз, когда в пользовательский репозиторий YUM вносятся дополнительные RPM-файлы, нужно пересоздавать метаданные репозитория при помощи команды createrepo. Новые метаданные репозитория можно создать, запустив команду через консоль (замените /repository1 соответствующим значением):
5: Создание конфигурационного файла YUM-репозитория
Чтобы начать использовать созданный пользовательский YUM-репозиторий, нужно создать соответствующий конфигурационный файл с расширением .repo и поместить его в каталог /etc/yum.repos.d/. Указания по созданию конфигурационного файла YUM-репозитория приведены в первой главе данного руководства.
Пример конфигурационного файла пользовательского YUM-репозитория:
Источник
Настройка своего репозитория CentOS
Свой репозиторий может понадобиться в случае использования защищенного сегмента сети, желания сократить время загрузки пакетов, использовании своих сборок для установочных пакетов. Установка и настройка будет выполнена из командной строки.
Подготовка сервера
Выполняем некоторые настройки безопасности сервера.
Firewall
Разрешаем порты, на которых наш сервер будет принимать запросы:
firewall-cmd —permanent —add-port=<80,443>/tcp
* в данном примере мы разрешаем запросы http и https.
SELinux
Данный модель безопасности лучше отключить. Для этого вводим две команды:
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
* первая команда отключить его разово, вторая — на постоянной основе.
При необходимости использовать SELinux, читаем статью Настройка SELinux в CentOS 7.
Настройка веб-сервера
Репозиторий для загрузки и установки пакетов представляет из себя хранилище файлов, доступ к которым осуществляется по http протоколу. Для этого нам понадобиться развернуть веб-сервер.
В качестве последнего мы будем использовать nginx. Для его установки, устанавливаем репозиторий epel:
yum install epel-release
После ставим сам nginx:
yum install nginx
Разрешаем запуск веб-сервера:
systemctl enable nginx
systemctl start nginx
Открываем браузер и переходим по адресу http:// — мы должны увидеть приветствие NGINX:
Создание репозитория
Настроим свой репозиторий, в котором будут храниться установочные пакеты. Также настроим их автоматическую синхронизацию с репозиторием CentOS.
Устанавливаем необходимые утилиты для работы с локальным репозиторием:
yum install createrepo yum-utils
Создаем каталоги для репозитория:
mkdir -p /usr/share/nginx/html/repos/7/
* в данном примере будет создан каталог /usr/share/nginx/html/repos/7, а внутри него каталоги os (стандартный репозиторий для установка пакетов) и updates (обновления), в каждой из которых каталог x86_64 (для систем x64 архитектуры x86).
Синхронизируем наш будущий репозиторий с источником пакетов, например, с зеркалом от Яндекса:
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/7/os/x86_64/ /usr/share/nginx/html/repos/7/os/x86_64/
После синхронизируем updates:
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/7/updates/x86_64/ /usr/share/nginx/html/repos/7/updates/x86_64/
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
Открываем браузер и переходим по адресу http:// /repos/7 — мы должны увидеть список os и updates. Походив по нему, мы найдем список скачанных пакетов.
Настройка клиента
Чтобы гарантировать, что все пакеты будут скачиваться с локального репозитория, отключаем имеющиеся:
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/*
Создаем файл с настройкой репозитория:
[local]
name=Local Yum Repo
baseurl=http://192.168.0.10/repos/$releasever/os/$basearch/
enabled=1
gpgcheck=0
[local-update]
name=Local Yum Repo for update packages
baseurl=http://192.168.0.10/repos/$releasever/updates/$basearch/
enabled=1
gpgcheck=0
* где local — название репозитория; name — описание; baseurl — базовый адрес http, по которому нужно искать пакеты; enabled — указание на включение или отключение репозитория; gpgcheck — включить или отключить проверку GPG сигнатур для пакетов.
Также можно задать приоритет для каждого из репозиториев:
* 1 — наивысший приоритет.
Готово. Можно выполнить установку.
Если в процессе обновления или установки мы получим ошибку [Errno 14] PYCURL ERROR 22, выполняем команду yum clean all. Подробнее в статье Ошибка CentOS: [Errno 14] PYCURL ERROR 22 — The requested URL returned error: 404.
Посмотреть список установленных пакетов и с какого репозитория они были скачаны можно командой:
yum list installed
Обновление репозитория
Для поддержания списка пакетов в актуальном состоянии необходимо постоянно обновлять установочные файлы в репозиториях. Это можно делать вручную и/или автоматическом режиме.
Ручное обновление
Для обновления репозитория выполняем синхронизацию с источником пакетов (также, как мы делали начальную синхронизацию):
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/7/os/x86_64/ /usr/share/nginx/html/repos/7/os/x86_64/
И обновляем служебную информацию:
createrepo —update /usr/share/nginx/html/repos/7/os/x86_64
Аналогично, со всеми остальными репозиториями.
Автоматическое обновление
Его суть сводится к запуску скрипта в cron. Сначала создадим папку для хранения скриптов, затем сам скрипт:
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/7/os/x86_64/ /usr/share/nginx/html/repos/7/os/x86_64/
createrepo —update /usr/share/nginx/html/repos/7/os/x86_64
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/7/updates/x86_64/ /usr/share/nginx/html/repos/7/updates/x86_64/
createrepo —update /usr/share/nginx/html/repos/7/updates/x86_64
Разрешаем запуск скрипта на выполнение:
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/
* в данном примере предполагается использование репозитория для релиза 6.
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/6/os/x86_64/ /usr/share/nginx/html/repos/6/os/x86_64/
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/6/updates/x86_64/ /usr/share/nginx/html/repos/6/updates/x86_64/
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
wget -r -nH -np -nc -R index.html* https://mirror.yandex.ru/epel/7/x86_64/ -P /usr/share/nginx/html/repos/
createrepo -v /usr/share/nginx/html/repos/epel/7/x86_64
При настройке клиента создаем файл с настройкой репозитория:
[local-epel]
name=Local Extra Packages for Enterprise Linux 7
baseurl=http://192.168.0.10/epel/$releasever/$basearch/
enabled=1
gpgcheck=0
По такому же принципу мы можем добавить любой репозиторий, например, rpmforge, remi, nginx и другие.
Источник