import subprocess,re,os,time import networkx as nx import matplotlib.pyplot as plt import numpy as np package_list = [] result_list = [] G = nx.DiGraph() def download_source(package): package_folder = os.getcwd() + "/tmp/" + package if os.path.exists(package_folder) == False: cmd = "mkdir " + package_folder + " && cd " + package_folder + " && apt source " + package #print(cmd) intofolder_source = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE) #cd /tmp && apt source wpasupplicant intofolder_source.wait() def get_source_name(package): package_folder = os.getcwd() + "/tmp/" + package #print(package_folder) path_list = os.listdir(package_folder) for path in path_list: if '_' in path: source_name = path.split("_")[0] else: source_name = path.split("-")[0] break print("package = ",package) print("-----source_name = ",source_name) cmd = "rm -rf " + package_folder #print(cmd) rm_source = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE) #cd /tmp && apt source wpasupplicant rm_source.wait() print(type(source_name)) return source_name def list_del(list): for package in list: if '|' in package: package_test = package.split("|") if package_test [0] in package_list: list.remove(package) list.append(package_test[0]) else: list.remove(package) list.append(package_test[1]) return list def dpkg_analyze(package): cmd = "dpkg -s " + package + " |grep Depends:" #print(package) dpkg_depends = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE) #dpkg -s wpasupplicant result_stdout = dpkg_depends.stdout.readline() result_without = re.sub(u"\\(.*?\\)", "", str(result_stdout,encoding= " utf-8")) result = result_without.replace('Depends: ','') result = result.replace(' ','') result = result.replace('\n','') result_list = result.split(",") return list_del(result_list) f = open ("ubuntu2204-package.txt") lines = f.readlines() number = 0 count = 0 for line in lines: number = number + 1 #if number > 5 and number < 10: if number > 5: package_name = line.split()[1].replace(':amd64','') if "linux-" not in package_name: package_list.append(package_name) #add package name to list ##初始化使用 #a = np.array([['1','2']],dtype=" 0 and len(get_source_name(package)) != 0: # for depend in depend_list: # G.add_edge(get_source_name(package),get_source_name(depend)) #pos = nx.spring_layout(G) #nx.draw(G,pos,with_labels=True) #plt.show()