it-swarm.com.de

Anzeigen von Informationen zur Linux-Bibliothek / ausführbaren Version

In Windows haben EXE und DLL Versionsinformationen, einschließlich mindestens der folgenden Felder:

  1. dateiversion
  2. produktversion
  3. interner Name
  4. produktname
  5. urheberrechte ©

In Linux Library/Executable:

  • Welche Felder sind vorhanden?
  • Wie kann ich solche Informationen anzeigen?
  • Welche Tools/Bibliotheken zu lesen?
41
linquize

Die Versionsinformationen werden nicht explizit in einer ELF-Datei gespeichert. Was Sie dort haben, ist der Name der Bibliothek, soname, die die Hauptversion enthält. Die Vollversion wird normalerweise als Teil des Bibliotheksdateinamens gespeichert.

Wenn Sie eine Bibliothek haben, sagen Sie libtest.so, Dann haben Sie normalerweise:

  • libtest.so.1.0.1 - Die Bibliotheksdatei selbst, die die Vollversion enthält
  • libtest.so.1 - Symlink zu libtest.so.1.0.1 Mit demselben Namen wie soname
  • libtest.so - Symlink zu libtest.so.1, Der zum Verknüpfen verwendet wird.

In der Bibliotheksdatei libtest.so.1.0.1 Gibt es einen Eintrag mit dem Namen SONAME im dynamischen Abschnitt, der besagt, dass diese Bibliothek libtest.so.1 Heißt. Wenn Sie ein Programm mit dieser Bibliothek verknüpfen, speichert das verknüpfte Programm das soname der Bibliothek unter dem Eintrag NEEDED im dynamischen Abschnitt.

Wenn Sie überprüfen möchten, was genau in welcher ELF-Datei enthalten ist, können Sie versuchen, Folgendes auszuführen:

readelf -a -W elffile

dabei kann elffile entweder eine Bibliothek einer ausführbaren Datei sein.

Wenn Sie einfach die Bibliotheksversion erhalten möchten, können Sie mit Folgendem spielen:

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

AFAIK, es gibt keine solchen Informationen (zumindest nicht standardmäßig) in ausführbaren Dateien.

Oder Sie können sich auf das Programm selbst oder Ihr Verpackungssystem verlassen, wie Rahul Patil schrieb.

39
v154c1

Sie können ldconfig -v | grep libraryname Verwenden, außerdem hat der Befehl die Option command -V Oder binaryfile --version

beispiel:

[email protected]:~# 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.

sie können auch yum oder aptitude verwenden, basierend auf der Distribution, die Sie verwenden, z.

in RHEL5/CENTOS5/Fedora können Sie yum info packagename verwenden. Wenn es installiert ist, verwenden Sie rpm --version packagename

 [[email protected] ~]# 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.

In Ubuntu können Sie aptitude show pkgname Oder dpkg --version pkgname Verwenden.

[email protected]:~# 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 <[email protected]>
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.
14
Rahul Patil

Führen Sie für Redhat-basierte Systeme Folgendes aus:

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

Überprüfen Sie die Datei mit den benötigten Paketen und stellen Sie sicher, dass die Namen der Bibliotheksdateien keine Pfadnamen enthalten. Wenn dies der Fall ist, entfernen Sie "/bin/lib/libx.so.1" in "libx.so.1".

Finden Sie heraus, welches Paket die Bibliothek enthält

yum -y provides [lib name]

Oder fügen Sie dies in ein Skript ein oder führen Sie es aus der cmd-Zeile aus:

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

Erstellen Sie als Nächstes das folgende Skript oder führen Sie es in der cmd-Zeile aus:

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

Sie sind fertig, führen Sie Ihr Programm aus. Wenn beim Ausführen GUI-Fehler auftreten. Kopieren Sie sie nach unten, und wenn es sich um Bibliotheksreferenzen handelt, suchen Sie die Pakete für diese und installieren Sie sie auf die gleiche Weise.

5
JMirabile

Führen Sie dies aus, um Versionsinformationen zu erhalten - 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
4
yarick