RPM and Debian file list metadata

This feature is only available starting with version 2.0.5


Starting with version 2.0.5, there is a new setting available in packagecloud:enterprise that allows you disable file list metadata permanently per repository:

It is important to note that this is a permanent change, once file list metadata is disabled for a repository, it cannot be enabled again.

This setting is a superset of the previously available setting ‘Disable file list metadata’, which only controls the generation of optional file list indexes for that repository, and not whether files are recorded. As you can imagine, permanently disabling file list metadata, also disables the generation of file list metadata.

What is file list metadata?

By default, any time an RPM or Debian package is uploaded, we create rows in the database for every file contained in that package. This information is then used to generate optional repository indexes that allows RPM and Debian package managers to “query” a repository for which package contains a particular file. A list of these files are also shown the web interface for package pages.

What happens if I disable file list metadata?

When you check the box ‘Permanently disable file list metadata’ and save your repository settings, a background job is kicked off that deletes all of the unneeded files for that repository from the RPM and Debian files tables. Additionally, any new uploads to this repository only write the minimum necessary rows needed to successfully server packages to package managers. (RPM packages require certain files rows in order for RPM package managers to install packages).

Why would I want to disable file list metadata?

Certain types of packages, like omnibus packages, contain hundreds of thousands of files, which over time can cause your database to balloon in size, slowing all operations and making your backups taking longer than they need to. By disabling file list metadata permanently, you not only clear the space taken up by all those files, you prevent new ones from being written, which will save space and also speed up package uploads.