Есть ли способ установить зависимости, когда программа их встречает?

Недавно было несколько бинарных программ, которые пришли в архиве zip (не как пакет Debian), но в них все еще были зависимости (а именно dwarf fortress и epsxe), и было нелегко пролистывать недостающие библиотеки одну за другой, проверяя, какой пакет он принадлежит и устанавливает этот пакет.

Есть ли способ объединения программ, таких как ldd, apt-file а также apt-get автоматически установить зависимости для этого конкретного двоичного файла?

1 ответ

Решение

Хорошо, так что после изучения сценариев bash я придумал это. Работает для 64 и 32-битных зависимостей.

#!/bin/bash
DESTINATION=${1/ /\\ }
TYPE=$(eval readelf -h $DESTINATION | grep Class | awk ' {print $2}')
FILES=$(eval ldd $DESTINATION | grep "not found" | awk ' {print $1} ' | paste -s -d ' ')
for FILE in $FILES; do
  PACKAGE=$(apt-file search $FILE | awk ' {print $1}' | sed 's/://g' | uniq)
  if [ ! -z $PACKAGE ]
  then
    if [ $TYPE = "ELF32" ]
    then
      sudo apt install ${PACKAGE}:i386
    else
      sudo apt install ${PACKAGE}
    fi
  fi
done

https://github.com/Managor/install-deps.sh если я когда-нибудь внесу изменения.

Другие вопросы по тегам