#!/usr/bin/env python3 import os import sys import random import subprocess # 读取文本文档 def ReadTXT(path): with open(path, "r") as file: result = file.read() return result # 写入文本文档 def WriteTXT(path, things): with open(path, "w") as file: file.write(things) for i in sys.argv[1:]: #result = subprocess.getoutput(f"apt info '{i}'") tempPath = f"/tmp/unpack-wine-{random.randint(0, 1000)}" #os.system(f"mkdir -p '{tempPath}/DEBIAN'") #result = ReadTXT(f"{tempPath}/DEBIAN/control") result = subprocess.getoutput(f"dpkg --info '{i}'") package = "demo" version = "1.0.0" for k in result.splitlines(): # 删除前后空格 k = k.strip() # 判断架构 if k[:8] == "Package:": package = k[9:].strip() if k[:8] == "Version:": version = k[9:].strip() if k[:13] == "Architecture:": arch = k[14:].strip() if arch != "all": print(f"需要转换架构:{arch}=>all") print("开始自动转换") os.system(f"mkdir -pv '{tempPath}'") os.system(f"dpkg -x '{i}' '{tempPath}'") os.system(f"dpkg -e '{i}' '{tempPath}/DEBIAN'") control = ReadTXT(f"{tempPath}/DEBIAN/control") newControl = "" for g in control.splitlines(): gNoSpace = g.strip() if gNoSpace[:13] == "Architecture:": newControl += "Architecture: all\n" continue if gNoSpace == "Multi-Arch: same": continue newControl += f"{g}\n" WriteTXT(f"{tempPath}/DEBIAN/control", newControl) os.system(f"dpkg-deb -Z xz -z 9 -b '{tempPath}' '{package}_{version}_all.deb'") os.system(f"rm -rfv '{tempPath}'") break