Перегляд інформації про бібліотеку Linux / виконавчу версію


38

У Windows, EXE та DLL є інформація про версію, що включає принаймні такі поля:

  1. версія файлу
  2. версія продукту
  3. внутрішня назва
  4. Назва продукту
  5. авторські права

У Linux Library / Executable:

  • Які поля присутні?
  • Як переглянути таку інформацію?
  • Які інструменти / бібліотеки читати?

я оновив ще кілька речей, будь ласка, перевірте зараз ..
Рахул Патіль

ldconfig потрібен корінь? Що робити, щоб перевірити конкретний файл libxxx.so і не хочу виконувати exe за допомогою --version (можливо, не вдасться)
лінквізуйте

немає необхідності root, оскільки / sbin / path не встановлено у звичайному середовищі користувача, ви можете виконати, використовуючи абсолютний шлях, наприклад. /sbin/ldconfig -p
Рахул Патіль

Відповіді:


36

Інформація про версію в явно не зберігається у файлі ELF . У вас є назва бібліотеки, the soname, яка включає основну версію. Повна версія зазвичай зберігається як частина імені файлу бібліотеки.

Якщо у вас є бібліотека, скажімо libtest.so, зазвичай у вас є:

  • libtest.so.1.0.1 - Сам файл бібліотеки, що містить повну версію
  • libtest.so.1- Symlink to libtest.so.1.0.1, має те саме ім'я, що іsoname
  • libtest.so- Symlink, що libtest.so.1використовується для посилання.

У файлі бібліотеки libtest.so.1.0.1буде запис, викликаний SONAMEу динамічному розділі, який скаже, що ця бібліотека викликана libtest.so.1. Коли ви пов'язуєте програму з цією бібліотекою, пов'язана програма зберігатиме sonameбібліотеку під NEEDEDзаписом у динамічному розділі.

Якщо ви хочете перевірити, що саме є в якому файлі ELF, ви можете спробувати запустити:

readelf -a -W elffile

де elffileможе бути або бібліотека виконуваного файлу.

Якщо ви просто хочете отримати бібліотечну версію, ви можете грати з:

readelf -d  /path/to/library.so |grep SONAME

AFAIK, такої інформації (принаймні, не за замовчуванням) немає у виконуваних файлах.

Або ви можете покластися на саму програму або вашу систему упаковки, як писав Рахул Патіл.


приємна інформація, нове для мене ніколи не використовував readelf, якщо ви не заперечуєте, чи можу я запитати вас, де і навіщо користуватися readelf
Rahul Patil

Readelf (і подібні інструменти) корисні, коли ви хочете заглянути все до ельфського файлу :). Я використовую його здебільшого при програмуванні для пошуку символів у бібліотеках (коли щось не працює) або коли є якась проблема з бібліотекою. ( man readelf )
v154c1

13

Ви можете використовувати ldconfig -v | grep libraryname, також команда має опцію command -Vабоbinaryfile --version

приклад:

test@ubuntukrb12:~# ls --version
ls (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

також ви можете використовувати yum або здатність на основі дистрофу, який ви використовуєте, наприклад.

в RHEL5 / CENTOS5 / Fedora ви можете використовувати yum info packagenameабо якщо встановлено, то використовуватиrpm --version packagename

 [root@ldap1 ~]# yum info bind97
    Loaded plugins: downloadonly, fastestmirror, security
    Loading mirror speeds from cached hostfile
     * base: mirrors.sin3.sg.voxel.net
     * epel: mirror.imt-systems.com
     * extras: mirrors.sin3.sg.voxel.net
     * updates: mirrors.sin3.sg.voxel.net
    Installed Packages
    Name       : bind97
    Arch       : i386
    Epoch      : 32
    Version    : 9.7.0
    Release    : 10.P2.el5_8.4
    Size       : 6.3 M
    Repo       : installed
    Summary    : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
    URL        : http://www.isc.org/products/BIND/
    License    : ISC
    Description: BIND (Berkeley Internet Name Domain) is an implementation of the DNS
               : (Domain Name System) protocols. BIND includes a DNS server (named),
               : which resolves host names to IP addresses; a resolver library
               : (routines for applications to use when interfacing with DNS); and
               : tools for verifying that the DNS server is operating properly.

В Ubuntu Ви можете використовувати aptitude show pkgnameабоdpkg --version pkgname

root@ubuntukrb12:~# aptitude show bind9utils
Package: bind9utils
State: installed
Automatically installed: yes
Version: 1:9.8.1.dfsg.P1-4ubuntu0.4
Priority: optional
Section: net
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Uncompressed Size: 306 k
Depends: libbind9-80, libc6 (>= 2.14), libdns81, libisc83, libisccc80, libisccfg82
Conflicts: bind9utils
Replaces: bind9 (<= 1:9.5.0~b2-1), bind9 (<= 1:9.5.0~b2-1)
Description: Utilities for BIND
 This package provides various utilities that are useful for maintaining a working BIND installation.

Бо rpm, я думаю, ви захочете rpm --query pkgnameперерахувати рядок версії ( rpm --versionбуде надрукована сама версія rpm; те ж саме може бути і для dpkg)
hoc_age

5

Для систем, заснованих на Redhat:

ldd [file you want to run] | > needed-packages

Перевірте файл необхідних пакетів, переконайтеся, що в назвах файлів бібліотеки немає імен шляхів. Якщо так, видаліть їх, то "/bin/lib/libx.so.1" змініть на "libx.so.1"

Дізнайтеся, який пакет містить бібліотека

yum -y provides [lib name]

Або введіть це в сценарій або запустіть з cmd рядка:

for lib in `cat libs.txt`;
do
   yum -y provides $lib | head -2 | grep " : " >> packages.list
done

Далі створіть наступний сценарій або запустіть із рядка cmd:

for package in `cat packages.list | awk '{ print $1 }'`;
do
    yum -y install $package
done

Ви закінчили, запускайте програму. Якщо під час запуску ви отримаєте помилки GUI Скопіюйте їх, і якщо вони є бібліотечними посиланнями, знайдіть пакунки для них та встановіть так само.


2

Запустіть це, щоб отримати інформацію про версію - strings libssl.so.1.0.0 | grep "1\.0"

SSLv3 part of OpenSSL 1.0.2p-fips  14 Aug 2018
OpenSSL 1.0.2p-fips  14 Aug 2018
TLSv1 part of OpenSSL 1.0.2p-fips  14 Aug 2018
DTLSv1 part of OpenSSL 1.0.2p-fips  14 Aug 2018
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.