Linux 安装 libX11-devel

Linux Installation libX11-devel

我正在尝试在 RedHat 7 中构建 QT4(使用升级的 gcc 编译器从 Redhat 5 移植到 7),但我收到一条错误消息,提示找不到 X11/Xlib.h。无论如何,在做了一些研究之后,大多数人说安装 libX11-devel 以获得那些 x11 库。因为我使用的是离线机器,所以我不能执行 "apt-get" 类型的命令并且必须手动安装 RPM。所以,我转到我的 RH-7 安装 DVD 并获得 "libX11-devel-1.6.3-3.el7.x86-64"(我有 64 位 OS)并尝试使用 "yum install libX11-devel-1.6.3-3.el7.x86_64" 进行安装,但出现依赖项错误。它在说

...Requires: pkgconfig(kbproto)
...Required: pkgconfig(xcb)
...Requires: pkgconfig(xproto)
...Requires: pkgconfig(xcb) >= 1.1.92

所以,这是我的问题。

1) 当它说 "pkgconfig(kbproto)" 时,是说找到 "kbproto....RPM" 并执行 "yum install"。在我的 DVD 中,我只有 "xorg-x11-proto-devel-7.7.13.el7.noarch.rpm"。我是否必须以某种方式找到 "xorg-x11-proto......x86_64.rpm" 因为它是 64 位机器?

2) "yum install"pkgconfig "install"有区别吗? Linux 中是否还有其他安装变体?

3) 对于离线机器,有没有办法一次性获取所有依赖项并安装所有内容?

4) 为什么说 "xcb" 需要两次。如果我只得到 1.1.92 以上的 xcb...rpm 版本,我可以只安装一次吗?

在真正回答问题之前,我会建议您看看是否可以获得最新版本的软件包。安装 DVD 上的软件包可能确实已过时并且包含已知的漏洞和其他错误。您可以使用 yumdownloader - 在在线环境中 - 将最新版本下载到单独的 DVD 上并将其用作安装源吗?有关详细信息,请参阅 https://access.redhat.com/solutions/10154

自己回答问题:

  1. Requires: foo 可以引用包 foo 或“功能”foopkgconfig(kbproto) 是一个“功能”(或虚拟要求)。您可以使用 yum/rpm 来查看提供此功能的内容。例如,在我的 Fedora box 上,rpm -q --provides xorg-x11-proto-devel 显示该软件包确实提供了 pkgconfig(kbproto).

    至于x86_64 vs noarch,无所谓。 noarch 软件包无处不在。其他包仅限于​​平台。所以 x86_64 只适用于 intel/amd x86 64 位机器。安装 noarch 应该没问题。但是,如果您只有一个 i686 包,那是不够的。您必须找到 x86_64noarch 包。

  2. 是的,yumpkg-config有很大的不同。他们做完全不同的事情。一个是安装RPM包的系统工具。另一个是供开发人员使用正确的 headers 和编译器标志的工具。如果您担心 finding/installing RPM,请不要直接使用 pkg-config

  3. 您是否可以访问可以访问 RHEL 7 yum 存储库的在线计算机?在那台机器上,做这样的事情:

    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

然后 copy/install 没有互联网接入的机器上的 RPM。

  1. 它可能会打印出 xcb 两次,因为这是两个不同的要求。如果您安装 xcb 的任何版本,将满足未版本化的要求。只有安装 1.1.92 才能满足版本要求。如果您安装1.1.92,它将满足这两个要求。

1。 您必须解决对正在构建包的系统的依赖性。这意味着您需要安装这些依赖项,包括 libX11-devel。为此,请将 RPM 从 EL7 存储库手动下载到本地磁盘,然后 运行 this:

$ mkdir -p /tmp/libX11_dep_rpms && cd /tmp/libX11_dep_rpms

# Download all dependencies from here. All your packages should be available here:
# http://mirror.centos.org/centos-7/7/os/x86_64/Packages/
# Then install
$ yum localinstall *.rpm

# After this you should be able to build your qt4 package, provided all dependencies are resolved. Otherwise, repeat the procedure for all dependencies
# If you can't download packages, then you need to create a FULL DVD ISO that will contain all packages.

2。 pkgconfig 确保需求来自提供特定版本库的特定构建。 Here 是一些细节。

3。 从 EL7 获取 Everything ISO

4。 这与 pkgconfig 和库版本有关。