update operation.py

This commit is contained in:
qiurui
2024-09-06 10:16:15 +08:00
parent 8be028606d
commit 6b0231b24c
+45 -38
View File
@@ -5,6 +5,7 @@ import numpy as np
package_list = []
result_list = []
linux_list = []
G = nx.DiGraph()
def download_source(package):
@@ -25,8 +26,8 @@ def get_source_name(package):
else:
source_name = path.split("-")[0]
break
print("package = ",package)
print("-----source_name = ",source_name)
#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
@@ -34,16 +35,21 @@ def get_source_name(package):
return source_name
def list_del(list):
remove_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])
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:"
@@ -51,10 +57,16 @@ def dpkg_analyze(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: ','')
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")
@@ -68,26 +80,15 @@ for line in lines:
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)
##初始化使用
#a = np.array([['1','2']],dtype="<U1000")
#b = np.array([['1','2']])
#final_np = np.insert(a, 0, values=b, axis=0)
#for i in range(len(package_list)-1):
# final_np = np.insert(final_np, 0, values=b, axis=0)
##初始化使用2
##初始化
final_np = np.loadtxt("temp.csv", delimiter=",", dtype="<U1000")
if np.any(final_np == "accountsservice") == False:
final_np = np.empty((len(package_list), 2),dtype="<U1000")
print(final_np)
##加载数据
#final_np = np.loadtxt("temp.csv", delimiter=",", dtype="<U1000")
#print(np.any(final_np == "os-prober"))
#print(final_np)
#exit(0)
###test
#print(package_list)
#list_test = ['hicolor-icon-theme', 'gtk-update-icon-cache', 'ubuntu-mono|adwaita-icon-theme-full']
@@ -95,18 +96,21 @@ if np.any(final_np == "accountsservice") == False:
#print(list_test)
print("len(package_list) = ", len(package_list)) ##1628个
#print(package_list.index("dbus-daemon"))
#print("package_list = ", package_list)
#print(dpkg_analyze("gdm3"))
#exit(0)
line = 0
for package in package_list:
print(package)
#print("package = ",package)
if np.any(final_np == package) == False:
print(line)
#print(line)
download_source(package)
final_np[line][0] = package
final_np[line][1] = get_source_name(package)
elif len(final_np[line][1]) == 0:
print(line)
#print(line)
download_source(package)
final_np[line][0] = package
final_np[line][1] = get_source_name(package)
@@ -115,23 +119,26 @@ for package in package_list:
final_np[line][1] = final_np[line][1]
if len(final_np[line][1]) != 0:
print(final_np[line][1])
#print("depend = ",final_np[line][1])
result_list.append(final_np[line][1])
G.add_node(final_np[line][1])
np.savetxt("temp.csv", final_np, delimiter=",", fmt='%s')
line = line + 1
print(final_np)
exit(0)
#print(final_np)
#print(final_np[package_list.index("xorg")][0])
#exit(0)
#print("result_list = " , result_list)
print("len(result_list)) = ", len(result_list))
#for package in package_list:
# depend_list = dpkg_analyze(package)
# print(depend_list)
# if len(depend_list) > 0 and len(get_source_name(package)) != 0:
# for depend in depend_list:
# G.add_edge(get_source_name(package),get_source_name(depend))
for package in package_list:
depend_list = dpkg_analyze(package)
print("package = ",package)
print("depend_list = ",depend_list)
if len(depend_list) > 0 and len(final_np[package_list.index(package)][1]) != 0 and depend_list[0] != '':
for depend in depend_list:
if "linux-" not in depend and "linux-" not in final_np[package_list.index(depend)][1] and "linux-" not in final_np[package_list.index(package)][1]:
G.add_edge(final_np[package_list.index(package)][1],final_np[package_list.index(depend)][1])
#pos = nx.spring_layout(G)
#nx.draw(G,pos,with_labels=True)
#plt.show()
pos = nx.spring_layout(G)
nx.draw(G,pos,with_labels=True)
plt.show()