Làm cách nào để tìm ra số phiên bản của thư viện đã cài đặt?


11

Câu hỏi liên quan đến RedHat / CentOS. Tôi hơi bối rối giữa gói và thư viện và cách ghim chúng vào một phiên bản cố định.

Có một lỗi cuộn X11 trong các phiên bản libxcb gần đây ảnh hưởng đến các chương trình C của tôi. libxcb-1.5-1 không có lỗi đó.

Tôi cũng vậy:

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

Và bây giờ lỗi đã biến mất và phần mềm của tôi hoạt động tốt.

Nhanh chóng chuyển tiếp một vài tuần và lỗi đã trở lại.

# 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

Nhưng đó có phải là phiên bản đã cài đặt hoặc phiên bản có sẵn thông qua repo không? Làm cách nào để biết phiên bản libxcb nào đang được cài đặt?

$ 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]

Vì vậy, tôi nhầm lẫn giữa số phiên bản được hiển thị bởi yum, số trên .so và số tôi muốn ...

Câu trả lời:


14

Nếu bạn muốn biết phiên bản nào được cài đặt , chỉ cần chạy:

rpm -q libxcb-devel

Nếu bạn muốn ngăn nâng cấp cho gói này, bạn có thể thêm gói vào excludecấu hình yum . Thêm phần sau vào mainphần trong /etc/yum.conf:

exclude=libxcb-devel

Phiên bản thư viện (ví dụ: trong libxcb.so.1.1.0) rất hiếm khi theo dõi phiên bản gói và có nghĩa là để theo dõi các thay đổi API.


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

Đây là hai gói khác nhau. Phiên bản -devel dùng để biên dịch, gói libxcb không có -devel là ứng dụng nào sẽ chạy.

Vì bạn đã xóa phiên bản -devel không có gì được cài đặt, nên "thông tin yum" chỉ hiển thị cho bạn phiên bản mới nhất có sẵn (bạn có thể sử dụng tùy chọn --showd repeatates để xem tất cả các phiên bản). Nếu bạn muốn dừng việc nâng cấp, tôi khuyên bạn nên cài đặt / sử dụng plugin phiên bản khóa trên gói libxcb ... mặc dù việc này được thực hiện thủ công bằng cách sử dụng loại trừ.

Cũng sử dụng vòng / phút trực tiếp, bạn chỉ có thể sử dụng: yum downgrade blah.rpm


yum hạ cấp dường như không có sẵn. Đó có phải là một bổ sung gần đây? Cảm ơn về mẹo phiên bản, tôi chưa bao giờ nghe về nó.
dargaud

Tôi đã loại bỏ sự phát triển để tránh rủi ro liên kết tĩnh, tôi đoán vậy.
dargaud

1
yum hạ cấp có sẵn kể từ ít nhất là RHEL6
doktor5000
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.