Linux 라이브러리/실행 파일 버전 정보 보기

Linux 라이브러리/실행 파일 버전 정보 보기

Windows에서는 EXE와 DLL 모두 최소한 다음 필드를 포함하는 버전 정보를 갖습니다.

  1. 파일 버전
  2. 제품 버전
  3. 내부 이름
  4. 상품명
  5. 저작권

Linux 라이브러리/실행 파일:

  • 어떤 분야가 존재하나요?
  • 이 정보를 어떻게 볼 수 있나요?
  • 어떤 도구/라이브러리를 읽어야 하나요?

답변1

버전 정보는 명시적으로 저장되지 않습니다.ELF 파일. 여기에는 soname주 버전을 포함한 라이브러리 이름이 포함됩니다 . 정식 버전은 일반적으로 라이브러리 파일 이름의 일부로 저장됩니다.

예를 들어 라이브러리가 있는 경우 libtest.so일반적으로 다음이 있습니다.

  • libtest.so.1.0.1- 정식 버전이 포함된 라이브러리 파일 자체
  • libtest.so.1libtest.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이 쓴 것처럼 프로그램 자체나 패키징 시스템에 의존할 수도 있습니다.

답변2

을 사용할 수 있으며 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 또는 aptitude를 사용할 수도 있습니다.

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.

우분투에서는 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 <[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.

답변3

버전 정보를 얻으려면 다음 명령을 실행하십시오.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

근본적인 대답은 Linux 실행 파일과 라이브러리 바이너리에는 그러한 표준 메타데이터가 없다는 것입니다. 일반적으로 배포판의 패키지 관리자에게 문의하는 것이 최선입니다. 또는 다른 답변의 일부 예에서 볼 수 있듯이 프로그램 자체에 식별 문자열이 포함되기를 바랍니다.

Fedora Linux 36 릴리스(이 글을 쓰는 시점에 출시 예정)에서는 다음을 추가했습니다.정보를 ELF 객체로 캡슐화. 데비안에는 이를 수행하는 개념 증명도 있습니다.

일단 설치되면 다음을 수행할 수 있습니다(예:).

$ readelf --notes /lib/libedit.so.0 |grep -A3 .note.package
Displaying notes found in: .note.package
  Owner                Data size    Description
  FDO                  0x00000084   FDO_PACKAGING_METADATA
    Packaging Metadata: {"type":"rpm","name":"libedit","version":"3.1-41.20210910cvs.fc36","architecture":"i386","osCpe":"cpe:/o:fedoraproject:fedora:36"}

...그러면 라이센스, 프로젝트 URL 등을 포함한 추가 정보가 포함된 패키지 정보를 얻을 수 있습니다.

관련 정보