Bạn đã thực sự xóa tệp .so thực hay chỉ liên kết mềm trỏ đến tệp .so thật, do đó, người tạo thư viện có thể làm mới một cách an toàn các thư viện để biên dịch lại tất cả các chương trình trong hệ thống.
nếu bạn chỉ xóa các liên kết mềm, hãy tìm nó!
Sử dụng
find /usr/lib | grep libssl
để xác định vị trí tệp .so thực, nếu bạn tìm thấy nó, hãy tạo lại liên kết mềm với:
ln /usr/lib/path/to/real/libssl /lib/libssl.so.10
Có thể các chương trình (ngay bây giờ: apt-get) cố gắng truy cập các thư viện được chia sẻ theo một đường dẫn cụ thể, được biên dịch vào chương trình, định vị chương trình của bạn với:
which apt-get
(kết quả của tôi là: / usr / bin / apt-get)
và tìm trong chương trình các vị trí thư viện chia sẻ "tiềm năng" với:
strings /path/to/your/program
(kết quả của tôi là:
/lib64/ld-linux-x86-64.so.2
libapt-pkg.so.4.12
libutil.so.1
libstdc++.so.6
libm.so.6
libgcc_s.so.1
libc.so.6
__libc_start_main
install - Install new packages (pkg is libc6 not libc6.deb)
)
aha nó sử dụng tĩnh /lib64/ld-linux-x86-64.so.2
(Có vẻ như apt-get được biên dịch liboutl của tôi)
Hãy thử xem!
apt-get
? trongCentOS
?