Python implementation of RPM elfdeps
Project description
ELF deps
Python implementation of RPM elfdeps
. The elfdeps
tool can extract dependencies and provides from an ELF binary.
Example
$ elfdeps --requires /usr/bin/python3.12
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libpython3.12.so.1.0()(64bit)
libc.so.6()(64bit)
rtld(GNU_HASH)
$ elfdeps --provides /usr/lib64/libpython3.12.so
libpython3.12.so.1.0()(64bit)
$ elfdeps --provides /lib64/libc.so.6
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.2.6)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
...
libc.so.6(GLIBC_2.36)(64bit)
libc.so.6(GLIBC_2.38)(64bit)
libc.so.6(GLIBC_ABI_DT_RELR)(64bit)
libc.so.6(GLIBC_PRIVATE)(64bit)
libc.so.6()(64bit)
RPM
In Fedora-based distributions, RPM packages provide and require virtual packages with ELF sonames and versions. The package manager can install virtual provides.
The python3
base package depends on libpython3.12.so.1.0()(64bit)
and libc.so.6(GLIBC_2.34)(64bit)
:
$ rpm -qR python3
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libpython3.12.so.1.0()(64bit)
...
rtld(GNU_HASH)
The python3-libs
package virtually provides libpython3.12.so.1.0()(64bit)
:
$ rpm -qP python3-libs
bundled(libb2) = 0.98.1
libpython3.12.so.1.0()(64bit)
libpython3.so()(64bit)
python-libs = 3.12.3-2.fc39
python3-libs = 3.12.3-2.fc39
python3-libs(x86-64) = 3.12.3-2.fc39
python3.12-libs = 3.12.3-2.fc39
$ sudo dnf install 'libc.so.6(GLIBC_2.34)(64bit)' 'libpython3.12.so.1.0()(64bit)'
Package glibc-2.38-18.fc39.x86_64 is already installed.
Package python3-libs-3.12.3-2.fc39.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Public API
- dataclass
elfdeps.ELFAnalyzeSettings
- exception
elfdeps.ELFError
- dataclass
elfdeps.ELFInfo
- dataclass
elfdeps.SOInfo
elfdeps.analyze_elffile(elffile, *, filename, is_exec, settings=None) -> ELFInfo
elfdeps.analyze_file(filename, *, settings=None) -> ELFInfo
elfdeps.analyze_tarmember(tfile, tarinfo, *, settings=None) -> ELFInfo
elfdeps.analyze_zipmember(zfile, zipinfo, *, settings=None) -> ELFInfo
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
elfdeps-0.1.0.tar.gz
(20.5 kB
view details)
Built Distribution
elfdeps-0.1.0-py3-none-any.whl
(16.0 kB
view details)
File details
Details for the file elfdeps-0.1.0.tar.gz
.
File metadata
- Download URL: elfdeps-0.1.0.tar.gz
- Upload date:
- Size: 20.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f256777eb71746855c3d95908d0880b9192c2cb353d4c406d2c74a8ba45242b1 |
|
MD5 | 345567af45595de6f73ed606fe0bef8b |
|
BLAKE2b-256 | 0dd9f8ae321f3c72533575e2371308298c238e33f9fdc47261f2d6f09007a5f8 |
File details
Details for the file elfdeps-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: elfdeps-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7eaa69140e92158c551cf87cacc44f34d4a293a19e769c725f4280001927ab53 |
|
MD5 | d99d52d04fc74adf0c8c4480e54bced4 |
|
BLAKE2b-256 | 74227e354f940c70091930d0ed8d5aefdcf4f26d5e726cd5316239b53fcbdd25 |