1. 程式人生 > 其它 >linux環境一鍵下載離線安裝包及其依賴

linux環境一鍵下載離線安裝包及其依賴

在linux環境下載離線安裝包,經常會存在安裝依賴的問題,為了方便解決下載依賴的問題,通過shell指令碼,根據設定的依賴深度,全部自動下載。

** 該指令碼適用於Ubuntu、UOS等Debian系使用apt依賴管理工具的linux作業系統。

** Centos等Redhat系使用yum或者dnf依賴管理工具的系統,處理邏輯和此一致。

 1 #!/bin/bash
 2 # Date:2022-04-13 
 3 # Author: Create by cooper_73
 4 
 5 echo -e "`date` \nReadly to download all of $1's packages \n\
6 \$1 indicates the target Software name; \n\ 7 \$2 indicates the depth of the dependency level. \ 8 " 9 10 sleep 1 11 getDepends() 12 { 13 pkg_list=`apt-cache depends $1|grep -E "依賴|建議|推薦"|grep -v "<\|>"` 14 pkg_download=`apt-cache depends $1|grep -E "依賴|建議|推薦"|grep -v "<\|>"
|awk -F: '{print $2}'|tr '\n' ' '` 15 } 16 17 pkgDownload() 18 { 19 echo -e "\nBegin to download...\n" 20 if [ -d "./packages/" ];then 21 cd packages && rm -rf * && apt download $dl_pkgs 22 else 23 mkdir packages && cd packages && apt download $dl_pkgs 24 fi 25 ls
-t ../packages | tr ' ' '\n' 26 echo -e "\n!!! Download Complete !!!\n" 27 } 28 29 pkgs=$1 30 i=0 31 echo -e "\nSearch all of depends about $1 with lever $2 :\n" 32 while [ $i -lt $2 ]; 33 do 34 let i++ 35 all_list="" 36 all_pkgs="" 37 for p in $pkgs 38 do 39 getDepends $p 40 all_list="$all_list $pkg_list" 41 all_pkgs="$all_pkgs $pkg_download" 42 done 43 pkgs=$all_pkgs 44 done 45 echo $all_list 46 dl_pkgs=`echo "$all_pkgs $pkgs"|tr ' ' '\n'|sort -u|tr '\n' ' '` 47 echo $dl_pkgs 48 pkgDownload