UPDATE: Here's a Bash script that I think does more of what you're asking for. It will scan currently running processes and list RPM packages that contain libraries that are currently loaded in memory for those processes.
#!/bin/bash procs=$(find /proc -maxdepth 1 -type d -name "[0-9]*" | sed 's@/proc/@@') for proc in $procs[*]; do if [ ! -f /proc/$proc/cmdline ]; then continue fi cmd=$(cat /proc/$proc/cmdline | sed 's/[\s\n]+//g') if [ -z "$cmd" ]; then continue fi echo "**** Scanning pid ($proc): $cmd" echo echo "Dependent RPM Packages:" ( libs=$(sudo lsof -p $proc -a -d mem 2>/dev/null | awk '{print $NF}' | grep "\.so") for lib in $libs; do echo $(rpm -qf $lib) done ) | sort -u echo done You could write a simple Bash script to figure out which binaries are reliant on a particular library.
To get the list of binaries on disk affected:
#!/bin/bash dir=$1 lib=$2 for bin in $(find $dir -type f -executable); do ldd $bin | grep -q "$lib" && echo $bin done Or in the case of running processes on the system you could grep ps -ef instead and use ldd the same way as above.
Depending on your flavor of Linux you could also find how a particular package update affects your system based on the libraries contained within it.
On a CentOS system you could do the following to get the list of shared libraries in a package:
$ rpm -ql zlib | grep "\.so" /usr/lib64/libz.so.1 /usr/lib64/libz.so.1.2.7 Then you could again use ldd on system binaries to determine which binaries use the listed libraries.