How to use the command 'createrepo' (with examples)
- Linux
- December 25, 2023
The ‘createrepo’ command is used to initialize an RPM repository in the given directory, including all XML and SQLite files. This command is commonly used in Linux systems to create a repository for hosting RPM packages.
Use case 1: Initialize a basic repository in a directory
Code:
createrepo path/to/directory
Motivation: This use case is helpful when you want to create a basic repository in a specific directory. By using the ‘createrepo’ command, you can initialize the repository and generate all the necessary files for hosting RPM packages.
Explanation:
- ‘createrepo’ is the command name.
- ‘path/to/directory’ is the path to the directory where you want to create the repository.
Example output:
Spawning worker 0 with 10 pkgs
[...]
Writing sqlite database in /path/to/directory/repodata/5f2512e1b8dfccc88483834ceea4f030e075e9569ff7e1cb8b2b1e6e68dd2bdb-primary.sqlite.bz2
Writing sqlite database in /path/to/directory/repodata/964b5e87a687ef7ed786cc6e83a632b9830e9a06a2f0428620fa5236f2c63f03-filelists.sqlite.bz2
Writing sqlite database in /path/to/directory/repodata/02bdf3da9d282df331f3d562be7c720e697475e2c86263f5885d16e7f72a5831-other.sqlite.bz2
Writing sqlite database in /path/to/directory/repodata/3a8800ace06f747e7e053d518e6d1893a020eb053e5d2687548e849d3eef0c6e-group.sqlite.bz2
Writing sqlite database in /path/to/directory/repodata/954abf5ff8951e5f3135ea3493c6f08191d30f3fb8ae2fdaedac5882f1637b62-updateinfo.xml.bz2
Writing sqlite database in /path/to/directory/repodata/05c6a2d9dd352b8cf914c1297a9e6854d80b2f647fccc6891c758311d6eb3f29-primary.xml.gz
Writing sqlite database in /path/to/directory/repodata/16e6f19b428b0f23f646def786d8b32620df201bde5e8db8d73a1560b4c17115-other.xml.gz
Writing sqlite database in /path/to/directory/repodata/18da46e97d12703f940f1cd61ed253e3f814b9fce09fa7a046f99796bbfbc81b-filelists.xml.gz
Writing sqlite database in /path/to/directory/repodata/99217d98ba4d8f31ae3b2bdbe7fdfb1c4a7db6b0c73a6b4ba9d46e3fd4fc60f7-updateinfo.xml.gz
Writing sqlite database in /path/to/directory/repodata/8006f16a909b27e7916253400f5cdf7b99d2fa0a15c42885f8195a3a7c4fd968-group.xml.gz
Writing sqlite database in /path/to/directory/repodata
Use case 2: Initialize a repository, exclude test RPMs and display verbose logs
Code:
createrepo -v -x test_*.rpm path/to/directory
Motivation: In situations where you want to exclude certain RPM packages (e.g., test RPMs) from the repository, this use case of the ‘createrepo’ command becomes handy. Additionally, using the ‘-v’ argument helps in obtaining verbose logs during the repository initialization process.
Explanation:
- ‘createrepo’ is the command name.
- ‘-v’ enables verbose mode, which provides detailed progress information during repository initialization.
- ‘-x test_.rpm’ excludes RPM packages matching the pattern ’test_.rpm’ from being added to the repository.
- ‘path/to/directory’ is the path to the directory where you want to create the repository.
Example output:
Spawning worker 0 with 10 pkgs
> Starting repomd creation
> Starting repomd creation
> Starting repomd creation
... (verbose logs for each step in the initialization process)
Use case 3: Initialize a repository, using SHA1 as the checksum algorithm, and ignoring symbolic links
Code:
createrepo -S -s sha1 path/to/directory
Motivation: By default, ‘createrepo’ uses MD5 as the checksum algorithm for the RPM packages. However, in some cases, you may prefer to use a different algorithm. This use case demonstrates how to initialize a repository with SHA1 as the checksum algorithm. Additionally, using the ‘-S’ argument allows the ‘createrepo’ command to ignore symbolic links during the repository initialization process.
Explanation:
- ‘createrepo’ is the command name.
- ‘-S’ makes the command ignore symbolic links while creating the repository.
- ‘-s sha1’ specifies SHA1 as the checksum algorithm for the RPM packages.
- ‘path/to/directory’ is the path to the directory where you want to create the repository.
Example output:
Spawning worker 0 with 10 pkgs
> Starting repomd creation
... (output of the initialization process)
Conclusion:
The ‘createrepo’ command is a versatile tool for initializing RPM repositories. Whether you need to create a basic repository, exclude specific RPM packages, or specify a different checksum algorithm, the ‘createrepo’ command provides the necessary options. By following the examples provided, you can easily use the ‘createrepo’ command to set up and manage your own RPM repositories.