Linux Library / Çalıştırılabilir versiyon bilgisini görüntüleme


37

Windows'ta, EXE ve DLL en az aşağıdaki alanları içeren sürüm bilgisine sahiptir:

  1. dosya sürümü
  2. Ürün Sürümü
  3. Dahili İsim
  4. Ürün adı
  5. telif hakkı

Linux Kütüphanesinde / Çalıştırılabilir:

  • Hangi alanlar mevcut?
  • Böyle bir bilgiyi nasıl görebilirim?
  • Hangi araçları / kütüphaneleri okumak için?

bazı şeyleri şimdi güncellendiğimden emin olun, lütfen kontrol edin ..
Rahul Patil

ldconfig root gerekli mi? Peki dosyaya libxxx.so bir spesifik kontrol etmek ve version (başarısız olabilir) bir exe çalıştırmak istemiyorum
linquize

Kök gerekmez, / sbin / yol normal kullanıcı ortamında ayarlanmadığından, mutlak yol kullanarak örn. /sbin/ldconfig -p
Rahul Patil

Yanıtlar:


36

Bu sürüm bilgisi açıkça bir ELF dosyasında saklanmaz . İçinde sahip olduğunuz soname, büyük sürümü içeren kütüphanenin adıdır . Tam sürüm genellikle kitaplık dosya adının bir parçası olarak saklanır.

Kütüphaneniz varsa, diyelim libtest.so, genellikle:

  • libtest.so.1.0.1 - Tam sürümü içeren kitaplık dosyası
  • libtest.so.1- libtest.so.1.0.1ile aynı adı taşıyan bağlantısoname
  • libtest.so- Bağlantı için libtest.so.1kullanılan sembolik bağlantı.

Kütüphane dosyasında libtest.so.1.0.1, SONAMEdinamik bölüm adı verilen ve bu kütüphanenin çağrıldığını söyleyen bir giriş olacaktır libtest.so.1. Bir programı bu kütüphaneye karşı bağladığınızda, bağlı program sonamekütüphanenin NEEDEDgirişini dinamik bölümde girecek şekilde kaydeder .

Tam olarak hangi ELF dosyasının içinde olduğunu doğrulamak istiyorsanız, çalıştırmayı deneyebilirsiniz:

readelf -a -W elffile

burada elffilebir yürütülebilir bir kütüphane olabilir.

Sadece kütüphane sürümünü edinmek istiyorsanız, aşağıdakilerle oynayabilirsiniz:

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

AFAIK, çalıştırılabilir dosyalarda (en azından varsayılan olarak) böyle bir bilgi yoktur.

Ya da Rahul Patil'nin yazdığı gibi programın kendisine veya paketleme sisteminize güvenebilirsiniz.


güzel bilgi, benim için yeni, hiç kullanmadı, onu sakıncası yoksa sakıncası yoksa neden kullandığını sorabilir miyim
Rahul Patil

Bir elf dosyasının içine bakmak istediğinizde, Readelf (ve benzeri araçlar) kullanışlıdır :). Çoğunlukla kütüphanelerde sembollere bakmak için programlama yaparken (bir şey çalışmadığında) veya bir kütüphaneyle ilgili bir sorun olduğunda kullanıyorum. ( Adamın okuması )
v154c1,

13

Kullanabilirsiniz ldconfig -v | grep libraryname, ayrıca komut seçeneği command -Vveyabinaryfile --version

örnek :

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.

Ayrıca, örneğin kullandığınız dağıtıma göre yum veya yetenek kullanabilirsiniz.

RHEL5 / CENTOS5 / Fedora’da yum info packagenamekullanabilirsiniz.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'da kullanabilirsiniz aptitude show pkgnameveyadpkg --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.

Çünkü rpm, rpm --query pkgnamesürüm dizesini listelemek isteyeceğinizi düşünüyorum rpm --version( rpmkendi versiyonunu basacaktır ; aynısı bunun için geçerli olabilir dpkg)
hoc_age 16:14

5

Redhat tabanlı sistemler için şunu yapın:

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

Gerekli paketlere bir göz atın, kitaplık dosya adlarında yol adı olmadığından emin olun. Öyleyse onları kaldırın, bu yüzden "/bin/lib/libx.so.1" "libx.so.1" olarak değiştirin

Hangi paketin kütüphaneyi içerdiğini öğrenin

yum -y provides [lib name]

Veya bunu bir komut dosyasına koyun veya cmd satırından çalıştırın:

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

Sonra, aşağıdaki betiği oluşturun veya cmd satırından çalıştırın:

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

Bitirdiniz, programınızı çalıştırın. Çalışırken GUI hatası alırsanız. Bunları kopyalayın ve kütüphane referanslarıysa, bunlara ait paketleri bulun ve aynı şekilde yükleyin.


2

Sürüm bilgisini almak için bunu çalıştırın - 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.