CREATEREPO_C(8)

πŸ“¦ version 1.1.0, in opensuse-leap 16.0

πŸ’– CREATEREPO_C(8) β€” createrepo_c: create rpm-md format (xml-rpm-metadata) repository πŸ’–

okay so bestie, welcome to the CREATEREPO_C(8) manual β€” this is the group chat where we turn a directory of rpm packages into repodata. no cap, it's giving package-manager main character energy πŸ’…βœ¨


🌸 NAME 🌸

createrepo_c β€” Create rpm-md format (xml-rpm-metadata) repository.

πŸŽ€ SYNOPSIS πŸŽ€

createrepo_c [options] <directory>

🌈 DESCRIPTION 🌈

Uses rpm packages from <directory> to create repodata. literally the whole plot 🫢

If compiled with libmodulemd support, modular metadata inside <directory> identified by the patterns below and all their compressed variants are automatically collected, merged and added to the repodata. slay, automatic ✨

The patterns are:

  • *.modulemd.yaml (recommended file name: N:S:V:C:A.modulemd.yaml)
  • *.modulemd-defaults.yaml (recommended file name: N.modulemd-defaults.yaml)
  • modules.yaml (recommended way of importing multiple documents at once)

πŸ’… OPTIONS πŸ’…

  • -V, --version β€” Show the program's version number and exit. cute and brief πŸ’–
  • -q, --quiet β€” Run quietly. no chatter, just vibes 🀫
  • -v, --verbose β€” Run verbosely. tell me EVERYTHING bestie πŸ—£οΈ
  • -x, --excludes PACKAGE_NAME_GLOB β€” Path patterns to exclude, can be specified multiple times. The patterns are matched against relative paths to RPMs. Note that the feature uses g_pattern_match() function, not glob(), for semantic differences see https://developer.gnome.org/glib/stable/glib-Glob-style-pattern-matching.html πŸ‘€
  • --basedir BASEDIR β€” Basedir for path to directories. set the base, bestie 🏠
  • -u, --baseurl URL β€” Optional base URL location for all files. URL era πŸ’«
  • -g, --groupfile GROUPFILE β€” Path to groupfile to include in metadata. groupfile said include me πŸ“Ž
  • -s, --checksum CHECKSUM_TYPE β€” Choose the checksum type used in repomd.xml and for packages in the metadata. The default is now sha256. iconic default πŸ”
  • -p, --pretty β€” Make sure all xml generated is formatted (default). pretty xml, pretty vibes πŸŽ€
  • -p, --no-pretty β€” Minify the generated xml content. On average this reduces compressed size by 2%. tiny but real πŸ“‰
  • -d, --database β€” Generate sqlite databases for use with yum. yum yum πŸ“
  • --no-database β€” Do not generate sqlite databases in the repository. no DB, no problem πŸ™ˆ
  • --update β€” If metadata already exists in the outputdir and an rpm is unchanged (based on file size and mtime) since the metadata was generated, reuse the existing metadata rather than recalculating it. In the case of a large repository with only a few new or modified rpms this can significantly reduce I/O and processing time. efficiency queen πŸ‘‘
  • --update-md-path β€” Existing metadata from this path are loaded and reused in addition to those present in the outputdir (works only with --update). Can be specified multiple times. stack those paths 🫢
  • --skip-stat β€” Skip the stat() call on a --update, assumes if the filename is the same then the file is still the same (only use this if you're fairly trusting or gullible). bestie this is a trust fall 😭
  • --split β€” Run in split media mode. Rather than pass a single directory, take a set of directories corresponding to different volumes in a media set. Meta data is created in the first given directory. split media, split attention πŸ’€
  • -i, --pkglist FILENAME β€” Specify a text file which contains the complete list of files to include in the repository from the set found in the directory. File format is one package per line, no wildcards or globs. list bestie, list πŸ“
  • -n, --includepkg PACKAGE β€” Specify pkgs to include on the command line. Takes urls as well as local paths. command-line includes, okayyy πŸ’…
  • --recycle-pkglist β€” Useful only with --update. Read the list of packages from old metadata, and reuse it instead of (perhaps expensive) directory traversal. This doesn't collide with explicitly selected packages by --pkglist or --includepkg, such packages are appended to the recycled list. This option is useful for I/O optimal repo modifications (package removal by --exclude, and additions with --pkglist). recycle era ♻️
  • -o, --outputdir URL β€” Optional output directory. where the output goes 🏁
  • -S, --skip-symlinks β€” Ignore symlinks of packages. not today, symlinks 🚫
  • --changelog-limit NUM β€” Only import the last N changelog entries, from each rpm, into the metadata. keep the recent lore only πŸ“š
  • --unique-md-filenames β€” Include the file's checksum in the metadata filename, helps HTTP caching (default). cache-friendly and iconic 🌟
  • --simple-md-filenames β€” Do not include the file's checksum in the metadata filename. simple filenames, simple life πŸ¦‹
  • --retain-old-md NUM β€” Set NUM to 0 to remove all repodata present in old repomd.xml, or set any other positive number to keep all old repodata. Use --compatibility flag to get the behavior of original createrepo: Keep around the latest (by timestamp) NUM copies of the old repodata (works only for primary, filelists, other and their DB variants). old repodata custody battle 😭
  • --distro DISTRO β€” Distro tag and optional cpeid: --distro'cpeid,textname'. distro tagging bestie 🏷️
  • --content CONTENT_TAGS β€” Tags for the content in the repository. tag the content ✨
  • --repo REPO_TAGS β€” Tags to describe the repository itself. tag the repo, periodt πŸ’…
  • --revision REVISION β€” User-specified revision for this repository. revision said it's her turn πŸ’œ
  • --set-timestamp-to-revision β€” Set timestamp fields in repomd.xml and last modification times of created repodata to a value given with --revision. This requires --revision to be a timestamp formatted in date +%s format. timestamp slay ⏰
  • --read-pkgs-list READ_PKGS_LIST β€” Output the paths to the pkgs actually read useful with --update. receipts for what got read 🧾
  • --workers β€” Number of workers to spawn to read rpms. worker bees assemble 🐝
  • --xz β€” Use xz for repodata compression. xz era πŸ—œοΈ
  • --compress-type COMPRESSION_TYPE β€” Which compression type to use. Supported compressions are: bz2, gz, zck, zstd, xz. pick your compression bestie πŸŽ€
  • --general-compress-type COMPRESSION_TYPE β€” Which compression type to use (even for primary, filelists and other xml). general compression energy 🌈
  • --zck β€” Generate zchunk files as well as the standard repodata. zchunk said hi πŸ‘‹
  • --zck-dict-dir ZCK_DICT_DIR β€” Directory containing compression dictionaries for use by zchunk. dictionary directory, iykyk πŸ“–
  • --keep-all-metadata β€” Keep all additional metadata (not primary, filelists and other xml or sqlite files, nor their compressed variants) from source repository during update (default). keep keep keep πŸ’–
  • --discard-additional-metadata β€” Discard all additional metadata (not primary, filelists and other xml or sqlite files, nor their compressed variants) from source repository during update. bye extra metadata πŸ‘‹
  • --compatibility β€” Enforce maximal compatibility with classical createrepo (Changes --retain-old-md behavior, uses Gzip for compression). old-school compatibility, respectfully 🫢
  • --retain-old-md-by-age AGE β€” During --update, remove all files in repodata/ which are older then the specified period of time. (e.g. '2h', '30d', ...). Available units (m - minutes, h - hours, d - days). age check, bestie ⏳
  • -c, --cachedir CACHEDIR. β€” Set path to cache dir. cache directory said set me πŸ—‚οΈ
  • --deltas β€” Tells createrepo to generate deltarpms and the delta metadata. deltas, slay πŸ”₯
  • --oldpackagedirs PATH β€” Paths to look for older pkgs to delta against. Can be specified multiple times. old package directories, we see you πŸ‘€
  • --num-deltas INT β€” The number of older versions to make deltas against. Defaults to 1. one delta default, okayyy πŸ’…
  • --max-delta-rpm-size MAX_DELTA_RPM_SIZE β€” Max size of an rpm that to run deltarpm against (in bytes). size limit, bytes era πŸ“
  • --local-sqlite β€” Gen sqlite DBs locally (into a directory for temporary files). Sometimes, sqlite has a trouble to gen DBs on a NFS mount, use this option in such cases. This option could lead to a higher memory consumption if TMPDIR is set to /tmp or not set at all, because then the /tmp is used and /tmp dir is often a ramdisk. local sqlite, memory warning bestie 😭
  • --cut-dirs NUM β€” Ignore NUM of directory components in location_href during repodata generation. cut cut cut βœ‚οΈ
  • --location-prefix PREFIX β€” Append this prefix before location_href in output repodata. prefix era πŸŽ€
  • --repomd-checksum CHECKSUM_TYPE β€” Checksum type to be used in repomd.xml. repomd checksum, slay πŸ”
  • --error-exit-val β€” Exit with retval 2 if there were any errors during processing (option deprecated, on by default). deprecated but still on, iconic behavior πŸ’€
  • --ignore-lock β€” Expert (risky) option: Ignore an existing .repodata/. Remove the existing .repodata/ and create an empty new one to serve as a lock for other createrepo instances. For the repodata generation, a different temporary dir with the name in format .repodata.time.microseconds.pid/ will be used. NOTE: Use this option on your own risk! If two createrepos run simultaneously, then the state of the generated metadata is not guaranteed - it can be inconsistent and wrong. bestie, this is the risky one, do not ignore that warning 😭πŸ”₯

Bye bestie! This page is the 2021-09-23 edition of CREATEREPO_C(8) β€” source/version plus date, signed off with maximum sparkle πŸ’‹πŸ’–βœ¨