46

I'm trying to install winswitch on CentOs 6. It requires nxagent. But in centos, the package name is nx. Is there a way to tell yum to skip checking the nxagent dependency (I installed nx already)? Specifying --skip-broken skips the whole thing.

6 Answers 6

16

Generally yum doesn't have options to ignore a single package from the dependencies. Option --skip-broken ignores all unresolved dependences.

You can try yum --exclude=packagename but it excludes a specific package by name or glob from updates on all repositories, not from dependencies.

4
  • 2
    yum --exclude doesn't work on dependencies Feb 18, 2015 at 0:14
  • 3
    @DrStrangepork yes I know I wrote that in my answer
    – B14D3
    Feb 18, 2015 at 6:38
  • 10
    Neither --exclude nor --skip-broken helps bypass one or more dependencies in the way that rpm --nodeps does.
    – Asclepius
    Apr 1, 2015 at 20:58
  • 6
    Go to the second answer. Mar 15, 2018 at 5:41
71

The rpm command has the --nodeps option that you can use. A challenge is that rpm by itself is not aware of yum repositories. The following command will install or update the package, ignoring dependencies, but automatically looking up the download URL from your repositories with repoquery which is in package yum-utils.

rpm -Uvh --nodeps $(repoquery --location winswitch)

After that, a regular yum update will likely succeed without dependency errors.

1
  • $(repoquery --location winswitch) did not work for me. However, one can download .rpm package via "yumdownloader --destdir=. package-name" . "rpm -U" means upgrade. If the package was not installed, one can use "rpm -i" for that. yumdownloader is from yum-utils (dnf-utils in my case). Nov 25, 2018 at 11:47
5

It sounds like you're trying to install package that has not been designed for the OS, i.e. if it was designed for CentOS it would require nx correctly.

Another workaround for the problem is to create and install a small shim RPM package that contains no files, but in the spec file contains the following lines (amongst others):

requires: nx
provides: nxagent

That way the dependency should be satisfied however it may be expecting files to be in a location that differs between the nxagent package it expects to have installed and the nx package that CentOS provides.

1
  • Would like to see a more complete solution here. How do you create and install a small shim RPM package?
    – utdrmac
    May 31 at 19:07
1

you can also use rpmrebuild to change the rpm metadata to point at the new package name. this will then be "your" package, but is cleaner as far as the rpm dependencies go. There's no disadvantage over using --nodeps I think.

1

This one-liner example does it ( tigervnc-server is the package being installed )

rpm -ivh --nodeps ` yumdownloader tigervnc-server | perl -ne 'print $2 if(/^(\[.+\]\s*|)(.*?\.rpm)[\s:]/)'`
1

Use yumdownloader to automatically download the package for you, then use rpm -i and --nodeps to install the package without dependency checks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.