COPR third-party repositories: enabling them and what risk you take on
COPR (Cool Other Package Repo) is where Fedora community members build their own RPMs. It gets you packages that are not in the official repositories, at the price of those packages carrying no Fedora quality or security endorsement.
Below is the measured flow, including the disclaimer people tend to skip.
First, is the plugin present
Section titled “First, is the plugin present”dnf copr comes from dnf5-plugins:
rpm -q dnf5-pluginsdnf copr --helpCommands: list list Copr repositories enable download the repository info from a Copr server and install it as a /etc/yum.repos.d/*.repo file disable disable specified Copr repository (if exists), keep /etc/yum.repos.d/*.repo file - just mark enabled=0 remove remove specified Copr repository from the system (removes the /etc/yum.repos.d/*.repo file) debug print useful info about the system, useful for debuggingThe four verbs are distinct; a table compares them again below.
Enabling a COPR
Section titled “Enabling a COPR”sudo dnf copr enable garrus/clang-opt fedora-45-x86_64The second argument is the chroot, format NAME-RELEASE-ARCH. Omit it and it is detected.
Enabling prints this warning (verbatim):
Enabling a Copr repository. Please note that this repository is not partof the main distribution, and quality may vary.
The Fedora Project does not exercise any power over the contents ofthis repository beyond the rules outlined in the Copr FAQ at<https://docs.copr.fedorainfracloud.org/user_documentation.html#what-i-can-build-in-copr>,and packages are not held to any quality or security level.
Please do not file bug reports about these packages in FedoraBugzilla. In case of problems, contact the owner of this repository.Worth reading line by line:
| Text | Meaning |
|---|---|
not part of the main distribution | outside the distribution |
quality may vary | quality is not guaranteed |
not held to any quality or security level | no quality or security endorsement at all |
do not file bug reports ... in Fedora Bugzilla | problems go to the repo owner, not Fedora |
What it generated
Section titled “What it generated”ls /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:garrus:clang-opt.repoThe filename encodes the repository identity. Contents:
[copr:copr.fedorainfracloud.org:garrus:clang-opt]name=Copr repo for clang-opt owned by garrusbaseurl=https://download.copr.fedorainfracloud.org/results/garrus/clang-opt/fedora-45-x86_64/type=rpm-mdskip_if_unavailable=Truegpgcheck=1gpgkey=https://download.copr.fedorainfracloud.org/results/garrus/clang-opt/pubkey.gpgrepo_gpgcheck=0enabled=1enabled_metadata=1Three things stand out:
gpgcheck=1butrepo_gpgcheck=0: packages are signature-checked (against this COPR’s key), metadata is not;gpgkeypoints at the COPR’s own key, not the Fedora keys already on your system;baseurlembedsfedora-45-x86_64, so the chroot is fixed — after a release upgrade you must re-enable.
The four actions compared
Section titled “The four actions compared”| Command | .repo file | enabled= | Uninstalls packages? |
|---|---|---|---|
enable | created | 1 | no |
disable | kept | changed to 0 | no |
remove | deleted | — | no |
dnf remove <pkg> | unchanged | unchanged | yes |
Measured disable:
sudo dnf copr disable garrus/clang-optCopr repository 'copr.fedorainfracloud.org/garrus/clang-opt' in '/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:garrus:clang-opt.repo' disabled.The file stays and enabled becomes 0. To remove it entirely:
sudo dnf copr remove garrus/clang-optRepo file /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:garrus:clang-opt.repo successfully removedremove does not uninstall packages that came from the repo. That takes a separate dnf remove, which can pull in a chain if other packages depend on it.
When the chroot is missing
Section titled “When the chroot is missing”The most common error:
sudo dnf copr enable garrus/clang-opt fedora-44-x86_64Chroot not found in the given Copr project (fedora-44-x86_64).You can choose one of the available chroots explicitly: fedora-45-i386 fedora-45-x86_64The good news is that it lists the available chroots — just copy one. Much friendlier than “project does not exist”.
Should you use it
Section titled “Should you use it”| Situation | Advice |
|---|---|
| small desktop tools, editor plugins | fine, the risk is acceptable |
| runtimes or databases on production servers | no — use official repositories or your own |
| packages you need to stay stable | no; COPR builds can disappear |
| trying something on a test machine | yes; copr remove afterwards |
The test is not “is this package good” but can you handle it when it breaks. A COPR is owned by an individual: the project can be abandoned, the builds deleted.
Writing the .repo by hand
Section titled “Writing the .repo by hand”On systems without dnf5-plugins, the file above can be written manually:
sudo tee /etc/yum.repos.d/copr-clang-opt.repo >/dev/null <<'EOF'[copr:copr.fedorainfracloud.org:garrus:clang-opt]name=Copr repo for clang-opt owned by garrusbaseurl=https://download.copr.fedorainfracloud.org/results/garrus/clang-opt/fedora-45-x86_64/type=rpm-mdskip_if_unavailable=Truegpgcheck=1gpgkey=https://download.copr.fedorainfracloud.org/results/garrus/clang-opt/pubkey.gpgrepo_gpgcheck=0enabled=1EOFsudo dnf makecacheChecking the current state
Section titled “Checking the current state”dnf copr listcopr.fedorainfracloud.org/garrus/clang-optTo find where a package came from:
dnf repoquery --installed --qf '%{name} %{from_repo}\n' | grep -i coprRelated pages
Section titled “Related pages”- Fedora repositories and dnf5 — repository configuration and third-party trade-offs
- Repository configuration moves to /usr — the F45 path change
- Signature enforcement — COPR’s
gpgcheckkey is not Fedora’s - Module streams (retired) — the historical alternative for “unofficial versions”
- Error lookup —
No match for argument, repository errors - Official: COPR documentation