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".
Пакет, необходимый для установки:
Внимание! Если система загружена в режиме полного сохранения, то внесенные изменения в систему будут сохранены после перезагрузки.
Если режим загрузки другой, то рекомендуется воспользоваться утилитой "Сохранение изменений" до перезагрузки системы.