Skip to main content
This guide explains how end users can enable and use Copr repositories on their systems to install packages.

Quick start

The simplest way to enable a Copr repository:
sudo dnf copr enable user/project
Replace user/project with the owner and project name.

Methods to enable repositories

For modern Fedora, CentOS Stream, RHEL, and other distributions with DNF:
sudo dnf copr enable user/project
Prerequisites:
  • dnf-plugins-core package must be installed
sudo dnf install dnf-plugins-core

Using YUM

For older distributions with YUM:
sudo yum copr enable user/project
Prerequisites:
  • yum-plugin-copr package must be installed
sudo yum install yum-plugin-copr

Manual repository file

Download and install the repository file manually.
1

Download repository file

Visit the project overview page on Copr and find the repository file download link.Or download directly:
sudo wget -O /etc/yum.repos.d/user-project.repo \
  https://copr.fedorainfracloud.org/coprs/user/project/repo/fedora-39/user-project-fedora-39.repo
2

Verify the file

Check the repository configuration:
cat /etc/yum.repos.d/user-project.repo
3

Install packages

sudo dnf install package-name

Repository file format

A typical Copr repository file looks like:
[copr:copr.fedorainfracloud.org:user:project]
name=Copr repo for project owned by user
baseurl=https://download.copr.fedorainfracloud.org/results/user/project/fedora-$releasever-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://download.copr.fedorainfracloud.org/results/user/project/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1

Repository file options

baseurl The repository URL. Uses $releasever (OS version) and $basearch (architecture) variables. gpgcheck=1 Verifies package signatures using the GPG key. gpgkey URL to the GPG public key for signature verification. enabled=1 The repository is enabled by default. skip_if_unavailable=True DNF/YUM won’t fail if the repository is temporarily unavailable.

Group repositories

For projects owned by groups (starting with @):
sudo dnf copr enable @groupname/project
Example:
sudo dnf copr enable @copr/copr-dev

Subproject repositories

Enable subprojects (CoprDirs) with the full subproject name:
sudo dnf copr enable user/project:custom:branch
Examples:
sudo dnf copr enable user/myapp:custom:testing
sudo dnf copr enable user/myapp:pr:42

Multilib repositories

For projects with multilib enabled, dnf copr enable automatically installs the multilib repository file on capable systems.

Manual multilib setup

If you need to manually enable multilib:
  1. Download the multilib repository file from the project page
  2. Or modify the standard repository file to include the i386 repository
Example multilib repository file:
[copr:copr.fedorainfracloud.org:user:project]
name=Copr repo for project owned by user
baseurl=https://download.copr.fedorainfracloud.org/results/user/project/fedora-$releasever-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://download.copr.fedorainfracloud.org/results/user/project/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1

[copr:copr.fedorainfracloud.org:user:project:ml]
name=Copr repo for project owned by user (i386)
baseurl=https://download.copr.fedorainfracloud.org/results/user/project/fedora-$releasever-i386/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://download.copr.fedorainfracloud.org/results/user/project/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1
cost=1100

Installing packages

Once the repository is enabled, install packages normally:
sudo dnf install package-name

Repository priority

Some Copr projects set repository priority to control package preference.

Using cost parameter

If a Copr package has the same version-release as a distribution package, you can prefer the Copr version:
[copr:copr.fedorainfracloud.org:user:project]
name=Copr repo for project owned by user
baseurl=https://download.copr.fedorainfracloud.org/results/user/project/fedora-$releasever-$basearch/
# ... other settings ...
cost=900
Lower cost values have higher priority (default is 1000).
It’s better for package maintainers to bump the release number instead of users modifying repository priority.

Using priority parameter

If the project owner set a repo_priority, it will be included in the repository file:
priority=50
Lower priority values are preferred.

Disabling repositories

Temporarily disable a Copr repository:
sudo dnf copr disable user/project
Or manually edit the repository file:
sudo vim /etc/yum.repos.d/user-project.repo
Change enabled=1 to enabled=0.

Removing repositories

Completely remove a Copr repository:
sudo dnf copr remove user/project
Or delete the repository file manually:
sudo rm /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:user:project.repo

Searching Copr repositories

Search for projects on Copr:
dnf copr search keyword
Example:
dnf copr search neovim

Using different Copr instances

Copr has multiple instances. The default is Fedora Copr, but you can use others:

openEuler Copr

sudo dnf copr enable --hub eur.openeuler.openatom.cn user/project

Custom Copr instance

sudo dnf copr enable --hub https://copr.example.com user/project

Security considerations

Copr repositories are user-maintained and not part of official distribution repositories. Only enable repositories from trusted sources.

Verifying trust

  • Check the project owner’s FAS account
  • Review the project description and homepage
  • Examine build logs and SRPM sources
  • Look for community feedback or known users

GPG signature verification

Copr automatically signs all packages. GPG verification is enabled by default (gpgcheck=1). The GPG key is automatically imported when you enable the repository.

Inspect packages before installation

View package information:
dnf info package-name
Check package vendor:
rpm -qi package-name | grep Vendor
Example output:
Vendor      : Fedora Copr - user username

Troubleshooting

Repository not found

If dnf copr enable fails:
  1. Verify the project name is correct
  2. Check if the project exists on copr.fedorainfracloud.org
  3. Ensure your OS version has a matching chroot

GPG key issues

If you see GPG key errors:
# Import the key manually
sudo rpm --import https://download.copr.fedorainfracloud.org/results/user/project/pubkey.gpg

Repository unavailable

If the repository is temporarily unavailable, skip_if_unavailable=True prevents DNF from failing. You can continue using other repositories.

Conflicting packages

If Copr packages conflict with distribution packages:
# Remove the Copr package
sudo dnf remove package-name

# Reinstall from distribution repos
sudo dnf distro-sync package-name

Repository caching

If you don’t see new packages immediately:
# Clear DNF cache
sudo dnf clean all
sudo dnf makecache

Example workflows

Installing a development version

# Enable the development repository
sudo dnf copr enable user/myapp:custom:devel

# Install the package
sudo dnf install myapp

Testing a pull request build

# Enable the PR subproject
sudo dnf copr enable user/project:pr:123

# Install and test
sudo dnf install package-name

Switching between stable and testing

# Use stable
sudo dnf copr enable user/project
sudo dnf install myapp

# Switch to testing
sudo dnf copr disable user/project
sudo dnf copr enable user/project:custom:testing
sudo dnf upgrade myapp

Repository file locations

Repository files are stored in:
  • Fedora/RHEL/CentOS: /etc/yum.repos.d/
  • Repository files follow the pattern: _copr:copr.fedorainfracloud.org:user:project.repo

Best practices

Disable or remove repositories you’re not actively using to reduce metadata download time:
sudo dnf copr disable user/unused-project
If you rely on specific Copr packages, consider using version locks:
sudo dnf install python3-dnf-plugin-versionlock
sudo dnf versionlock add package-name
Before upgrading packages from Copr repositories, check the changelog:
dnf updateinfo list --repo="copr:*"
Keep track of which Copr repositories you have enabled:
dnf repolist | grep copr

Build docs developers (and LLMs) love