Настройка сервера репозитория

ПРИМЕЧАНИЕ. В 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#

  1. Загрузите инструмент Nginx и установите его от имени пользователя root.

  2. Установив 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#

  1. Выполните команду systemd от имени пользователя root, чтобы запустить сервис Nginx.

    ```

    systemctl enable nginx#

    systemctl start nginx#

    ```

  2. Для проверки запуска 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#

    ```

Развертывание источника репозитория#

  1. От имени пользователя root выполните следующую команду, чтобы создать каталог /usr/share/nginx/repo, указанный в конфигурации Nginx в файле /etc/nginx/nginx.conf:

    ```

    mkdir -p /usr/share/nginx/repo#

    ```

  2. Выполните от имени пользователя root следующую команду, чтобы изменить права доступа к каталогу /usr/share/nginx/repo:

    ```

    chmod -R 755 /usr/share/nginx/repo#

    ```

  3. В роли пользователя 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#

    ```

  4. После настройки сервиса Nginx вы можете использовать IP-адрес для доступа к веб-странице, как показано на рисунке 3 .

    Рисунок 3. Развертывание Nginx выполнено

  5. Добавьте источник репозитория в каталог /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