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'
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top