I am trying to build QT4 (porting from Redhat 5 to 7 with an upgraded gcc compiler) in RedHat 7 and I was getting an error saying X11/Xlib.h
can’t be found. Anyways, after doing some research most people said to install libX11-devel
to get those x11 libraries. Since I am using an offline machine I can’t do “apt-get” type commands and have to manually install RPMs. So, I went to my RH-7 installation DVD and got "libX11-devel-1.6.3-3.el7.x86-64"
(I have 64 bit OS) and tried to install using "yum install libX11-devel-1.6.3-3.el7.x86_64"
and I am getting dependencies errors. It’s saying
...Requires: pkgconfig(kbproto) ...Required: pkgconfig(xcb) ...Requires: pkgconfig(xproto) ...Requires: pkgconfig(xcb) >= 1.1.92
So, here are my questions.
1) when it says "pkgconfig(kbproto)"
, is it saying find the "kbproto....RPM"
and do a "yum install"
. In my dvd I only have "xorg-x11-proto-devel-7.7.13.el7.noarch.rpm"
. Do I have to somehow find "xorg-x11-proto......x86_64.rpm"
since it’s a 64 bit machine?
2) Is there a difference between "yum install"
and pkgconfig "install"
? Are there any other installation variants in Linux?
3)For an offline machine, Is there anyway I can get all the dependencies and install everything at once ?
4) Why is it saying "xcb"
requires twice. If I just get a xcb...rpm
version above 1.1.92 can I just install it once?
Advertisement
Answer
Before actually answering the questions, I am going to suggest to see if you can get the latest version of the packages. The packages on the installation DVD may be really out of date and contain known vulernabilities, and other bugs. Can you use yumdownloader
– in an online environment – to download the latest version onto a separate DVD and use that as the installation source? See https://access.redhat.com/solutions/10154 for more information.
To answer the questions themselves:
Requires: foo
can refer to a packagefoo
or a “feature”foo
.pkgconfig(kbproto)
is a “feature” (or virtual requires). You can useyum
/rpm
to see what provides this. On my Fedora box, for example,rpm -q --provides xorg-x11-proto-devel
shows that this package indeed providespkgconfig(kbproto)
.As for
x86_64
vsnoarch
, it doesn’t matter.noarch
packages work everywhere. Other packages are restricted to the platform. Sox86_64
only works on intel/amd x86 64-bit machines. Installingnoarch
should be fine in your case. If you only had ai686
package, though, that wouldn’t be sufficient. You would have to find ax86_64
ornoarch
package.Yes, there’s a big difference between
yum
andpkg-config
. They do completely different things. One is a system tool for installing RPM packages. The other is a tool for developers for using the right headers and compiler flags. If your concern is finding/installing RPMs, do not usepkg-config
directly.Do you have access to an online machine that can access the RHEL 7 yum repositories? On that machine, do something like this:
mkdir rhel7-packages cd rhel7-packages yum provides '*/X11/Xlib.h' # make a note of the package that provides this file. it's libX11-devel on Fedora here yumdownloader --resolve libX11-devel # download libX11-devel and all dependencies not installed on the system
Then copy/install the RPMs on the machine without internet access.
- It’s probably printing out
xcb
twice because it’s two different requirements. The unversioned requirement will be satisfied if you install any verison of xcb. The versioned requirement will only be satisfied if you install 1.1.92. If you install 1.1.92, it will satisified both the requirements.