Пкгшип
Пкгшип
Пкгшип — это инструмент, используемый для управления зависимостями пакетов программного обеспечения ОС и предоставления полного графа зависимостей. Пкгшип предоставляет такие функции, как запрос зависимостей пакетов программного обеспечения, управление жизненным циклом и запрос исправлений.
Система разработана с использованием режима 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. Вам не нужно вручную создавать пользователя и группу пользователей, потому что они будут использоваться при запуске и работе службы.
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
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 для запуска и остановки службы.
Использование инструментов
Инициализация базы данных.
Сценарий применения: после запуска службы необходимо импортировать сгенерированный createrepo sqlite (включая исходную библиотеку кода и двоичную библиотеку) в службу, чтобы запросить информацию о пакете и зависимости пакета в соответствующей базе данных (например, oe20.03 и oe20.09). Затем нужно вставить тело JSON соответствующей информации о пакете в соответствующую базу данных Elasticsearch. Имя базы данных — это значение dbname-source/binary, созданное на основе значения dbname в файле config.yaml.
pkgship init [-filepath path]
Описание параметра: -filepath: указывает путь к файлу конфигурации инициализации config.yaml. Значением может быть относительный или абсолютный путь. Если этот параметр не указан, используется конфигурация по умолчанию. Этот параметр является необязательным.
Запрос одного пакета.
Вы можете запросить подробную информацию об исходном коде пакета или двоичном пакете (packagename) в указанной таблице базы данных.
Сценарий применения: пользователи могут запрашивать подробную информацию об исходном коде или двоичном пакете в указанной базе данных.
pkgship pkginfo $packageName $database [-s]
Описание параметра: packagename: указывает имя программного пакета, который нужно запросить. Этот параметр обязателен. database: указывает имя базы данных. Этот параметр обязателен. -s: если вы укажете -s, будет запрошена информация об исходном коде src. Если вы не укажете этот параметр, по умолчанию будет запрошена двоичная информация пакета bin. Этот параметр необязателен.
Запросите информацию обо всех пакетах в базе данных.
Сценарий применения: вы можете запросить информацию обо всех программных пакетах в указанной базе данных.
pkgship list $database [-s]
Описание параметра: database: указывает имя базы данных. Этот параметр обязателен. -s: если вы укажете -s, будет запрошена информация об исходном коде src. Если вы не укажете этот параметр, по умолчанию будет запрошена двоичная информация пакета bin. Этот параметр необязателен.
Запрос зависимостей установки двоичного пакета. Сценарий использования:
Когда вам нужно установить бинарный пакет A, необходимо задать зависимость установки бинарного пакета A от B и зависимость установки бинарного пакета B от C. Бинарный пакет А может быть успешно установлен только после того, как все зависимости установки будут установлены в системе. Поэтому перед установкой бинарного пакета А вам может потребоваться запросить все зависимости установки бинарного пакета А. Эта команда позволяет запрашивать несколько баз данных на основе приоритета платформы по умолчанию. Вы также можете настроить приоритет запроса базы данных.
Синтаксис команды: pkgship installdep [$binaryName $binaryName1 $binaryName2...] [-dbs] [db1 db2...] [-level] $level
Описание параметров:
Запросите все зависимости компиляции исходного кода пакета (sourceName).
Сценарий использования: Чтобы скомпилировать исходный код пакета A, вам необходимо установить зависимость компиляции пакета B исходного кода пакета A. Чтобы успешно установить зависимость компиляции пакета B, вам необходимо получить все пакеты зависимостей установки пакета B. Поэтому перед компиляцией исходного кода пакета А вам, возможно, потребуется запросить зависимости компиляции исходного кода пакета и все зависимости установки этих зависимостей компиляции. Эта команда позволяет вам запрашивать несколько баз данных на основе приоритета платформы по умолчанию. Вы также можете настроить приоритет запроса к базе данных.
Синтаксис команды: pkgship builddep [$sourceName $sourceName1 $sourceName2..] -dbs [db1 db2 ..] [-level] $level.
Описание параметров:
Запрашивает зависимости установки и компиляции указанного бинарного пакета (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 работает, создаются два типа журналов: служебные и операционные.
Путь: /var/log/pkgship/log_info.log (можно настроить путь с помощью поля log_path в файле conf.yaml).
Функция: этот журнал записывает внутреннее выполнение кода для облегчения поиска неисправностей.
Разрешение: разрешение пути — 755, разрешение файла журнала — 644. Обычные пользователи могут просматривать файл журнала.
Путь: /var/log/pkgship-operation/uwsgi.log (настроить путь можно с помощью поля daemonize в файле conf.yaml).
Функция: записывает информацию об операциях пользователя, включая IP-адрес, время доступа, URL-адрес доступа и результат доступа, чтобы облегчить последующий запрос и записать информацию о злоумышленниках.
Разрешение: разрешение пути — 700, разрешение файла журнала — 644. Только пользователи root и pkgshipuser могут просматривать файл журнала.
Дамп журнала
Механизм дампа: используйте механизм дампа встроенной функции ведения журнала Python для резервного копирования журналов на основе размера журнала.
Конфигурационный элемент. Используется для настройки ёмкости и количества резервных копий каждого журнала в файле package.ini.
; Максимальная ёмкость каждого файла, единица измерения — байт, по умолчанию — 30M max_bytes=31457280 ; Количество старых журналов для сохранения;по умолчанию — 30 backup_count=30
Процесс дампа: после записи журнала, если размер файла журнала превышает настроенную ёмкость журнала, файл журнала автоматически сжимается и сбрасывается. Имя сжатого файла — log_info.log.x.gz, где x — число. Меньшее число указывает на более новую резервную копию.
Когда количество резервных файлов журнала достигает максимума, самый ранний резервный файл журнала удаляется, а самый последний сжатый файл журнала резервируется.
Механизм дампа: скрипт используется для дампа данных по времени. Данные сбрасываются один раз в день и сохраняются в течение 30 дней. Период хранения нельзя настроить.
Скрипт хранится в /etc/pkgship/uwsgi_logrotate.sh.
Процесс дампа: когда pkgship запускается, скрипт дампа выполняется в фоновом режиме. С момента запуска дамп и сжатие выполняются каждый день. Всего сохраняется 30 сжатых файлов. Имя сжатого файла — uwsgi.log-20201010x.zip, где x указывает час сжатия файла.
После остановки pkgship скрипт дампа останавливается и не сбрасывает данные. При повторном запуске pkgship снова выполняется скрипт дампа.
pkgship-panel предназначен для интеграции информации о сборке пакетов и информации об обслуживании вместе, чтобы сопровождающие версии могли быстро определить... Аномальные пакеты, оперативно уведомлять об этом ответственных лиц по электронной почте для их устранения, чтобы обеспечить стабильность сборочного проекта и повысить успешность сборок IOS.
Поскольку источник данных инструмента не настраивается, рекомендуется напрямую использовать официальный адрес веб-сайта pkgship-panel: https://pkgmanage.openeuler.org/Infomanagement
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )