लिनक्स लाइब्रेरी / निष्पादन योग्य संस्करण की जानकारी देखना


37

Windows में, EXE और DLL में कम से कम निम्नलिखित क्षेत्रों सहित संस्करण जानकारी है:

  1. फ़ाइल संस्करण
  2. उत्पाद संस्करण
  3. आंतरिक नाम
  4. उत्पाद का नाम
  5. कॉपीराइट

लिनक्स लाइब्रेरी में / निष्पादन योग्य:

  • कौन से क्षेत्र मौजूद हैं?
  • ऐसी जानकारी कैसे देखें?
  • क्या उपकरण / पुस्तकालय पढ़ने के लिए?

मैंने कुछ और चीजों को अपडेट किया है कृपया अब देखें ..
राहुल पाटिल

ldconfig को रूट की आवश्यकता है? एक विशिष्ट libxxx.so फ़ाइल की जाँच करने के बारे में क्या है और इसके साथ एक exe निष्पादित नहीं करना चाहते --version (यह विफल हो सकता है)
linquize

कोई ज़रूरत नहीं है रूट, क्योंकि / sbin / पथ सामान्य उपयोगकर्ता वातावरण में सेट नहीं है, आप निरपेक्ष पथ का उपयोग करते हुए निष्पादित कर सकते हैं। /sbin/ldconfig -p
राहुल पाटिल

जवाबों:


36

संस्करण की जानकारी स्पष्ट रूप से एक 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

यदि आप सत्यापित करना चाहते हैं कि वास्तव में ईएलएफ फाइल क्या है, तो आप चलाने का प्रयास कर सकते हैं:

readelf -a -W elffile

जहां elffileया तो एक निष्पादन योग्य पुस्तकालय हो सकता है।

यदि आप बस लाइब्रेरी संस्करण प्राप्त करना चाहते हैं, तो आप इसके साथ खेल सकते हैं:

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

AFAIK, निष्पादन योग्य फ़ाइलों में ऐसी कोई जानकारी नहीं है (कम से कम डिफ़ॉल्ट रूप से नहीं)।

या आप खुद या अपने पैकेजिंग सिस्टम के प्रोग्राम पर भरोसा कर सकते हैं, जैसा कि राहुल पाटिल ने लिखा है।


अच्छी जानकारी, यह मेरे लिए नया है, अगर आपने कभी मन नहीं लगाया, तो मैं आपसे पूछ सकता हूं कि आप कहां और क्यों उपयोग कर सकते हैं
राहुल पाटिल

जब आप एक योगिनी फ़ाइल के अंदर देखना चाहते हैं, तो रीडफ़ (और इसी तरह के उपकरण) उपयोगी है। मैं ज्यादातर इसका उपयोग पुस्तकालयों में प्रतीकों को देखने के लिए प्रोग्रामिंग करता हूं (जब कुछ काम नहीं करता है), या जब पुस्तकालय के साथ कुछ समस्या होती है। ( 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.

इसके अलावा आप distro के आधार पर yum या एप्टीट्यूड का उपयोग कर सकते हैं, जैसे आप।

RHEL5 / CENTOS5 / फेडोरा में आप उपयोग कर सकते हैं 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.

उबंटू में आप उपयोग कर सकते हैं 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

रेडहैट आधारित सिस्टम के लिए:

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.