yum2npm

This service transforms metadata from YUM repositories to a format compatible with NPM registries to be used with tools like Renovate.

API

Path Description
/repos Get available repositories
/repos/{repo}/packages Get packages available in a repository
/repos/{repo}/packages/{package} Get available versions of a package in a format like a NPM registry
/repos/{repo}/modules Get modules in a repository
/repos/{repo}/modules/{module}/packages Get packages in a module. The module parameter must be in the format "{name}:{stream}"
/repos/{repo}/modules/{module}/packages/{package} Get available versions of a package in a module in a format like a NPM registry

Repositories

Name URL
docker-stable-centos-8-x86_64 https://download.docker.com/linux/centos/8/x86_64/stable
docker-stable-centos-9-x86_64 https://download.docker.com/linux/centos/9/x86_64/stable
epel-8-everything-x86_64 https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64
epel-8-modular-x86_64 https://dl.fedoraproject.org/pub/epel/8/Modular/x86_64
epel-9-everything-x86_64 https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64
gitlab-runner-el-8-x86_64 https://packages.gitlab.com/runner/gitlab-runner/el/8/x86_64
gitlab-runner-el-9-x86_64 https://packages.gitlab.com/runner/gitlab-runner/el/9/x86_64
nginx-centos-8-x86_64 https://nginx.org/packages/centos/8/x86_64
nginx-centos-9-x86_64 https://nginx.org/packages/centos/9/x86_64
rocky-8-appstream-x86_64 https://dl.rockylinux.org/pub/rocky/8/AppStream/x86_64/os
rocky-8-baseos-x86_64 https://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os
rocky-8-extras-x86_64 https://dl.rockylinux.org/pub/rocky/8/extras/x86_64/os
rocky-9-appstream-x86_64 https://dl.rockylinux.org/pub/rocky/9/AppStream/x86_64/os
rocky-9-baseos-x86_64 https://dl.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os
rocky-9-extras-x86_64 https://dl.rockylinux.org/pub/rocky/9/extras/x86_64/os
rocky-9-crb-x86_64 https://dl.rockylinux.org/pub/rocky/9/CRB/x86_64/os/
ubi-8-appstream-x86_64 https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/x86_64/appstream/os
ubi-8-baseos-x86_64 https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/x86_64/baseos/os
ubi-8-codeready-builder-x86_64 https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/x86_64/codeready-builder/os
ubi-9-appstream-x86_64 https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/x86_64/appstream/os
ubi-9-baseos-x86_64 https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/x86_64/baseos/os
ubi-9-codeready-builder-x86_64 https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/x86_64/codeready-builder/os
fedora-40-x86_64 https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64/os/
fedora-40-x86_64-updates https://dl.fedoraproject.org/pub/fedora/linux/updates/40/Everything/x86_64
fedora-41-x86_64 https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/x86_64/os/
fedora-41-x86_64-updates https://dl.fedoraproject.org/pub/fedora/linux/updates/41/Everything/x86_64/

Usage example

Below is an example on how to use Renovate to update yum packages.

renovate.json

{
    "$schema": "https://docs.renovatebot.com/renovate-schema.json",
    "regexManagers": [
        {
            "fileMatch": ["Dockerfile$"],
            "matchStrings": [
                "# renovate: datasource=yum repo=(?<registryUrl>[^\\s]+)\\s+(?<depName>[^\\s]+)-(?<currentValue>[^\\s-]+-[^\\s-]+)"
            ],
            "datasourceTemplate": "npm",
            "versioningTemplate": "loose",
            "registryUrlTemplate": "https://yum2npm.io/repos/{{replace '/' '/modules/' registryUrl}}/packages"
        }
    ]
}

Dockerfile

FROM rockylinux:9-minimal

RUN microdnf install -y \
    # renovate: datasource=yum repo=rocky-9-appstream-x86_64/nodejs:18
    nodejs-18.12.1-1.module+el9.1.0+13234+90e40c60 \
    # renovate: datasource=yum repo=rocky-9-appstream-x86_64
    java-17-openjdk-headless-17.0.5.0.8-2.el9_0