update operation.py
This commit is contained in:
+45
-38
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user