1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-pkgship

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.en.md

Пкгшип

Пкгшип

  • Пкгшип
    • Введение
    • Архитектура
    • Загрузка программного обеспечения
    • Операционная среда
    • Инструмент установки
    • Параметр конфигурации
    • Запуск и остановка служб
    • Использование инструмента
    • Просмотр и сброс журналов
    • Расширяющий инструмент пкгшип-панель

Введение

Пкгшип — это инструмент, используемый для управления зависимостями пакетов программного обеспечения ОС и предоставления полного графа зависимостей. Пкгшип предоставляет такие функции, как запрос зависимостей пакетов программного обеспечения, управление жизненным циклом и запрос исправлений.

  1. Запрос зависимостей пакета программного обеспечения: позволяет сотрудникам сообщества понять масштаб воздействия программного обеспечения при внедрении, обновлении или удалении пакетов программного обеспечения.
  2. Запрос исправлений: позволяет сотрудникам сообщества узнать об исправлениях пакета программного обеспечения openEuler и получить содержимое исправлений. Подробнее см. в разделе «Отслеживание исправлений» (https://gitee.com/openeuler/pkgship/blob/patch-tracking/README.md).

Архитектура

Система разработана с использованием режима flask-restful.

Аватар

Загрузка программного обеспечения

— Официальный адрес выпуска для монтирования источника Repo: https://repo.openeuler.org/. — Чтобы получить исходный код, посетите https://gitee.com/openeuler/pkgship. — Вы можете получить пакет RPM по адресу https://117.78.1.88/project/show/openEuler:Mainline.

Операционная среда

— Аппаратная конфигурация:

Конфигурация Рекомендуемые спецификации
Процессор 8 ядер
Память 32 ГБ (минимум: 4 ГБ)
Пропускная способность сети 300 Мбит/с
Ввод/вывод 375 МБ/сек

— Конфигурация программного обеспечения

Программное обеспечение Версия и спецификации
Elasticsearch Версия 7.10.1. Доступно развёртывание одного узла. Можно развернуть кластеры.
Redis Рекомендуется версия 5.0.4 и выше. Рекомендуется установить размер 3/4 от объёма памяти.
Python Версия 3.8 и выше

Инструмент установки

Примечание: Это программное обеспечение может работать в Docker. В openEuler21.09 для создания Docker используется параметр --privileged из-за ограничений среды. Если параметр --privileged не используется, программное обеспечение не запускается. Этот документ будет обновлён после адаптации.

1. Установите инструмент пкгшип.

Вы можете использовать один из следующих методов для установки инструмента:

— Метод 1: смонтируйте источник Repo с помощью DNF. Используйте DNF для монтирования программного обеспечения пкгшип к источнику Repo (подробности см. в Руководстве по разработке приложений openEuler. Затем выполните следующие команды для загрузки и установки программного обеспечения пкгшип и его зависимостей:

dnf install pkgship

— Метод 2: установите пакет RPM. Загрузите пакет RPM пкгшип и выполните следующую команду для его установки (x.x-x обозначает номер версии и должен быть заменён на фактический номер версии):

rpm -ivh pkgship-x.x-x.oe1.noarch.rpm

или

dnf install pkgship-x.x-x.oe1.noarch.rpm

2. Установите Elasticsearch и Redis и запустите.

Если Elasticsearch или Redis не установлены в среде, вы можете запустить автоматический установочный скрипт после установки пкгшип.

Путь к скрипту по умолчанию следующий:

/etc/pkgship/auto_install_pkgship_requires.sh

Метод выполнения следующий:

/bin/bash auto_install_pkgship_requires.sh elasticsearch

В настоящее время Elasticsearch устанавливается без пароля по умолчанию при использовании пакета RPM для его установки, и пкгшип должен использовать Elasticsearch без пароля. Поэтому рекомендуется устанавливать Elasticsearch и пкгшип на одном сервере для повышения безопасности за счёт сетевой изоляции. Имя пользователя и пароль Elasticsearch будут поддерживаться в более поздних версиях. После установки Elasticsearch и Redis необходимо запустить службу.

Команда выглядит следующим образом:

systemctl start elasticsearch
systemctl start redis

3. Добавьте пользователя после установки

После установки программного обеспечения pkgship система автоматически создаёт пользователя с именем pkgshipuser и группу пользователей с именем pkgshipuser. Вам не нужно вручную создавать пользователя и группу пользователей, потому что они будут использоваться при запуске и работе службы.

Параметры

  1. Настройте параметры в файле конфигурации. Файл конфигурации по умолчанию системы — /etc/pkgship/package.ini. Измените файл конфигурации в соответствии с реальной ситуацией.

vim /etc/pkgship/package.ini

; Location of the .yaml file imported during database initialization. The .yaml file records the location of the imported .sqlite file.
init_conf_path=/etc/pkgship/conf.yaml

If the client-server mode is used, the value of query_ip_addr on the server must be the local IP address or 0.0.0.0,
In addition, the client can access the server by using query_ip_addr and query_port or by setting the mapped remote_host.
; service query port.
query_port=8090

; IP address for service query.
query_ip_addr=127.0.0.1

; Address of the remote service. The command line can directly invoke the remote service to complete the data request.
remote_host=https://api.openeuler.org/pkgmanage

; Directory for storing initialized and downloaded temporary files. The directory will not be occupied for a long time. It is recommended that the available space be at least 1 GB.
temporary_directory=/opt/pkgship/tmp/

[LOG-log]
; Path for storing service logs.
log_path=/var/log/pkgship/

; Log level. The options are as follows:
; INFO DEBUG WARNING ERROR CRITICAL
log_level=INFO

; Maximum size of a single service log file. If the size of a service log file exceeds the value of this parameter, the file is automatically compressed and dumped. The default value is 30 MB.
max_bytes=31457280

; Maximum number of backup logs that can be retained. The default value is 30.
backup_count=30

[UWSGI-Web Server Configuration]
; Path of operation logs.
daemonize=/var/log/pkgship-operation/uwsgi.log
; Size of data transmitted between the frontend and backend.
buffer-size=65536
; Timeout interval of the network connection.
http-timeout=600
; Service response time.
harakiri=600

[REDIS-Cache configuration]
The address of the Redis cache server can be the released domain or IP address that can be accessed normally.
The default link address is 127.0.0.1.
redis_host=127.0.0.1

; Port number of the Redis cache server. The default value is 6379.
redis_port=6379

;Maximum number of connections allowed by the Redis server at a time.
redis_max_connections=10

[DATABASE-Database]
; Database access address. You are advised to set it to the address of the local host.
database_host=127.0.0.1

; Port for accessing the database. The default value is 9200.
database_port=9200
  1. Создайте файл конфигурации YAML для инициализации базы данных. По умолчанию файл conf.yaml хранится в каталоге /etc/pkgship/. Программное обеспечение pkgship считывает имя создаваемой базы данных и импортируемый sqlite-файл на основе этой конфигурации. Вы также можете настроить адрес репозитория sqlite-файла. Пример файла conf.yaml выглядит следующим образом:
dbname: oe20.03 #Database name
Local path of the src_db_file: file:///etc/pkgship/repo/openEuler-20.09/src # source code package.
Local path of the bin_db_file: file:///etc/pkgship/repo/openEuler-20.09/bin # binary package.
priority: 1 # Database priority

dbname: oe20.09
Repo source where the src_db_file: https://repo.openeuler.org/openEuler-20.09/source # source code package is located
Repo source where the bin_db_file: https://repo.openeuler.org/openEuler-20.09/everything/aarch64 # binary package is located
priority: 2

Чтобы изменить путь хранения, измените значение init_conf_path в файле package.ini. Конфигурирование файла

Спецификации конфигураций файлов следующие:

  • Чтобы сэкономить место, нельзя использовать файл sqlite напрямую. Используйте сжатый пакет, который содержит файл sqlite. Поддерживаемый формат сжатия: .bz, .gz, .tar, .zip.
  • Сжатый файл sqlite называется в формате xxx.primary.sqlite.xx. Сжатый файл sqlite типа filelists должен использоваться по пути, где находится бинарный пакет. Формат файла sqlite compressed — xxx.filelists.sqlite.xx. Как правило, сжатый пакет sqlite под сетевым адресом соответствует этому формату.
  • Используйте file:// в качестве префикса локального пути.
  • Локальный путь и сетевой адрес должны соответствовать следующим требованиям: пакет sqlite хранится в пути конфигурации /repodata/xxx.primary.sqlite.xx.

Значение dbname может содержать только строчные буквы и цифры. Прописные буквы не поддерживаются.

Запуск и остановка служб

Pkgship можно запустить и остановить в двух режимах: systemctl и pkgshipd. В режиме systemctl механизм автоматического запуска может быть остановлен при возникновении исключения. Вы можете выполнить одну из следующих команд:

Запуск службы systemctl start pkgship.service.
systemctl stop pkgship.service — остановить службу.
Перезапуск службы systemctl restart pkgship.service.
pkgshipd start — запускает службу.
pkgshipd stop — останавливает службу.

В каждый период запуска/остановки поддерживается только один режим. Два режима не могут использоваться одновременно. Режим запуска pkgshipd может использоваться только пользователем pkgshipuser.

Если команда systemctl не поддерживается в среде Docker, используйте команду pkgshipd для запуска и остановки службы.

Использование инструментов

  1. Инициализация базы данных.

    Сценарий применения: после запуска службы необходимо импортировать сгенерированный createrepo sqlite (включая исходную библиотеку кода и двоичную библиотеку) в службу, чтобы запросить информацию о пакете и зависимости пакета в соответствующей базе данных (например, oe20.03 и oe20.09). Затем нужно вставить тело JSON соответствующей информации о пакете в соответствующую базу данных Elasticsearch. Имя базы данных — это значение dbname-source/binary, созданное на основе значения dbname в файле config.yaml.

    pkgship init [-filepath path]

    Описание параметра: -filepath: указывает путь к файлу конфигурации инициализации config.yaml. Значением может быть относительный или абсолютный путь. Если этот параметр не указан, используется конфигурация по умолчанию. Этот параметр является необязательным.

  2. Запрос одного пакета.

Вы можете запросить подробную информацию об исходном коде пакета или двоичном пакете (packagename) в указанной таблице базы данных.

Сценарий применения: пользователи могут запрашивать подробную информацию об исходном коде или двоичном пакете в указанной базе данных.

pkgship pkginfo $packageName $database [-s]

Описание параметра: packagename: указывает имя программного пакета, который нужно запросить. Этот параметр обязателен. database: указывает имя базы данных. Этот параметр обязателен. -s: если вы укажете -s, будет запрошена информация об исходном коде src. Если вы не укажете этот параметр, по умолчанию будет запрошена двоичная информация пакета bin. Этот параметр необязателен.

  1. Запрос всех пакетов.

Запросите информацию обо всех пакетах в базе данных.

Сценарий применения: вы можете запросить информацию обо всех программных пакетах в указанной базе данных.

pkgship list $database [-s]

Описание параметра: database: указывает имя базы данных. Этот параметр обязателен. -s: если вы укажете -s, будет запрошена информация об исходном коде src. Если вы не укажете этот параметр, по умолчанию будет запрошена двоичная информация пакета bin. Этот параметр необязателен.

  1. Запрос зависимостей установки.

Запрос зависимостей установки двоичного пакета. Сценарий использования:

Когда вам нужно установить бинарный пакет A, необходимо задать зависимость установки бинарного пакета A от B и зависимость установки бинарного пакета B от C. Бинарный пакет А может быть успешно установлен только после того, как все зависимости установки будут установлены в системе. Поэтому перед установкой бинарного пакета А вам может потребоваться запросить все зависимости установки бинарного пакета А. Эта команда позволяет запрашивать несколько баз данных на основе приоритета платформы по умолчанию. Вы также можете настроить приоритет запроса базы данных.

Синтаксис команды: pkgship installdep [$binaryName $binaryName1 $binaryName2...] [-dbs] [db1 db2...] [-level] $level

Описание параметров:

  • binaryName: имя зависимого бинарного пакета, который требуется запросить. Можно передать несколько бинарных пакетов. Этот параметр является обязательным.
  • -dbs: указывает приоритет запрашиваемой базы данных. Если этот параметр не указан, база данных запрашивается на основе приоритета по умолчанию. Этот параметр необязателен.
  • -level: указывает уровень зависимости, который необходимо запросить. Если этот параметр не указан, используется значение по умолчанию 0, указывающее, что запрашиваются все уровни. Этот параметр необязателен.
  1. Запрос зависимости компиляции.

Запросите все зависимости компиляции исходного кода пакета (sourceName).

Сценарий использования: Чтобы скомпилировать исходный код пакета A, вам необходимо установить зависимость компиляции пакета B исходного кода пакета A. Чтобы успешно установить зависимость компиляции пакета B, вам необходимо получить все пакеты зависимостей установки пакета B. Поэтому перед компиляцией исходного кода пакета А вам, возможно, потребуется запросить зависимости компиляции исходного кода пакета и все зависимости установки этих зависимостей компиляции. Эта команда позволяет вам запрашивать несколько баз данных на основе приоритета платформы по умолчанию. Вы также можете настроить приоритет запроса к базе данных.

Синтаксис команды: pkgship builddep [$sourceName $sourceName1 $sourceName2..] -dbs [db1 db2 ..] [-level] $level.

Описание параметров:

  • sourceName: имя исходного кода пакета, от которого зависит компиляция. Можно запросить несколько исходных кодов пакетов. Этот параметр обязателен.
  • -dbs: определяет приоритет запрашиваемой базы данных. Если этот параметр не задан, база данных запрашивается в соответствии с приоритетом по умолчанию. Этот параметр необязательный.
  • -level: определяет уровень зависимости, которую необходимо запросить. Если этот параметр не задан, используется значение по умолчанию 0, которое указывает, что запрашиваются все уровни. Этот параметр необязательный.
  1. Запрос самокомпиляции и самозависимости установки.

Запрашивает зависимости установки и компиляции указанного бинарного пакета (binaryName) или исходного кода пакета (sourceName). [pkgName] указывает имя бинарного пакета или исходного кода пакета для запроса. При запросе бинарного пакета вы можете запросить все зависимости установки бинарного пакета, зависимости компиляции исходного кода пакета, соответствующего бинарному пакету, и все зависимости установки этих зависимостей компиляции. При запросе исходного кода пакета вы можете запросить зависимость компиляции исходного кода пакета, все зависимости установки этих зависимостей компиляции и все зависимости установки всех бинарных пакетов, созданных исходным кодом пакета. Кроме того, эту команду можно использовать вместе с соответствующим параметром для запроса зависимости самокомпиляции программного пакета и зависимости подпакета.

Сценарий использования: Если вы хотите представить новый программный пакет на основе существующей библиотеки версий, вам необходимо представить все зависимости компиляции и установки программного пакета. Эта команда позволяет одновременно запрашивать два типа зависимостей, чтобы вы могли узнать, какие другие пакеты будут представлены в программном пакете. Эту команду можно использовать для... Пакеты двоичные и пакеты исходного кода

pkgship selfdepend [$pkgName1 $pkgName2 $pkgName3 ..] [-dbs] [db1 db2..] [-b] [-s] [-w]

Описание параметра:

  • pkgName: имя пакета программного обеспечения, от которого зависит установка. Можно передать несколько пакетов программного обеспечения. Этот параметр является обязательным.

  • -dbs: указывает приоритет запрашиваемой базы данных. Если этот параметр не указан, база данных запрашивается на основе приоритета по умолчанию. Этот параметр не является обязательным.

  • -b: если указано -b, запрашиваемый пакет находится в двоичном формате. По умолчанию запрашивается пакет исходного кода, если исходный код не указан. Этот параметр не является обязательным.

  • -s: если указано -s, запрашиваются все зависимости установки, зависимости компиляции (то есть зависимости компиляции пакета исходного кода, от которых зависит компиляция) и зависимости установки всех зависимостей компиляции программного пакета. Если параметр -s не добавлен, запрашиваются все зависимости установки, одноуровневые зависимости компиляции и одноуровневые зависимости компиляции программного пакета. Этот параметр не является обязательным.

  • -w: если указано -s, при импорте двоичного пакета в результатах запроса отображаются соответствующий пакет исходного кода и все двоичные пакеты, сгенерированные пакетом исходного кода. Если -w не указано, в результате запроса при импорте двоичного пакета отображается только соответствующий пакет исходного кода. Этот параметр не является обязательным.

Зависимый запрос

Запросите пакеты, которые зависят от пакета программного обеспечения (pkgName) в базе данных (dbName).

Сценарий использования: Вы можете запустить эту команду, чтобы запросить пакеты программного обеспечения, на которые повлияет обновление или удаление программного пакета A. Эта команда отображает пакеты исходного кода (например, B), которые зависят от двоичных пакетов, созданных исходным кодом пакета A (например, C1), и двоичные пакеты (например, C1), которые зависят от двоичных пакетов. И пакеты исходного кода (такие как D), которые зависят от двоичного пакета, созданного B, двоичные пакеты (такие как E1), которые зависят от двоичного пакета, созданного B и так далее. Пройдитесь по зависимым двоичным пакетам.

pkgship bedepend dbName [$pkgName1 $pkgName2 $pkgName3] [-w] [-b] [-install/build]

Описание аргумента:

  • dbName: имя репозитория, зависимость которого необходимо запросить. Этот параметр является обязательным.

  • pkgName: указывает имя запрашиваемого пакета программного обеспечения. Можно запросить несколько пакетов программного обеспечения. Этот параметр является обязательным.

  • -w: если -w не указано, результат запроса не содержит подпакет соответствующего пакета исходного кода по умолчанию. Если после команды указан конфигурационный параметр [-w], запрашивается зависимость двоичного пакета C1, кроме того, запрашивается зависимость других двоичных пакетов (например, C2 и C3), сгенерированных исходным кодом пакета C, соответствующим C1. Этот параметр не является обязательным.

  • -b: (необязательно) если указано -b, запрашиваемый пакет является двоичным пакетом. По умолчанию запрашивается исходный код.

  • -install/build: если указано -install, запрашивается зависимость установки. Если указано -build, запрашивается зависимость компиляции. По умолчанию запрашиваются все зависимости. -install и -build не могут сосуществовать. Этот параметр не является обязательным.

Получение информации о базе данных

Сценарии применения: Проверьте, какие базы данных инициализированы в Elasticsearch. Эта функция возвращает список инициализированных баз данных на основе приоритета.

pkgship dbs

Получить номер версии

Сценарии применения: Этот интерфейс используется для получения номера версии программного обеспечения pkgship.

pkgship -v

Сравнение зависимостей между пакетами в разных базах данных Базы данных и зависимости их компиляции и установки на уровне 1, сравните информацию о зависимостях каждой базы данных на основе информации о первом пакете базы данных и запишите различия в файле CSV.

Сценарий применения: сравнить зависимости между системами и проанализировать точки оптимизации зависимостей программных пакетов.

pkgship compare -t build/install -dbs [database1 database2..] [-o out_path]

Описание параметров:

-t: тип зависимости. В настоящее время поддерживаются только -build (компиляция зависимости) и -install (зависимость установки).

-dbs: указывает список запрашиваемых баз данных. Базы данных разделяются пробелами. Для управления временем выполнения поддерживается максимум четыре базы данных. Программный пакет первой базы данных используется в качестве эталонного набора пакетов для сравнения.

-o: указывает путь для хранения файлов CSV. Если этот параметр не указан, используется значение по умолчанию /opt/pkgship/compare. Если необходимо указать этот параметр, убедитесь, что у пользователя pkgshipuser есть разрешение на запись. Файл .csv сохраняется в каталоге ${out_path}/timestamp. Файл csv содержит информацию о зависимостях пакетов (с именем по базе данных) каждой базы данных и информацию о сравнении зависимостей пакетов (compare.csv) всех баз данных.

Просмотр и дамп журналов

Просмотр журналов

Когда служба pkgship работает, создаются два типа журналов: служебные и операционные.

  1. Служебные журналы:

Путь: /var/log/pkgship/log_info.log (можно настроить путь с помощью поля log_path в файле conf.yaml).

Функция: этот журнал записывает внутреннее выполнение кода для облегчения поиска неисправностей.

Разрешение: разрешение пути — 755, разрешение файла журнала — 644. Обычные пользователи могут просматривать файл журнала.

  1. Операционный журнал:

Путь: /var/log/pkgship-operation/uwsgi.log (настроить путь можно с помощью поля daemonize в файле conf.yaml).

Функция: записывает информацию об операциях пользователя, включая IP-адрес, время доступа, URL-адрес доступа и результат доступа, чтобы облегчить последующий запрос и записать информацию о злоумышленниках.

Разрешение: разрешение пути — 700, разрешение файла журнала — 644. Только пользователи root и pkgshipuser могут просматривать файл журнала.

Дамп журнала

  1. Дамп служебного журнала:

Механизм дампа: используйте механизм дампа встроенной функции ведения журнала Python для резервного копирования журналов на основе размера журнала.

Конфигурационный элемент. Используется для настройки ёмкости и количества резервных копий каждого журнала в файле package.ini.

; Максимальная ёмкость каждого файла, единица измерения — байт, по умолчанию — 30M
max_bytes=31457280

; Количество старых журналов для сохранения;по умолчанию — 30
backup_count=30

Процесс дампа: после записи журнала, если размер файла журнала превышает настроенную ёмкость журнала, файл журнала автоматически сжимается и сбрасывается. Имя сжатого файла — log_info.log.x.gz, где x — число. Меньшее число указывает на более новую резервную копию.

Когда количество резервных файлов журнала достигает максимума, самый ранний резервный файл журнала удаляется, а самый последний сжатый файл журнала резервируется.

  1. Дамп операционного журнала:

Механизм дампа: скрипт используется для дампа данных по времени. Данные сбрасываются один раз в день и сохраняются в течение 30 дней. Период хранения нельзя настроить.

Скрипт хранится в /etc/pkgship/uwsgi_logrotate.sh.

Процесс дампа: когда pkgship запускается, скрипт дампа выполняется в фоновом режиме. С момента запуска дамп и сжатие выполняются каждый день. Всего сохраняется 30 сжатых файлов. Имя сжатого файла — uwsgi.log-20201010x.zip, где x указывает час сжатия файла.

После остановки pkgship скрипт дампа останавливается и не сбрасывает данные. При повторном запуске pkgship снова выполняется скрипт дампа.

Инструмент расширения pkgship-panel

Введение

pkgship-panel предназначен для интеграции информации о сборке пакетов и информации об обслуживании вместе, чтобы сопровождающие версии могли быстро определить... Аномальные пакеты, оперативно уведомлять об этом ответственных лиц по электронной почте для их устранения, чтобы обеспечить стабильность сборочного проекта и повысить успешность сборок IOS.

Архитектура

Панель управления пакетами

Использование инструмента

Поскольку источник данных инструмента не настраивается, рекомендуется напрямую использовать официальный адрес веб-сайта pkgship-panel: https://pkgmanage.openeuler.org/Infomanagement

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MulanPSL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/openeuler-pkgship.git
git@api.gitlife.ru:oschina-mirror/openeuler-pkgship.git
oschina-mirror
openeuler-pkgship
openeuler-pkgship
master