1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#!/usr/bin/python
import dbus
import gobject
from aptdaemon.client import AptClient
from aptdaemon.defer import inline_callbacks
from aptdaemon import policykit1
loop = gobject.MainLoop()
def on_finished(trans, exit):
loop.quit()
print exit
@inline_callbacks
def main():
repo = ["deb", "http://packages.glatzor.de/silly-packages", "sid", ["main"],
"Silly packages", "silly.list"]
aptclient = AptClient()
bus = dbus.SystemBus()
name = bus.get_unique_name()
# high level auth
try:
# Preauthentication
action = policykit1.PK_ACTION_INSTALL_PURCHASED_PACKAGES
flags = policykit1.CHECK_AUTH_ALLOW_USER_INTERACTION
yield policykit1.check_authorization_by_name(name, action, flags=flags)
# Setting up transactions
trans_add = yield aptclient.add_repository(*repo)
trans_update = yield aptclient.update_cache("silly.list")
trans_inst = yield aptclient.install_packages(["silly-base"])
yield trans_inst.set_allow_unauthenticated(True)
# Check when the last transaction was done
trans_inst.connect("finished", on_finished)
# Chaining transactions
yield trans_update.run_after(trans_add)
yield trans_inst.run_after(trans_update)
yield trans_add.run()
except Exception as error:
print error
loop.quit()
if __name__ == "__main__":
main()
loop.run()
|