ПРИМЕЧАНИЕ. В openEuler доступно несколько источников репозитория для использования через Интернет. Подробнее об источниках репозитория см. в разделе installing-the-os.md. Если вы не можете получить источник репозитория openEuler через Интернет, можно создать локальный источник, воспользовавшись пакетом выпуска от openEuler в формате ISO. В этом разделе в качестве примера используется файл openEuler-22.09-aarch64-dvd.iso. Измените файл ISO необходимым образом.
- Настройка сервера репозитория
Обзор#
Создайте источник репозитория из файла openEuler-22.09-aarch64-dvd.iso, предоставленного openEuler. Ниже показан пример использования Nginx для того, чтобы развернуть источник репозитория и предоставить HTTP-сервис.
Создание и обновление локального источника репозитория#
Смонтируйте ISO-файл openEuler-22.09-aarch64-dvd.iso от openEuler, чтобы создать и обновить источник репозитория.
Получение файла ISO#
Загрузите ISO-файл openEuler со следующего веб-сайта:
https://repo.openeuler.org/openEuler-22.09/ISO/
Монтирование файла ISO для создания источника репозитория#
Чтобы смонтировать ISO-файл, выполните команду mount от имени пользователя root.
Ниже приведен пример.
# mount /home/openEuler/openEuler-22.09-aarch64-dvd.iso /mnt/
Смонтированный каталог mnt выглядит следующим образом:
.
│── boot.catalog
│── docs
│── EFI
│── images
│── Packages
│── repodata
│── TRANS.TBL
└── RPM-GPG-KEY-openEuler
В результатах команды выше Packages указывает каталог, где хранится пакет RPM, repodata — каталог метаданных источника репозитория, а RPM-GPG-KEY-openEuler указывает открытый ключ для подписи openEuler.
Создание локального источника репозитория#
Вы можете скопировать определенные файлы из файла ISO в локальный каталог, чтобы создать локальный источник репозитория. Ниже приведен пример.
```
mount /home/openEuler/openEuler-22.09-aarch64-dvd.iso /mnt/#
$ mkdir -p ~/srv/repo/ $ cp -r /mnt/Packages ~/srv/repo/ $ cp -r /mnt/repodata ~/srv/repo/ $ cp -r /mnt/RPM-GPG-KEY-openEuler ~/srv/repo/ ```
Локальный каталог репозитория выглядит следующим образом.
. │── Packages │── repodata └── RPM-GPG-KEY-openEuler
Packages указывает каталог, где хранится пакет RPM, repodata — каталог метаданных источника репозитория, а RPM-GPG-KEY-openEuler указывает открытый ключ для подписи openEuler.
Обновление источника репозитория#
Обновить источник репозитория можно двумя способами.
-
Используйте актуальную версию файла ISO для обновления существующего источника репозитория. Это делается так же, как создание источника репозитория, то есть монтированием файла ISO или копированием его содержимого в локальный каталог.
-
Добавьте пакет RPM в каталог Packages источника репозитория и выполните команду createrepo, чтобы обновить источник.
$ createrepo --update --workers=10 ~/srv/repo
В этой команде –update указывает на обновление, а –workers — число потоков, которое можно изменить.
ПРИМЕЧАНИЕ.
Если при запуске команды выводится “createrepo: command not found” (команда не найдена), то выполните команду dnf install createrepo от имени пользователя root, чтобы установить программное обеспечение createrepo.
Развертывание удаленного источника репозитория#
Установите операционную систему openEuler и разверните в ней источник репозитория с помощью Nginx.
Установка и настройка Nginx#
-
Загрузите инструмент Nginx и установите его от имени пользователя root.
-
Установив Nginx, в роли пользователя root настройте /etc/nginx/nginx.conf.
ПРИМЕЧАНИЕ.
Содержимое конфигурации в этом документе приводится только для справки. Вы можете настроить его в соответствии с требованиями узла (например, для усиления защиты).``` user nginx; worker_processes auto; # Рекомендуется задать для этого параметра значение core-1. error_log /var/log/nginx/error.log warn; # Место хранения журнала pid /var/run/nginx.pid;
events { worker_connections 1024; }
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log\_format main '$remote\_addr - $remote\_user \[$time\_local] "$request" ' '$status $body\_bytes\_sent "$http\_referer" ' '"$http\_user\_agent" "$http\_x\_forwarded\_for"'; access\_log /var/log/nginx/access.log main; sendfile on; keepalive\_timeout 65; server { listen 80; server\_name localhost; # Имя сервера (URL) client\_max\_body\_size 4G; root /usr/share/nginx/repo; # Каталог сервисов по умолчанию location / { autoindex on; # Активация доступа к файлам более низкого уровня в каталоге. autoindex_exact_size on; autoindex_localtime on; } }
} ```
Запуск Nginx#
-
Выполните команду systemd от имени пользователя root, чтобы запустить сервис Nginx.
```
systemctl enable nginx#
systemctl start nginx#
```
-
Для проверки запуска Nginx можно выполнить следующую команду:
$ systemctl status nginx
-
На рисунке 1 показан успешный запуск сервиса Nginx.
Рисунок 1. Запуск сервиса Nginx выполнен
-
Если сервис Nginx не запускается, просмотрите сведения об ошибке.
$ systemctl status nginx.service --full
Рисунок 2. Ошибка запуска сервиса Nginx
Как показано на рисунке 2 , создать сервис Nginx не удается, так как не создается каталог /var/spool/nginx/tmp/client_body. Необходимо создать каталог от имени пользователя root вручную. Подобные проблемы решаются следующим образом.
```
mkdir -p /var/spool/nginx/tmp/client_body#
mkdir -p /var/spool/nginx/tmp/proxy#
mkdir -p /var/spool/nginx/tmp/fastcgi#
mkdir -p /usr/share/nginx/uwsgi_temp#
mkdir -p /usr/share/nginx/scgi_temp#
```
-
Развертывание источника репозитория#
-
От имени пользователя root выполните следующую команду, чтобы создать каталог /usr/share/nginx/repo, указанный в конфигурации Nginx в файле /etc/nginx/nginx.conf:
```
mkdir -p /usr/share/nginx/repo#
```
-
Выполните от имени пользователя root следующую команду, чтобы изменить права доступа к каталогу /usr/share/nginx/repo:
```
chmod -R 755 /usr/share/nginx/repo#
```
-
В роли пользователя root включите настроенный для Nginx порт (порт 80) в правилах брандмауэра.
```
firewall-cmd –add-port=80/tcp –permanent#
firewall-cmd –reload#
```
От имени пользователя root проверьте, включен ли порт 80. Если будет выведено yes (да), то порт 80 включен.
```
firewall-cmd –query-port=80/tcp#
```
Вы также можете включить порт 80, используя в роли root команду iptables.
```
iptables -I INPUT -p tcp –dport 80 -j ACCEPT#
```
-
После настройки сервиса Nginx вы можете использовать IP-адрес для доступа к веб-странице, как показано на рисунке 3 .
Рисунок 3. Развертывание Nginx выполнено
-
Добавьте источник репозитория в каталог /usr/share/nginx/repo любым из следующих способов.
-
Скопируйте соответствующие файлы из образа в каталог /usr/share/nginx/repo от имени пользователя root.
```
mount /home/openEuler/openEuler-22.09-aarch64-dvd.iso /mnt/#
cp -r /mnt/Packages /usr/share/nginx/repo/#
cp -r /mnt/repodata /usr/share/nginx/repo/#
cp -r /mnt/RPM-GPG-KEY-openEuler /usr/share/nginx/repo/#
chmod -R 755 /usr/share/nginx/repo#
```
Файл openEuler-22.09-aarch64-dvd.iso хранится в каталоге /home/openEuler.
-
Создайте символическую ссылку для источника репозитория в каталоге /usr/share/nginx/repo от имени пользователя root.
```
ln -s /mnt /usr/share/nginx/repo/os#
```
/mnt — это созданный источник репозитория, а /usr/share/nginx/repo/os указывает на /mnt.
-
Использование источника репозитория#
Источник репозитория может быть настроен как источник YUM. Это менеджер программных пакетов, представляющий собой интерфейс-оболочку. YUM основан на диспетчере пакетов Redhat (RPM) и может автоматически загружать пакет RPM с указанного сервера, устанавливать пакет и обрабатывать зависимые отношения. Он поддерживает единовременную установку всех зависимых пакетов программного обеспечения.
Настройка репозитория в качестве источника YUM#
Вы можете настроить созданный репозиторий в качестве источника YUM и создать файл конфигурации ***.repo (расширение .repo обязательно) в каталоге /etc/yum.repos.d/ от имени пользователя root. Настроить источник YUM можно на локальном узле или HTTP-сервере.
-
Настройка локального источника yum.
Создайте файл openEuler.repo в каталоге /etc/yum.repos.d и используйте в качестве источника YUM локальный репозиторий. Содержимое файла openEuler.repo следующее:
[base] name=base baseurl=file:///home/openEuler/srv/repo enabled=1 gpgcheck=1 gpgkey=file:///home/openEuler/srv/repo/RPM-GPG-KEY-openEuler
ПРИМЕЧАНИЕ.
- repoid указывает идентификатор репозитория программного обеспечения. Идентификаторы repoid во всех файлах конфигурации .repo должны быть уникальными. В этом в качестве repoid задано base.
- name — это строка описания программного репозитория.
- baseurl указывает адрес репозитория программного обеспечения.
- enabled указывает, включать ли репозиторий источника программного обеспечения. Значением может быть 1 или 0. Значение по умолчанию 1 указывает, что репозиторий источника программного обеспечения включен.
- gpgcheck указывает, включать ли GNU Privacy Guard (GPG) для проверки действительности и безопасности источников RPM-пакетов. 1 означает, что проверка GPG включена. 0 означает, что проверка GPG отключена.
- gpgkey указывает открытый ключ, используемый для проверки подписи.
-
Настройка источника YUM для HTTP-сервера
Создайте файл openEuler.repo в каталоге /etc/yum.repos.d.
-
Если источником YUM служит источник репозитория на HTTP-сервере, развернутый пользователем, то содержимое openEuler.repo выглядит следующим образом:
[base] name=base baseurl=http://192.168.139.209/ enabled=1 gpgcheck=1 gpgkey=http://192.168.139.209/RPM-GPG-KEY-openEuler
ПРИМЕЧАНИЕ.
Адрес 192.168.139.209 является примером. Замените его действительным IP-адресом. -
Если источником YUM служит источник репозитория, предоставленный openEuler, то содержимое openEuler.repo будет следующим (для примера используется источник репозитория ОС на основе AArch64):
[base] name=base baseurl=http://repo.openeuler.org/openEuler-22.09/OS/aarch64/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.09/OS/aarch64/RPM-GPG-KEY-openEuler
-
Приоритет репозитория#
Если источников репозитория несколько, вы можете установить приоритет репозитория в файле .repo. Если приоритет не задан, по умолчанию он равен 99. Если в источниках с одинаковым приоритетом имеется один и тот же пакет RPM, устанавливается последняя версия. Значение 1 соответствует самому высокому приоритету, а 99 — самому низкому. Ниже показано, как задать для openEuler.repo приоритет 2.
[base] name=base baseurl=http://192.168.139.209/ enabled=1 priority=2 gpgcheck=1 gpgkey=http://192.168.139.209/RPM-GPG-KEY-openEuler
Связанные команды dnf#
Команда dnf может автоматически анализировать зависимости между пакетами в ходе установки и обновления. Общий метод использования выглядит следующим образом:
dnf <command> <packages name>
Здесь command — это команда, a packages name — имена пакетов. Основные команды приведены ниже.
-
Установка
От имени пользователя root выполните следующую команду.
```
dnf install #
```
-
Обновление
От имени пользователя root выполните следующую команду.
```
dnf update #
```
-
Откат
От имени пользователя root выполните следующую команду.
```
dnf downgrade #
```
-
Проверка обновления
$ dnf check-update
-
Удаление
От имени пользователя root выполните следующую команду.
```
dnf remove #
```
-
Запрос
$ dnf search <packages name>
-
Локальная установка
От имени пользователя root выполните следующую команду.
```
dnf localinstall #
```
-
Просмотр записей журнала
$ dnf history
-
Очистка записей кэша
$ dnf clean all
-
Обновление кэша
$ dnf makecache