Issue
/scripts/update-packages (or a plain yum update) fails on CloudLinux 7 with unresolved dependency errors for CloudLinux packages:
Error: Package: 1:ea-apache24-mod_lsapi-1.1-96.el7.cloudlinux.x86_64 (cl-ea4)
Requires: criu-lve >= 3.13-10
Installed: criu-lve-3.13-9.el7.x86_64 (@cloudlinux-x86_64-server-7)
criu-lve = 3.13-9.el7
Error: Package: 1:ea-apache24-mod_lsapi-1.1-96.el7.cloudlinux.x86_64 (cl-ea4)
Requires: liblsapi >= 1:1.1-96
Installed: 1:liblsapi-1.1-94.el7.cloudlinux.x86_64 (@cloudlinux-x86_64-server-7)
liblsapi = 1:1.1-94.el7.cloudlinux
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
(XID xxxxxx) "/usr/bin/yum" reported error code "1" when it ended:On some servers, the same failure also reports a cagefs dependency:
Error: Package: cagefs-7.x.x-x.el7.cloudlinux.x86_64 (cloudlinux-rollout-8)
Requires: cloudlinux-venv >= 1.0.11
Installed: cloudlinux-venv-1.0.x-x.el7.x86_64 (@cloudlinux-rollout-3)
cloudlinux-venv = 1.0.xEnabling the testing repository as a workaround fails as well, because the repository is not defined on the server:
# yum update ea-apache24-mod_lsapi --enablerepo=cloudlinux-updates-testing Loaded plugins: fastestmirror, universal-hooks Error getting repository data for cloudlinux-updates-testing, repository not found
Environment
- CloudLinux OS 7
- cPanel
- EasyApache 4 (
ea-apache24-mod_lsapi) - CageFS
-
yumpackage manager
Solution
- Check which CloudLinux repositories yum currently sees:
yum repolist all | grep -i cloudlinux
(If cloudlinux-updates-testing and the cloudlinux-$basearch-server-$releasever repositories are missing, the repository file is incomplete.)
- Inspect the CloudLinux repository file and look for an
.rpmnewcopy next to it:
ls -l /etc/yum.repos.d/cloudlinux.repo* cat /etc/yum.repos.d/cloudlinux.repo
(A broken file contains only [base], [updates] and [extras] sections pointing at CentOS 7 mirrors, and is a few hundred bytes in size. The valid file provided by the cloudlinux-release package is around 3 KB and contains the [cloudlinux-$basearch-server-$releasever], [cloudlinux-base], [cloudlinux-updates] and [cloudlinux-updates-testing] sections.)
- Back up the current file and put the packaged version in its place:
mv /etc/yum.repos.d/cloudlinux.repo{,_backup}
mv /etc/yum.repos.d/cloudlinux.repo.rpmnew /etc/yum.repos.d/cloudlinux.repo- Clear the yum metadata cache:
yum clean all
- Run the update again:
yum update
(All dependencies now resolve and the transaction summary lists the pending upgrades.)
- If no
.rpmnewfile exists, reinstall the release package to restore the repository definitions, then repeat steps four and five:
yum reinstall cloudlinux-release
Note: apply the same steps on every affected server. The condition is per server, so a fleet updated from the same template can hit it on several machines at once.
Cause
The CloudLinux repository definitions live in /etc/yum.repos.d/cloudlinux.repo, which is shipped by the cloudlinux-release package. When that file has been modified locally, RPM does not overwrite it during an update — it writes the new definitions alongside it as /etc/yum.repos.d/cloudlinux.repo.rpmnew and leaves the modified file in place.
On the affected servers the in-place file had been replaced with a minimal CentOS 7 mirror configuration, so the CloudLinux repositories were never enabled. Yum could still see the newer ea-apache24-mod_lsapi and cagefs builds through the cPanel cl-ea4 and rollout repositories, but not the CloudLinux packages they depend on (criu-lve, liblsapi, cloudlinux-venv), which produced the dependency errors. The same missing configuration is why --enablerepo=cloudlinux-updates-testing returned "repository not found" — the repository is not merely disabled, it is not defined at all.
Comments
0 comments
Please sign in to leave a comment.