在ubuntu下递归追索一个包的所有必要依赖项apt_dep.sh

在ubuntu下递归追索一个包的所有必要依赖项apt_dep.sh

通过apt-cache depends 可以获取debian/ubuntu下一个包的依赖项,但依赖项本身也会依赖其他包,

希望递归追索所有依赖项,且不重复,则使用如下小脚本可以达到目的

#! /bin/bash

ALL_DEBS=$1
CHECKED_DEBS="libc6 $1"
UNCHECK_DEBS=""

function is_check()
{
    for item_one in ${CHECKED_DEBS}; do
        if [ $item_one == $1 ]; then
             return 1
        fi
    done;
    return 0
}

function get_dep()
{
   PACKAGE_NAME="$1"
   DEPS_NAME="$(apt-cache depends "$PACKAGE_NAME" | grep " 依赖:" | awk -F ":" '{ print $2}' | tr -d '<>' | tr '\n' ' ')"
   # echo "$1, ${DEPS_NAME}"
   for item_two in ${DEPS_NAME}; 
   do
      is_check $item_two
      if [ $? -eq 0 ] ; then
         CHECKED_DEBS="${CHECKED_DEBS} ""$item_two"
         get_dep $item_two
      fi
   done;
}

get_dep $1
echo ${CHECKED_DEBS}

 

posted @ 2020-08-06 10:11  日月王  阅读(410)  评论(0编辑  收藏  举报