설치된 라이브러리의 버전 번호를 어떻게 알 수 있습니까?


12

RedHat / CentOS와 관련된 질문입니다. 패키지와 라이브러리와 고정 버전으로 고정하는 방법에 약간 혼란 스럽습니다.

최신 libxcb 버전에는 C 프로그램에 영향을 미치는 X11 롤오버 버그가 있습니다. libxcb-1.5-1에는 그 버그가 없습니다.

그래서 나는했다 :

# yum remove libxcb-devel
# rpm -Uvh --oldpackage libxcb-1.5-1.el6.i686.rpm 

이제 버그가 사라지고 소프트웨어가 제대로 작동합니다.

몇 주 빨리 감고 버그가 돌아 왔습니다.

# 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

그러나 설치된 버전 또는 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*
$ readelf -d /usr/lib/libxcb.so.1.1.0 | grep SONAME
 0x0000000e (SONAME)                     Library soname: [libxcb.so.1]

그래서 yum으로 표시된 버전 번호, .so의 숫자 및 원하는 숫자가 혼동됩니다 ...

답변:


14

어떤 버전이 설치되어 있는지 알고 싶다면 다음을 실행하십시오.

rpm -q libxcb-devel

이 패키지로의 업그레이드를 방지하려면 yum exclude구성에 패키지를 추가 할 수 있습니다 . main섹션에 다음을 추가하십시오 /etc/yum.conf.

exclude=libxcb-devel

라이브러리 버전 (예 : in libxcb.so.1.1.0)은 패키지 버전을 거의 추적하지 않으며 API 변경을 추적하기위한 것입니다.


1
# yum remove libxcb-devel
# rpm -Uvh --oldpackage libxcb-1.5-1.el6.i686.rpm 

이들은 두 가지 다른 패키지입니다. -devel 버전은 컴파일 용이며, -devel이없는 libxcb 패키지는 응용 프로그램을 실행할 것입니다.

아무것도 설치되지 않은 -devel 버전을 제거 했으므로 "yum info"는 사용 가능한 최신 버전 만 표시합니다 (--showduplicates 옵션을 사용하여 모든 버전을 볼 수 있음). 업그레이드를 중지하려면 libxcb 패키지에 versionlock 플러그인을 설치 / 사용하는 것이 좋습니다 ... 제외를 사용하여 수동으로 수행해야합니다.

또한 rpm을 직접 사용하십시오. yum downgrade blah.rpm


yum 다운 그레이드가 가능하지 않은 것 같습니다. 최근에 추가 되었습니까? versionlock 팁에 감사드립니다.
dargaud

정적 링크의 위험을 피하기 위해 개발을 제거했습니다.
dargaud

1
yum 다운 그레이드는 RHEL6 이후부터 가능합니다
doktor5000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.