#!/bin/bash # # Search for and install missing shared libraries # # Copyright (C) 2017-2018,2022 Jason Graham # set -euo pipefail function process_file { if [ ! -z $(which $1 2> /dev/null) ]; then ldd `which $1` | grep "not found" | cut -d= -f1 >> .libs return fi if [ -f $1 ]; then ldd $1 | grep "not found" | cut -d= -f1 >> .libs fi } RUN="" echo -n > .libs for p in $@ do if [ -d $p ]; then for f in `find $p -type f -name '*.so' -o -name '*.so.*'` do $RUN process_file $f done else $RUN process_file $p fi done cat .libs | sort -u > .libs.new mv .libs.new .libs echo -n > .pkgs echo -n > pkg-list while read l do p=$(slackpkg file-search $l | sed -e 's/\x1b\[[0-9;]*m//g' | grep '\[unin\]' | cut -d: -f2 | head -n1) echo $p:$l >> pkg-list echo $p >> .pkgs done<.libs rm -f .libs sort -u .pkgs > .pkgs.new mv .pkgs.new .pkgs sort -u pkg-list > pkg-list.new mv pkg-list.new pkg-list if [ -s .pkgs ]; then slackpkg install $(cat .pkgs) fi rm -f .pkgs