kubernetes/kops · error
package repair not supported on RHEL/CentOS
Error message
package repair not supported on RHEL/CentOS
What it means
RenderLocal in the nodeup Package task attempts to repair a broken dpkg state by running `dpkg --configure -a` on Debian-family hosts. When the host is RHEL/CentOS-family, no equivalent repair path is implemented, so the task returns this error instead of proceeding with undefined behavior. It is an explicit guard against an unsupported OS family.
Source
Thrown at upup/pkg/fi/nodeup/nodetasks/package.go:401
return fmt.Errorf("error installing package %q: %v: %s", e.Name, err, string(output))
}
// Successful package install, updating the last updated time.
packageManagerLastUpdated = time.Now()
} else {
if changes.Healthy != nil {
if d.IsDebianFamily() {
args := []string{"dpkg", "--configure", "-a"}
klog.Infof("package is not healthy; running command %s", args)
cmd := exec.Command(args[0], args[1:]...)
output, err := cmd.CombinedOutput()
if err != nil {
return fmt.Errorf("error running `dpkg --configure -a`: %v: %s", err, string(output))
}
changes.Healthy = nil
} else if d.IsRHELFamily() {
// Not set on TagOSFamilyRHEL, we can't currently reach here anyway...
return fmt.Errorf("package repair not supported on RHEL/CentOS")
} else {
return fmt.Errorf("unsupported package system")
}
}
if !reflect.DeepEqual(changes, &Package{}) {
klog.Warningf("cannot apply package changes for %q: %+v", e.Name, changes)
}
}
return nil
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Use a Debian-family (Ubuntu/Debian) AMI when your cluster config defines Package tasks that may need repair.
- Ensure the Package task reaches a healthy state on RHEL so the repair branch is never entered (pre-install packages via the image, or fix yum repo issues).
- If RHEL support is needed, add a repair path (e.g. `rpm --rebuilddb` / dnf equivalents) gated on TagOSFamilyRHEL in package.go.
Example fix
// before (cluster.yaml) kubernetesVersion: v1.28.3 machineType: m5.large # RHEL AMI // after: provision from Ubuntu image or avoid Package repair on RHEL ami: ami-0ubuntu...
Defensive patterns
Strategy: validation
Validate before calling
if isRHELFamily() && taskRequiresPackageRepair() {
return errors.New("precondition failed: package repair unsupported on RHEL/CentOS")
} Prevention
- Use Debian-family images when relying on kOps-managed Package tasks
- Ensure packages are pre-baked into RHEL AMIs so the repair path never triggers
- Keep package repos healthy on RHEL nodes so Healthy state is reached
When it happens
Trigger: A Package task's changes require repair (Healthy was set and repair path entered) while nodeup runs on an RHEL-family host where the package manager is not TagOSFamilyRHEL-tagged with a repair implementation.
Common situations: Running nodeup on an AMI built from RHEL/CentOS/Rocky/Alma and having a package task drift into an unhealthy/repair state; mixing Debian-based and RHEL-based machine images in the same cluster.
Related errors
- building nodeConfig for instanceGroup: %w
- marshalling nodeupConfig: %w
- unsupported cloud provider for authenticator %q
- parsing path for kops-channels manifest %s: %w
- reading kops-channels manifest %s: %w
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/edf588d435b0220a.
Report an issue: GitHub.