Эта страница описывает интерактивную команду подробно и является на самом деле довольно полным учебным руководством. Описывает команды такой как z
и z-
:
If there is more than a screenful of messages, then z will
show the next screenful, and z- will show the previous screenful.
Информация о версии в не явно сохраненный в файле ELF. Что Вы имеете, там название библиотеки, soname
, который включает основную версию. Полная версия обычно хранится как часть имени файла библиотеки.
Если Вы имеете библиотеку, говорите libtest.so
, затем Вы обычно имеете:
libtest.so.1.0.1
- Сам файл библиотеки, содержа полную версиюlibtest.so.1
- Символьная ссылка на libtest.so.1.0.1
, наличие того же имени как soname
libtest.so
- Символьная ссылка на 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, нет такой информации (по крайней мере, не по умолчанию) в исполняемых файлах.
Или можно полагаться на саму программу или упаковочную систему, как записал Rahul Patil.
Можно использовать 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.
также можно использовать конфетку или способность на основе дистрибутива, который Вы используете, например.
в 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
16.09.2014, 17:19
Для систем на базе 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-ошибки. Скопируйте их и, если это ссылки на библиотеки, найдите пакеты для них и установите их тем же способом.
Запустите это, чтобы получить информацию о версии-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