refactor: use apt_pkg replace dpkg for version comparison

This commit is contained in:
wcbing 2025-05-14 00:42:42 +08:00
parent d1bffe02dd
commit 0a1d12e2fd

View File

@ -12,6 +12,9 @@ import requests
import sys import sys
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
from threading import Lock from threading import Lock
import apt_pkg
apt_pkg.init() # 初始化 apt_pkg
package_version = {arch: {} for arch in ["all", "amd64", "i386", "arm64"]} package_version = {arch: {} for arch in ["all", "amd64", "i386", "arm64"]}
package_info = {arch: {} for arch in ["all", "amd64", "i386", "arm64"]} package_info = {arch: {} for arch in ["all", "amd64", "i386", "arm64"]}
@ -92,13 +95,8 @@ def get_latest(deb_packages: bytes):
arch = find_arch.search(v).group(1).decode() arch = find_arch.search(v).group(1).decode()
tmp_version = find_version.search(v).group(1).decode() tmp_version = find_version.search(v).group(1).decode()
with lock[arch]: with lock[arch]:
if ( # 使用 apt_pkg 进行版本比较
name not in package_version[arch] if name not in package_version[arch] or apt_pkg.version_compare(tmp_version, package_version[arch][name]) > 0:
or os.system(
f"dpkg --compare-versions {tmp_version} gt {package_version[arch][name]}"
)
== 0
):
package_version[arch][name] = tmp_version package_version[arch][name] = tmp_version
package_info[arch][name] = v package_info[arch][name] = v
except Exception as e: except Exception as e: