~pitti/aptdaemon/pkcompat-enhancements

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
AptDaemon optionally is capable of providing the PackageKit system D-Bus
interface (see http://www.packagekit.org/gtk-doc/api-reference.html). The goal
is to provide the complete PackageKit API to run client applications smoothly.
There won't be any additions or changes to the original PackageKit API.


Unsupported or not fully covered methods:

 * org.freedesktop.PackageKit:

  - CanAuthorize (currently always returns interactive)
  - GetTimeSinceAction - could make use of the apt history
  - GetDaemonState - for debugging purposes only
  - SetProxy (should we change the apt config?)
  - SetRoot (support is already available in aptdaemon for chaning the root)

 * org.freedesktop.PackageKit.Transaction:

  - GetOldTransaction
  - SetHints (cache_age doens't make any sense with APT, interactive and
    background/idle not yet implemented, locale and frontend_socket working)


Issues and shortcomings:

 - Authentication happens during the Run call of the original aptdaemon
   transaction. This results in time outs with PackageKit client of version
   prior 0.7.3
 - Messages are not used (possible candidates could be UNTRUSTED_PACKAGES,
   NEWER_PACKAGE_EXISTS, CONFIG_FILES_CHANGED, OTHER_UPDATES_HELD_BACK)
 - The post update hook (/etc/apt/apt.conf.d/20packagekit) cannot call
   StateHasChanged since caller and callee are the same process (aptd) and
   the call is blocking
 - Repository signals are not used by UpdateCache - it makes sense to also
   add this to aptdaemon in a different way
 - Short descriptions of dependencies in the Simulate calls are not available
 - Translations of package description don't work
 - Should we add support for PackageKit's PolicyKit Actions? How should
   CanAuthorize behave? Would be better if CanAuthorize accepts
   role ids instead of action ids.
 - RestartSchedule and RepoListChanged signals don't get emitted


Supported roles:

 - Get(Packages|Depends|Requires|Details)
 - (Download|Install|Remove|Update)Packages
 - Simulate(Install|Remove|Update)Packages
 - GetUpdates
 - GetUpdateDetail
 - GetDistroUpgrades
 - UpgradeSystem
 - WhatProvides (no builtin handling, only plugins)
 - RepoEnable: (only enabling, not disabling)
 - InstallSignature

Not yet supported roles:

 - GetCategories: Curently groups are still used, would be nice to reuse the
       categories from software-center
 - GetRepoList: not implemented in the worker
 - RepoSetData: not implemented in the worker
 - InstallFiles: not implemented in the worker
 - SimulateInstallFiles: not implemented in the worker
       sessioninstaller.

Roles we won't support at all because of missing infrastructure in APT:

 - AcceptEula: there isn't any equivalent mechanism in Debian/Ubuntu. Most
       packages mis-use debconf for this.
 - Rollback: downgrades are not supported by Debian/Ubuntu, perhaps in
       the future apt-brtfs could be worth looking at.

Supported filters:

 - (not)installed
 - (not)free
 - (not)gui
 - (not)devel
 - (not)collections
 - (not)supported
 - (not)newest

Not yet supported filters:

 - (not)basename
 - (not)application
 - (not)source
 - (not)arch

Thanks to Richard Hughsie for his work on PackageKit!