Python apt-get Liste Upgrades
Frage
Wie kann ich eine Liste der Upgrade-Pakete erhalten verfügbar und schreiben Sie es auf Datei mit Python?
Wenn ich laufen apt-get upgrade > output
es funktioniert in der Bash. Ich denke, ich habe das Trap-Signal ( Strg + C ) im Python-Programm zu senden.
Alle Vorschläge, wie dies zu erreichen?
Ich habe versucht, diese auf den Code jetzt:
#!/usr/bin/env python
import subprocess
apt = subprocess.Popen([r"apt-get", "-V", "upgrade", ">", "/usr/src/python/upgrade.log"], stdin=subprocess.PIPE)
apt_stdin = apt.communicate()[0]
, aber es tritt aus und schreibt nicht in die Datei.
Das funktioniert, aber ich bin immer Fehler, wenn ich Port dies zu anderen Debian-Systemen:
import apt
cache=apt.Cache()
cache.update()
cache.open(None)
cache.upgrade()
for pkg in cache.get_changes():
# print pkg.name, pkg.summary
fileHandle = open('/tmp/upgrade.log', 'a')
fileHandle.write(pkg.name + " - " + pkg.summary + "\n")
und der Fehler ....
/usr/lib/python2.5/site-packages/apt/__init__.py:18: FutureWarning: apt API not stable yet
warnings.warn("apt API not stable yet", FutureWarning)
Traceback (most recent call last):
File "apt-notify.py", line 13, in <module>
for pkg in cache.get_changes():
AttributeError: 'Cache' object has no attribute 'get_changes'
Lösung
Warum nicht verwenden, die Python-apt-Modul zB.
import apt
cache=apt.Cache()
cache.update()
cache.open(None)
cache.upgrade()
for pkg in cache.getChanges():
print pkg.sourcePackageName, pkg.isUpgradeable
Lesen Sie auch den Link in BADP Kommentar
Andere Tipps
Mit dem Python-Modul subprocess
und schließen stdin
das Kind Prozess zu sagen, dass es verlassen sollte.
Mit> Ausgabe in eine Datei zu umleiten ist etwas, das Shell tut. Ihr (aktualisiert) Code ist vorbei die> zu apt-get statt, die keine Ahnung hat, was mit ihm zu tun. Hinzufügen shell=True
zu Ihrem Aufruf von subprocess.Popen
wird die Argumentliste durch die Schale laufen erste, was die Weiterleitung funktioniert.