44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import requests
|
|
import re
|
|
import json
|
|
|
|
# Logischer Name (wie im UI) → Launchpad-Quellpaketname
|
|
PACKAGES = {
|
|
"python3": "python3-defaults",
|
|
"nginx": "nginx",
|
|
"openssh-server": "openssh"
|
|
}
|
|
|
|
# Ubuntu-Release (muss auf launchpad.net vorhanden sein)
|
|
UBUNTU_RELEASE = "noble"
|
|
|
|
def get_version(pkg_source, release=UBUNTU_RELEASE):
|
|
try:
|
|
url = f"https://launchpad.net/ubuntu/{release}/+source/{pkg_source}"
|
|
r = requests.get(url, timeout=10)
|
|
if r.status_code != 200:
|
|
print(f"⚠️ Fehler {r.status_code} bei {url}")
|
|
return None
|
|
|
|
# Suche nach: Current version: <dd>VERSION</dd>
|
|
match = re.search(r'Current version:</dt>\s*<dd>([^<]+)</dd>', r.text)
|
|
return match.group(1).strip() if match else None
|
|
except Exception as e:
|
|
print(f"❌ Fehler bei {pkg_source}: {e}")
|
|
return None
|
|
|
|
def generate():
|
|
result = {}
|
|
for display_name, source_name in PACKAGES.items():
|
|
version = get_version(source_name)
|
|
if version:
|
|
result[display_name] = version
|
|
else:
|
|
print(f"❌ Keine Version gefunden für {display_name}")
|
|
return result
|
|
|
|
if __name__ == "__main__":
|
|
versions = generate()
|
|
with open("reference_versions.json", "w") as f:
|
|
json.dump(versions, f, indent=2)
|
|
print("✅ Referenz gespeichert in reference_versions.json")
|