createrepo_c - это инструмент для создания метаданных репозитория на основе RPM-пакетов в Linux. Он является частью проекта createrepo, который предназначен для создания и обслуживания репозиториев с пакетами RPM. createrepo_c - это ускоренная версия оригинальной утилиты createrepo.
Основная цель createrepo_c состоит в том, чтобы создать и обновить метаданные репозитория, такие как файл repodata/repomd.xml и другие файлы, которые содержат информацию о пакетах, доступных в репозитории. Эти метаданные позволяют системе управления пакетами, такой как yum, быстро и эффективно обнаруживать и загружать пакеты из репозитория.
Основные возможности createrepo_c включают:
Контактная информация:
Официальный сайт
Проект GitHub
Лицензия:
GPL2
Синтаксис:
createrepo_c [ПАРАМЕТР…] <directory_to_index>
Параметры справки:
| Параметр | Описание |
|---|---|
| -h, --help | Показать параметры справки |
| --help-all | Показать все параметры справки |
| --help-expert | Expert (risky) options |
Параметры приложения:
| Параметр | Описание |
|---|---|
| -V, --version | Показать номер версии программы и выйти. |
| -q, --quiet | Запуск в тихом режиме. Не выводить лишний вывод. |
| -v, --verbose | Запуск в режиме подробного вывода. Выводить дополнительную информацию. |
| -x, --excludes=PACKAGE_NAME_GLOB | Шаблоны путей для исключения пакетов. Может быть указано несколько раз. |
| --basedir=BASEDIR | Базовый каталог для путей к директориям. |
| -u, --baseurl=URL | Дополнительный базовый URL-адрес для всех файлов. |
| -g, --groupfile=GROUPFILE | Путь к файлу группы для включения в метаданные. |
| -s, --checksum=CHECKSUM_TYPE | Выбор типа контрольной суммы, используемой в repomd.xml и для пакетов в метаданных. По умолчанию используется "sha256". |
| -p, --pretty | Убедиться, что все сгенерированные XML-файлы имеют отформатированный вид (по умолчанию). |
| -d, --database | Генерировать базы данных SQLite для использования с yum. |
| --no-database | Не генерировать базы данных SQLite в репозитории. |
| --filelists-ext | Создать метаданные filelists-ext с хэшами файлов. |
| --update | Если метаданные уже существуют в выходном каталоге и пакет RPM не изменился (на основе размера файла и метки времени изменения) с момента создания метаданных, повторно использовать существующие метаданные, а не пересчитывать их. В случае большого репозитория с небольшим количеством новых или измененных пакетов это может значительно снизить операции ввода-вывода и время обработки. |
| --update-md-path | Загружать существующие метаданные из этого пути и использовать их повторно, в дополнение к тем, которые уже присутствуют в выходном каталоге (работает только с параметром --update). Может быть указано несколько раз. |
| --skip-stat | Пропустить вызов функции stat() при использовании параметра --update. Предполагается, что если имя файла осталось прежним, то файл остается неизменным (используйте только если вы доверяете или наивны). |
| --split | Режим разделения на несколько носителей. Вместо передачи одного каталога указывается набор каталогов, соответствующих различным томам в наборе носителей. Метаданные создаются в первом указанном каталоге. |
| -i, --pkglist=FILENAME | Указать текстовый файл, содержащий полный список файлов, которые следует включить в репозиторий из указанного каталога. Формат файла: по одному пакету на строку, без использования подстановочных знаков или шаблонов. |
| -n, --includepkg=PACKAGE | Указать пакеты для включения в командной строке. Принимает URL-адреса, а также локальные пути. |
| -o, --outputdir=URL | Опциональный выходной каталог. |
| -S, --skip-symlinks | Игнорировать символические ссылки на пакеты. |
| --changelog-limit=NUM | Импортировать только последние N записей изменений из каждого пакета RPM в метаданные. |
| --unique-md-filenames | Включать контрольную сумму файла в имя метаданных, что помогает в кэшировании HTTP (по умолчанию). |
| --simple-md-filenames | Не включать контрольную сумму файла в имя метаданных. |
| --retain-old-md=NUM | Указать NUM равным 0, чтобы удалить все репозитории, присутствующие в старом файле repomd.xml, или любое положительное число, чтобы сохранить все старые репозитории. Используйте флаг --compatibility, чтобы получить поведение оригинального createrepo: сохранять NUM последних (по временной метке) копий старых репозиториев (работает только для основных, filelists, и других их вариантов DB). |
| --distro=DISTRO | Метка дистрибутива и необязательный cpeid: --distro'cpeid,textname'. |
| --content=CONTENT_TAGS | Теги для описания содержимого в репозитории. |
| --repo=REPO_TAGS | Теги для описания самого репозитория. |
| --revision=REVISION | Пользовательский указанный ревизионный номер для этого репозитория. |
| --set-timestamp-to-revision | Установить поля временных меток в файле repomd.xml и время последнего изменения созданных репозиториев на значение, заданное с помощью --revision. Для этого требуется, чтобы --revision было временной меткой в формате 'date +%s'. |
| --read-pkgs-list=READ_PKGS_LIST | Вывести пути к фактически прочитанным пакетам, полезно совместно с параметром --update. |
| --workers | Количество запускаемых рабочих процессов для чтения пакетов RPM. |
| --xz | Использовать сжатие XZ для метаданных. |
| --compress-type=COMPRESSION_TYPE | Тип сжатия для использования. |
| --zck | Генерировать файлы zchunk вместе с обычными метаданными. |
| --zck-dict-dir=ZCK_DICT_DIR | Каталог, содержащий словари сжатия для использования zchunk. |
| --keep-all-metadata | Сохранять все дополнительные метаданные (кроме основных, filelists и других файлов XML или SQLite, а также их сжатых вариантов) из исходного репозитория во время обновления (по умолчанию). |
| --discard-additional-metadata | Удалять все дополнительные метаданные (кроме основных, filelists и других файлов XML или SQLite, а также их сжатых вариантов) из исходного репозитория во время обновления. |
| --compatibility | Обеспечивать максимальную совместимость с классическим createrepo (влияет только на --retain-old-md). |
| --retain-old-md-by-age=AGE | Во время --update удалять все файлы в repodata/, которые старше указанного периода времени (например, '2h', '30d', ...). Доступные единицы измерения: m - минуты, h - часы, d - дни. |
| -c, --cachedir=CACHEDIR | Установить путь к каталогу кэша. |
| --deltas | Сообщает createrepo генерировать deltarpms и дополнительные метаданные для дельт. |
| --oldpackagedirs=PATH | Пути, по которым ищутся более старые пакеты для создания дельт. Можно указать несколько раз. |
| --num-deltas=INT | Количество более старых версий, с которыми будут создаваться дельты. По умолчанию - 1. |
| --max-delta-rpm-size=MAX_DELTA_RPM_SIZE | Максимальный размер RPM-пакета, для которого выполняется создание дельтарпм (в байтах). |
| --local-sqlite | Генерировать локальные SQLite-базы данных (во временный каталог для временных файлов). Иногда SQLite может иметь проблемы с созданием баз данных на смонтированной файловой системе NFS, в таких случаях используйте этот параметр. Однако это может привести к увеличению использования памяти, если переменная среды TMPDIR установлена на /tmp или не установлена вообще, поскольку тогда будет использоваться /tmp, а каталог /tmp часто является RAM-диском. |
| --cut-dirs=NUM | Игнорировать NUM компонентов каталога в location_href во время создания метаданных repodata. |
| --location-prefix=PREFIX | Добавить этот префикс перед location_href в выходных метаданных repodata. |
| --repomd-checksum=CHECKSUM_TYPE | Тип контрольной суммы, используемый в файле repomd.xml. |
| --error-exit-val | Завершить работу с кодом возврата 2, если возникли ошибки во время обработки (параметр устаревший, включен по умолчанию). |
| --recycle-pkglist | Считывать список пакетов из старого каталога метаданных и повторно использовать его. Этот параметр полезен только с опцией --update (дополняет --pkglist и аналогичные параметры). |
| --duplicated-nevra | Действия, которые следует предпринять при обнаружении дублирующихся NEVRA (Name, Epoch, Version, Release, Architecture) записей. |
Для создания локального репозитория, необходимо сначала создать каталог для него и поместить в этот каталог необходимые RPM-пакеты.
Затем открыть терминал и ввести команду для формирования репозитория:
sudo createrepo_c -d --excludes="*beta*" --excludes="*alpha*" /target_path
где:
Для включения в репозиторий пакетов из готового списка (файл *.txt) следует выполнить команду:
sudo createrepo_c -d --pkglist=package_list.txt /target_path
Где:
htop-3.3.0-4.fc41.x86_64.rpm
atop-2.11.0-1.fc41.x86_64.rpm
nano-5.8-1.fc41.x86_64.rpm
После каждого добавления пакетов *.rpm в каталог "/target_path" необходимо выполнять команду обновления createrepo_c. Это обновит базу метаданных репозитория и XML-разметку, чтобы учесть добавленные пакеты.
Например, обновление для всех пакетов внутри /target_path:createrepo_c --update /target_path
Примерный вывод:
Directory walk started
Directory walk done - 48 packages
Temporary output repo path: /home/public/repo/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished
Где:
Установить можно пакетом:
Для установки следует включить поддержку AUR в утилите "Установка и удаление программ" или использовать консольный пакетный менеджер "Yay".
Пакет, необходимый для установки:
Внимание! Если система загружена в режиме полного сохранения, то внесенные изменения в систему будут сохранены после перезагрузки.
Если режим загрузки другой, то рекомендуется воспользоваться утилитой "Сохранение изменений" до перезагрузки системы.