import subprocess,re,os,time import networkx as nx import matplotlib.pyplot as plt import numpy as np package_list = [] result_list = [] linux_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() return source_name def list_del(list): remove_list = [] for package in list: if '|' in package: package_test = package.split("|") for i in range(len(package_test)): if package_test [i] in package_list: list.append(package_test[i]) remove_list.append(package) elif package not in package_list: remove_list.append(package) print(remove_list) for i in remove_list: list.remove(i) 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")) print(result_without) result = result_without.replace('Pre-Depends: ','') result = result.replace('Depends: ','') result = result.replace(' ','') result = result.replace('\n','') result = result.replace(':any','') result = result.replace(':amd64','') result = result.replace(':i386','') result_list = result.split(",") print(result_list) 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 else: linux_list.append(package_name) ##初始化 final_np = np.loadtxt("temp.csv", delimiter=",", dtype="