与 RedHat/CentOS 相关的问题。我对包和库以及如何将它们固定到固定版本之间有点困惑。
在最近的 libxcb 版本中有一个 X11 翻转错误会影响我的 C 程序。libxcb-1.5-1 没有那个错误。
所以我做了:
# yum remove libxcb-devel
# rpm -Uvh --oldpackage libxcb-1.5-1.el6.i686.rpm
Run Code Online (Sandbox Code Playgroud)
现在错误消失了,我的软件运行良好。
快进几周,错误又回来了。
# yum info libxcb-devel
Loaded plugins: refresh-packagekit, security
Available Packages
Name : libxcb-devel
Arch : i686
Version : 1.9.1
Release : 2.el6
Size : 1.0 M
Repo : sl-security
Run Code Online (Sandbox Code Playgroud)
但是是安装的版本还是通过 repo 可用的版本?我如何知道当前安装的是哪个版本的 libxcb?
$ ll /usr/lib/libxcb.so*
lrwxrwxrwx 1 root root 15 Aug 6 03:38 /usr/lib/libxcb.so.1 -> libxcb.so.1.1.0*
-rwxr-xr-x 1 root root 130752 Oct 14 2014 /usr/lib/libxcb.so.1.1.0*
$ …Run Code Online (Sandbox Code Playgroud) 经过相当多的研究,为同事发布了这个问题。他想通过ssh -X(或-Y)连接到旧的 Centos 4 服务器并在那里运行一些 X 应用程序。它曾经运行良好多年,但最近对他的客户端 PC 的更新(在 Centos 7 和 Ubuntu 上)现在使这成为不可能。他的应用程序只是挂起,试图简单地运行glxgears会导致崩溃:
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 19
Current serial number in output stream: 21
Run Code Online (Sandbox Code Playgroud)
确实是客户端版本问题。在客户端恢复到早期的 Centos 6 使其再次工作。服务器端的 X11 日志中没有任何内容。我跑了,strace glxgears没有注意到任何异常。我可以尝试进一步诊断什么?
编辑:在任何现代 Linux 上,以下强制间接渲染上下文的尝试将失败:
glxinfo -i
name …Run Code Online (Sandbox Code Playgroud)