Locate Centos Dependencies - centos

Question:
When installing a package from the yum repository:
example
yum install numpy *opencv
it prints out a list of dependencies it has installed.
Where can I find those dependencies?

The dependencies are stored within the RPM file itself.
If you have an RPM downloaded localy, you can look at it's dependencies directly:
rpm -qp --require /path/to/rpm
If you don't have the RPM locally, you can use repoquery:
repoquery --requires name-of-package
For example:
$ rpm -qp --requires python2-numpy-1.11.2-1.fc25.x86_64.rpm
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.10)(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libgcc_s.so.1()(64bit)
libgfortran.so.3()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpython2.7.so.1.0()(64bit)
libquadmath.so.0()(64bit)
libsatlas.so.3()(64bit)
libtatlas.so.3()(64bit)
python(abi) = 2.7
python-nose
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rtld(GNU_HASH)
Note that dependencies can be one of several different forms.
The dependencies include:
An RPM (such as python-nose in the above example)
A file (not shown above, but appears as a dependency on /bin/bash, for example)
A library (such as libpython2.7.so.1.0()(64bit))
A virtual provides (such as python(abi) = 2.7)

Related

How to determine which version of a yum library is compatible with a specific version of a dependency that is already installed?

I am attempting to install the libcap-devel library via yum, and it looks like my company's yum repo only has libcap-devel-2.22-8.el7.x86_64, which requires glibc-common-2.17-105.el7.
Unfortunately, the glibc-common installed on my VM is glibc-common-2.17-222.el7.x86_64, and the installation fails.
I want to figure out how to determine which version of libcap-devel is compatible with glibc-common-2.17-222.el7.x86_64, and then ask the sysadmins to add this verion of libcap-devel to the yum repo (which I am not authorized to do) so that I can install it successfully. How do I do this?
Here is the output of yum install libcap-devel
Resolving Dependencies
--> Running transaction check
---> Package libcap-devel.x86_64 0:2.22-8.el7 will be installed
--> Processing Dependency: libcap = 2.22-8.el7 for package: libcap-devel-2.22-8.el7.x86_64
--> Running transaction check
---> Package libcap.i686 0:2.22-8.el7 will be installed
--> Processing Dependency: libattr.so.1 for package: libcap-2.22-8.el7.i686
--> Processing Dependency: libattr.so.1(ATTR_1.0) for package: libcap-2.22-8.el7.i686
--> Processing Dependency: libc.so.6(GLIBC_2.8) for package: libcap-2.22-8.el7.i686
--> Running transaction check
---> Package glibc.i686 0:2.17-105.el7 will be installed
--> Processing Dependency: glibc-common = 2.17-105.el7 for package: glibc-2.17-105.el7.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.17-105.el7.i686
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.17-105.el7.i686
---> Package libattr.i686 0:2.4.46-12.el7 will be installed
--> Running transaction check
---> Package glibc.i686 0:2.17-105.el7 will be installed
--> Processing Dependency: glibc-common = 2.17-105.el7 for package: glibc-2.17-105.el7.i686
---> Package nss-softokn-freebl.i686 0:3.16.2.3-13.el7_1 will be installed
--> Finished Dependency Resolution
You could try using --skip-broken to work around the problem
Error: Package: glibc-2.17-105.el7.i686 (redhat_base)
Requires: glibc-common = 2.17-105.el7
Installed: glibc-common-2.17-222.el7.x86_64 (#anaconda/7.5)
glibc-common = 2.17-222.el7
Available: glibc-common-2.17-105.el7.x86_64 (redhat_base)
glibc-common = 2.17-105.el7
Here is the output of yum --showduplicates list libcap-devel, which shows that the yum repo only has one version available:
========================== N/S matched: libcap-devel ===========================
libcap-devel-2.22-8.el7.i686 : Development files for libcap
libcap-devel-2.22-8.el7.x86_64 : Development files for libcap
The output of yum --showduplicates list libcap shows:
Installed Packages
libcap.x86_64 2.22-9.el7 #anaconda/7.5
Available Packages
libcap.i686 2.22-8.el7 redhat_base
libcap.x86_64 2.22-8.el7 redhat_base
The output of yum install -y libcap-2.22-8.el7.x86_64 shows:
Package matching libcap-2.22-8.el7.x86_64 already installed. Checking for update.
Nothing to do
After this, running yum install -y libcap-devel-2.22-8.el7.x86_64 still attempts to download the 32 bit version:
...
--> Processing Dependency: libcap = 2.22-8.el7 for package: libcap-devel-2.22-8.el7.x86_64
--> Running transaction check
---> Package libcap.i686 0:2.22-8.el7 will be installed
...
The output of yum --showduplicates list glibc shows glibc.i686 0:2.17-222.el7 is not available, only 2.17-105.e17 is.
Installed Packages
glibc.x86_64 2.17-222.el7 #anaconda/7.5
Available Packages
glibc.i686 2.17-105.el7 redhat_base
glibc.x86_64 2.17-105.el7 redhat_base
Any variation of this fails:
yum downgrade -y glibc-2.17-105.el7
yum downgrade -y glibc-2.17-105.el7 glibc-common-2.17-105.el7
yum downgrade -y glibc-2.17-105.el7 glibc-common-2.17-105.el7 glibc-devel-2.17-105.el7
yum downgrade -y glibc-headers-2.17-105.el7 glibc-2.17-105.el7 glibc-common-2.17-105.el7 glibc-devel-2.17-105.el7
For example the first command complains about glibc-common and glibc-devel, adding these in results in a complaint about glibc-headers, and the fourth line actually segfaults.
welcome to the jungle of library/rpm dependencies :)
It takes some time and patience to read, and then some skill to read the yum output. Sometimes you'll even have to run some intermediate commands to get the exact answer, but let's see what we can already see here:
Processing Dependency: libcap = 2.22-8.el7 for package: libcap-devel-2.22-8.el7.x86_64
You try to install libcap-devel. yum says he will also need to install libcap with the exact same version number. No surprises so far.
Package libcap.i686 0:2.22-8.el7 will be installed
This is probably already something you do not want. You seem to be on a 64 bit system; do you really want the i686 version of this library installed? The fact is libcap-devel does not say it requires the x86_64 version; it requires any of the two. Preferably yum will install the x86_64 version, but if that is impossible the i686 version will do.
In this case I would suggest you to first try installing libcap-2.22-8.el7.x86_64 and see why yum won't install that one.
But in any case let's just read on, this will give you also information on how to solve this problem for the x86_64 package.
--> Processing Dependency: libc.so.6(GLIBC_2.8) for package: libcap-2.22-8.el7.i686
--> Running transaction check
---> Package glibc.i686 0:2.17-105.el7 will be installed
so here yum chose to install glibc.i686 0:2.17-105.el7 , probably to satisfy the libc.so.6(GLIBC_2.8)
now this is where the conflict occurs: glibc.i686 0:2.17-105.el7 requires glibc-common with the exact same version number, but you already have a more recent version of glibc-common on your machine.
Possible solutions
There are multiple solutions here, a non-exhaustive list in order of my preference:
investigate why libcap-2.22-8.el7.x86_64 can't be installed.
make sure glibc.i686 0:2.17-222.el7 is available in your yum repositories (or installed on your system)
downgrade you glibc-common (and probably also glibc x86_64 version) to version 0:2.17-105.el7

unable to install CPAN using Yum on CentOS 7.3

while trying to install "CPAN" using Yum command [CentOS 7.3(64-bit)] I am getting below error:
---> Package glibc.i686 0:2.17-157.el7 will be installed
--> Processing Dependency: glibc-common = 2.17-157.el7 for package: glibc-2.17-157.el7.i686
---> Package kernel-headers.x86_64 0:3.10.0-514.el7 will be installed
---> Package nss-softokn-freebl.i686 0:3.16.2.3-14.4.el7 will be installed
--> Finished Dependency Resolution
Error: Package: glibc-2.17-157.el7.i686 (cent-7_1-os)
Requires: glibc-common = 2.17-157.el7
Installed: glibc-common-2.17-157.el7_3.4.x86_64 (#updates_latest)
glibc-common = 2.17-157.el7_3.4
Available: glibc-common-2.17-157.el7.x86_64 (cent-7_1-os)
glibc-common = 2.17-157.el7
Now on other hand when in run:
yum install glibc-2.17-157.el7.i686
It shows since I have already updated package:
Package matching glibc-2.17-157.el7.x86_64 already installed. Checking for update
how to work around this? for many of the Perl Modules is throws same error and requires glibc-2.17-157.el7.i686.
Below are list of some modules which throws the error (though there are many other packages which are throwing same error):
yum install perl-ExtUtils-Embed
yum install perl-ExtUtils-ParseXS
yum install perl-ExtUtils-Install
I have also tries to install using source packages, but no success :(
Please guide me if I am asking at wrong platform (No down votes plz)
It worked after changing the yum repo. I have edited the repository:
vim /etc/yum.repos.d/CentOS-Base.repo
And added below lines:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Previously it was :
[cent-7_1-os]
name=CentOS-7_1 - os
#baseurl=http://mhxrpmsrv001sas.dsone.3ds.com/rpms/cent/7_1/$basearch/os/latest/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=1
I think your glibc-common installed is of higher version than required.
first check if there is a version to downgrade to, by
yum list --showduplicates glibc
downgrade the glibc* by
yum downgrade glibc glibc-common glibc-devel glibc-headers
install gcc again
yum install gcc

How to install perl module on RHEL?

I need to install perl-Expect, so, I executed:
# yum install -y perl-Expect
Error: Package: perl-Expect-1.21-14.el7.noarch (epel)
Requires: perl(IO::Pty) >= 1.03
Error: Package: perl-Expect-1.21-14.el7.noarch (epel)
Requires: perl(IO::Tty)
Okay, I need to install perl(IO::Pty)
I launched
# yum install -y "perl(IO::Pty)"
No package perl(IO::Pty) available.
Error: Nothing to do
So, how to install all required perl modules to the RHEL?
The perl-IO-Tty package is provided by the rhel-7-server-optional-rpms
repository. It looks like the Optional repository is not enabled on your system. This Stack Overflow answer explains how to do so:
subscription-manager repos --enable rhel-7-server-optional-rpms
You could try searching for the each piece of the package with: sudo yum search perl | grep IO | grep Pty
return: perl-IO-Pty-Easy.noarch : Easy interface to IO::Pty
But, I used your code, minus -y in CentOS 7, and found the following:
$ sudo yum install "perl(IO::Pty)"
Loaded plugins: fastestmirror, versionlock
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package perl-IO-Tty.x86_64 0:1.10-11.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================================================================
Installing:
perl-IO-Tty x86_64 1.10-11.el7 CentOS-Cache 42 k
Transaction Summary
==============================================================================================================================================================================================
Install 1 Package
Total download size: 42 k
Installed size: 76 k
Is this ok [y/d/N]:
Make sure you have access to the default repositories and they are enabled...
Hope this helps,
Peter

Cloudera Manager installation issue in RHEL 5.7

We are trying to install CDH 4.4 on RHEL 5.7. But the installation was aborted because of Postgres DB installation issues.
Logs from /var/log/cloudera-manager-installer/4.install-cloudera-manager-server-db.log
Loaded plugins: product-id, security, subscription-manager Updating Red Hat repositories. Setting up Install Process Resolving Dependencies
--> Running transaction check
---> Package cloudera-manager-server-db.x86_64 0:4.7.3-1.cm473.p0.163.el5 set to be updated
--> Processing Dependency: postgresql-server >= 8.0 for package: cloudera-manager-server-db
--> Finished Dependency Resolution cloudera-manager-server-db-4.7.3-1.cm473.p0.163.el5.x86_64 from cloudera-manager has depsolving problems
--> Missing Dependency: postgresql-server >= 8.0 is needed by package cloudera-manager-server-db-4.7.3-1.cm473.p0.163.el5.x86_64 (cloudera-manager) Error: Missing Dependency: postgresql-server >= 8.0 is needed by package cloudera-manager-server-db-4.7.3-1.cm473.p0.163.el5.x86_64 (cloudera-manager) You could try using --skip-broken to work around the problem You could try running: package-cleanup --problems package-cleanup --dupes rpm -Va --nofiles --nodigest The program package-cleanup is found in the yum-utils package.
Please let me know how to proceed further.
Configure the YUM in your local or use any public Repo to install the dependencies.

mytop install and term::readkey

[host]# rpm -Uvh mytop-1.6-4.el5.noarch.rpm
error: Failed dependencies:
perl(Term::ReadKey) >= 2.1 is needed by mytop-1.6-4.el5.noarch
[host]# ./perlmodver Term::ReadKey
Term::ReadKey: 2.30
Why is rpm failing to install mytop when this perl module version is greater than 2.1?
Because you installed Term::ReadKey from CPAN, and those files are not registered in the RPM database.
Remedy, install the perl-TermReadKey package:
# yum install perl-TermReadKey
Let the package manager tools resolve the RPM dependencies for you: http://www.centos.org/docs/5/html/yum/