CREATEREPO-AGENT(1)

πŸ“¦
version 0.6.0 Β· 2 versions
, in epel 10, epel 9, fedora 43, fedora 44

πŸ’– CREATEREPO-AGENT πŸ’–

okay bestie, welcome to createrepo-agent(1) from the General Commands Manual β€” she's a whole vibe and she's about to make your RPM repos absolutely thrive. πŸ¦‹


✨ NAME ✨

createrepo-agent β€” rapidly and repeatedly generate RPM repository metadata πŸŽ€


✨ SYNOPSIS ✨

createrepo-agent [OPTION?] REPO_CLUSTER_DIR

✨ DESCRIPTION ✨

so like. createrepo-agent is a tool for rapidly iterating on clusters of associated RPM repositories. that's the whole thing, that's her job πŸ’…

the way she does it?? she leverages Assuan IPC to spin up a daemon process which caches the metadata for each sub-repository in the cluster. which means β€” and this is the iconic part β€” she doesn't need to re-load and re-parse all that metadata every single time a change is made. no cap. she just remembers. 🧠✨

the most notable implementation of the Assuan protocol is gpg-agent, which is literally where createrepo-agent got her name from. slay lineage fr fr πŸ‘‘


✨ COMMANDS ✨

  • -h, --help β€” show program help text. that's it, that's the whole thing, she's helpful like that 🫢
  • --daemon β€” run createrepo-agent as a detached background process. she's going off on her own, main character energy, you won't even see her leave πŸ’¨
  • --server β€” run createrepo-agent as a foreground process. right there with you, holding your hand, not going anywhere πŸ’œ
  • --import=RPM_FILE β€” connect to an existing createrepo-agent process, or spawn a new one, then import an RPM package into the repository cluster. may be specified multiple times (she loves being asked more than once, honestly same) πŸ“
  • --sync=BASE_URL β€” connect to an existing createrepo-agent process, or spawn a new one, then import RPM packages into the repository cluster from another repository. the BASE_URL may be a local file path or a remote URL. and here's the tea: in the absence of --sync-pattern, any packages present in both repositories will be removed from the repository cluster and re-added from the upstream repository. lowkey dramatic but okay 😭

✨ OPTIONS ✨

  • --arch=ARCH_NAME β€” when importing, add the packages specified by --import into the sub-repositories for these architectures. when syncing, add packages from the upstream repository into the corresponding sub-repositories for these architectures. if you don't specify it, the default value is 'SRPMS'. πŸ’«
  • --invalidate-family β€” when removing binary packages during import, also remove any packages from that architecture sub-repository and the associated debug sub-repository which were built from the same source RPM. she's taking the whole family out, no survivors, it's giving dynasty finale πŸ‘‘
  • --invalidate-dependants β€” when removing binary packages during import, also remove any packages from that architecture sub-repository which (recursively) declare runtime dependencies on any package being removed. recursive?? she said i will find them and i will remove them πŸ”₯
  • --sync-pattern=REGEX β€” when syncing from another repository, only add and remove packages which match the given regular expression. very picky, very demure, very mindful 🌸

✨ EXAMPLES ✨

🌈 Importing loose packages into a repository

  • import three packages into the repository. if there's already a package in the repository with any of the given names, remove it and all packages which were built at the same time. import them into both the i386 and x86_64 sub-repositories.
$ createrepo-agent --import=foo-1.2.3.i686.rpm --import=foo-devel-1.2.3.i686.rpm --import=foo-debuginfo-1.2.3.i686.rpm --arch=i386 --arch=x86_64 --invalidate-family /var/www/html/repo/
  • import a single source package into the repository.
$ createrepo-agent --import=foo-1.2.3.src.rpm /var/www/html/repo/

🌈 Importing packages from other repositories

  • import all packages present in the upstream repository. if there are already packages in the repository which are present in the upstream repository, remove them, any packages which were built at the same time as them, and any packages which (recursively) depend on them. it's a full reset bestie, she's not playing πŸ’€
$ createrepo-agent --sync=/var/www/html/upstream_repo/ --arch=SRPMS --arch=x86_64 --invalidate-family --invalidate-dependants /var/www/html/repo/
  • import any packages present in the upstream repository with a name beginning with 'foobar' into the repository. any packages already in the repository matching the pattern which are not also present in the upstream repository are removed.
$ createrepo-agent --sync=https://example.com/upstream_repo/ --arch=SRPMS --arch=x86_64 --sync-pattern 'foobar.*' /var/www/html/repo/

✨ SEE ALSO ✨

createrepo_c(8) β€” her cousin, also iconic, go say hi 🫢


ok that's the whole page, you ate that, no crumbs left πŸ’…

and that's a wrap on CREATEREPO-AGENT(1) from the General Commands Manual β€” mwah, go build something beautiful, ily πŸŽ€βœ¨

πŸ“¦ where this page comes from