11
import aptdaemon.gtk3widgets
19
""" show updates using update-manager """
20
cmd = ["update-manager", "--no-update"]
21
res = subprocess.call(cmd)
26
def _install_all_updates_aptdaemon():
27
from gi.repository import Gtk
28
from aptdaemon import client, enums
29
from aptdaemon.gtk3widgets import AptProgressDialog
30
client = client.AptClient()
31
trans = client.upgrade_system(safe_mode=True)
32
dia = AptProgressDialog(trans)
33
dia.connect("finished", Gtk.main_quit)
36
return trans.exit == enums.EXIT_SUCCESS
39
def _install_all_updates_synaptic():
40
cmd = ["/usr/bin/synaptic-pkexec",
41
"--dist-upgrade-mode",
44
"-o", "Synaptic::AskRelated=true",
46
return subprocess.call(cmd)
49
def install_all_updates():
50
""" install all updates either with synaptic or aptdaemon """
52
return _install_all_updates_aptdaemon()
54
return _install_all_updates_synaptic()
58
def _check_updates_aptdaemon():
59
from gi.repository import Gtk
60
from aptdaemon import client, enums
61
from aptdaemon.gtk3widgets import AptProgressDialog
62
client = client.AptClient()
63
trans = client.update_cache()
64
dia = AptProgressDialog(trans)
65
dia.connect("finished", Gtk.main_quit)
68
return trans.exit == enums.EXIT_SUCCESS
71
def _check_updates_gtk():
72
cmd = ["/usr/bin/synaptic-pkexec",
73
"--update-at-startup",
81
""" check for updates either with aptdaemon or synaptic """
83
return _check_updates_aptdaemon()
85
return _check_updates_gtk()
88
# start packagemanager
89
def start_packagemanager():
90
if os.path.exists("/usr/bin/synaptic-pkexec"):
91
cmd = ["/usr/bin/synaptic-pkexec"]
92
return subprocess.call(cmd)
93
elif os.path.exists("/usr/bin/software-center"):
94
return subprocess.call(["/usr/bin/software-center"])
96
logging.error("neither synaptic nor software-center installed")
100
def _add_cdrom_sp(mount_path):
101
from gi.repository import Gtk
103
import dbus.mainloop.glib
104
bus = dbus.SystemBus(mainloop=dbus.mainloop.glib.DBusGMainLoop())
105
proxy = bus.get_object("com.ubuntu.SoftwareProperties", "/")
106
backend = dbus.Interface(proxy, "com.ubuntu.SoftwareProperties")
107
backend.AddCdromSource()
108
backend.connect_to_signal(
109
"SourcesListModified", Gtk.main_quit)
110
backend.connect_to_signal(
111
"CdromScanFailed", Gtk.main_quit)
113
if os.path.exists("/usr/bin/software-center"):
114
subprocess.call(["/usr/bin/software-center"])
117
def _add_cdrom_synaptic(mount_path):
118
cmd = ["/usr/bin/synaptic-pkexec", "--add-cdrom", mount_path]
119
return subprocess.call(cmd)
122
def add_cdrom(mount_path):
123
if os.path.exists("/usr/bin/synaptic-pkexec"):
124
_add_cdrom_synaptic(mount_path)
126
_add_cdrom_sp(mount_path)
129
if __name__ == "__main__":
131
parser = argparse.ArgumentParser(
132
description='backend helper for update-notifier')
134
'--debug', default=False, action="store_true",
135
help='extra debug output')
136
subparser = parser.add_subparsers(title="Commands")
137
# show_update - update-manager
138
command = subparser.add_parser("show_updates")
139
command.set_defaults(command="show_updates")
140
# install_all - synaptic/aptdaemon install noninteractivly
141
command = subparser.add_parser("install_all_updates")
142
command.set_defaults(command="install_all_updates")
143
# check_updates - synaptic --reload/aptdaemon reload
144
command = subparser.add_parser("check_updates")
145
command.set_defaults(command="check_updates")
147
command = subparser.add_parser("start_packagemanager")
148
command.set_defaults(command="start_packagemanager")
150
command = subparser.add_parser("add_cdrom")
151
command.add_argument("mount_path")
152
command.set_defaults(command="add_cdrom")
154
args = parser.parse_args()
156
logging.basicConfig(level=logging.DEBUG)
158
logging.basicConfig(level=logging.INFO)
160
func_name = args.command
162
f = globals()[func_name]
163
if args.command == "add_cdrom":
164
f_kwargs["mount_path"] = args.mount_path