#!/usr/bin/python # -*- coding: UTF-8 -*- #================== # Author: Alvis Zhao # Date: 2020-08-14 11:45:09 # LastEditTime: 2020-08-14 11:51:17 # Description: 下载ubuntu deb软件及其依赖包 #================== import os import sys def showUsage(): print("Usage:") print(" python download-apt.py net-tools") def getDepends(pkg): dependList = [] cmd = 'apt-cache depends ' + pkg + ' | grep Depends |cut -d: -f2 |tr -d "<>" | sort | uniq' pipeline = os.popen(cmd) items = pipeline.read().split("\n") for item in items: if len(item) > 0: dependList.append(item) return dependList def main(): if len(sys.argv) < 2: print("用法错误!") showUsage() return pkgAll = [] pkg = sys.argv[1] outputDir = pkg pkgAll.append(pkg) os.popen('mkdir -p ' + outputDir) # dependList = getDepends(pkg) # pkgAll = pkgAll + dependList # 递归深度 depth = 3 count = 0 tempList = [] tempList.append(pkg) while (count < depth): count = count + 1 itemDepends = [] for item in tempList: dependList = getDepends(item) itemDepends = itemDepends + dependList pkgAll = pkgAll + itemDepends tempList = itemDepends # 先将列表转化为set,再转化为list就可以实现去重操作 pkgAll = list(set(pkgAll)) os.chdir(outputDir) for item in pkgAll: # download deb package print(" downloading " + item) os.popen('apt-get download ' + item) if __name__ == '__main__': main()