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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604
|
CHANGES (0.45):
* Enhancements:
- Support multiarch package names like apt-get, e.g. xterm:amd64
- Store the transaction role and sender in apt's history log
- Freeze (copy) the dpkg status file during a dpkg call to allow
simulating other transactions with the frozen dpkg status
- Share WhatProvides plugins with the Python APT PackageKit backend
- Allow to install global license keys, see below
- Add compatibilty for py-gobject 3.0 to the client module by switching
to gobject from introspection repository
- Add an apport package hook which collects information on every
unhandled crash to make solving bugs easier
- Avoid creating an apport crash report for valid DBusExceptions that
are send to the client (subclasses of AptDaemonError)
- Only create an apport crash report if it is enabled and aptdaemon
was started as a system service
- Improve error reporting in the case of DBus type conversions
- Unset the apt-listbugs frontend in non-interactive mode
- Replace the backported unittest2 framework by the native one of
Python 2.7 and Nose to collect the tests
- Speedup transaction start time by not marking changes in the cache
twice (at simulate and install time)
* API changes:
- what-provides plugin: Share this plugin with the Python APT backend
of PackageKit to allow other packages to specify providers for
mod aliases, GStreamer codecs or language support
- get-license-key plugin: Add this new plugin which gets the uid,
the package name, a json oauth token identifieng the customer
and a server name to retrieve a license key and the path to store it to
- org.debian.apt D-Bus interface:
o Add new AddLicenseKey method which allows to place a license key
file at the loaction specified in the record/control field
LicenseKeyPath of the corresponding package.
o Add the RebootRequired property. Should be quite self-explanatory
- org.debian.apt.transaction D-Bus interface:
o The Download and Space properties are now of type Int64
(signed 64-bit integer)
o The elapsed time, total and done bytes in the ProgressDetails property
are now of type Int64 (signed 64-bit integer). Furthermore the speed
is a now Double.
- org.freedesktop.PackageKit D-Bus interface: Initial implmentation
- org.freedesktop.PackageKit.transaction D-Bus interface: Initial
implementaion
- aptdaemon.client:
o New AptClient.add_license_key method
o Rename Transaction.disconnect() to Transaction._disconnect_from_dbus()
- aptdaemon.enums:
o Add enums for package states (e.g. PKG_INSTALLING or
PKG_CONFIGURING) and a corresponding description mapping function
get_package_status_from_enum()
o Add ERROR_NOT_SUPPORTED to indicate that a feature isn't yet implemented
* Add ERROR_SYSTEM_ALREADY_UPTODATE to indicate that there isn't any
need to upgrade the system
o Add STATUS_DOWNLOADING_REPO to indicate that the information of
available packages is downloaded from the repositories
- aptdaemon.errors:
o Add a new TransactionAlreadySimulating() error which gets emitted
if a transaction should be simulated but a simulation is already
performed currently
- aptdaemon.gtk3widgets.AptProgressDialog.run() is now deferable,
LP #819328
- aptdaemon.test.Chroot now has got new methods to handle faked cdrom
repositories: add_cdrom_repository(), mount_cdrom() and unmount_cdrom()
* Bug fixes:
- Fix untranslated status messages during installation, LP #641262
- Fix an error in the string decoding helper method
- Fix detection of a failed lintian check by convert the exit status
correctly
- Fix remaining watch_lock refactoring issues, LP #759023 and LP#764422
Thanks to Robert Roth!
- Catch a broken cache in the simulate method, LP #694505
- Queued transaction should show as waiting and not as running, LP #702442
- Catch broken and really large install sizes specified in third party
packages which result in an overflow error, LP #758837
- Fix argument handling in wait_for_lock call, LP #763642
- Map the dpkg disappear status, LP #762210
- Don't fail if the master_fd was already closed and the io callback is
still in the loop, LP #753928
- Convert messages of AptDaemonErrors to unicode, LP #761386
- Don't leak file descriptors during locking, LP #742935
- Handle interrupt signals correctly in the forked child
- Make sure to quit the forked child correctly on errors
- Fix cdrom test case
- Avoid apport crash reports for dpkg failures, LP# 799982
- Use apt_pkg.version_compare to detect already upt-to-date packages
instead of simple string comparison
- Fix --downgrade option of aptdcon
- Fix not supported errors in pkcompat
- Fix cancelling transactions
- Sync all properties of a transaction in the client before emitting
the finished signal (LP#747172)
- Fixes to piping the terminal (LP #733090)
CHANGES (0.43)
* Enhancements:
- If there are unsatisiefied dependencies show more details like
apt-get does
- Allow distributions to ship different lintian tag files (fatal and
non-fatal ones) - adds a depedency on lsb_release
- No longer take queued transactions into account to simulate
transactions (future status). The multi arch support adds to much
complexity.
- Automatically switch to non-interactive mode if the controlling terminal
of the client isn't available anymore
- Verify package names specified in aptdaemon DBus calls
* API changes:
- aptdaemon.gtkwidgets.AptProgressDialog.run() is now deferable,
LP #626798
* Bug fixes:
- Wait for the lock after dpkg has been executed instead of failing
LP #698170, #665572
- Don't overwrite DBusException.args in TransactionFailed leading to
empty error messages
- Fix policykit translations by dropping the gettext domain field from the
policy definitions, LP #690270
- Fix installing local packages which are not yet known to the cache
- Fix use of required_version in the gt3widgets, thanks pitti
- Fix the client add_repository call, thanks mvo
- Stop processing a transaction in the client if there has been an error
- Adapt gtkwidgets.AptProgressDialog.run() to latest API using
the sync() method of the transaction
- Call waitpid after reading the output from lintian, LP# 724859
- Allow package names containing an architecture separated by ":",
LP #750941
- gtkwidgets.AptProgressDialog.run() should call Transaction.sync() if
attach is True. Missing adoption to API changes.
- Don't segfault if we cannot read the status of the process holding a
lock - fixes LP #745517
- Fix UnicodeDecodeErrors, LP #724735, #745261, #742051, #749505, #707490,
#707490, #708964, #747037 and #706572
- Fix logging of Finished signals
CHANGES (0.42):
- IMPORTANT SECURTIY FIX, see CVE-2011-0725
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2011-0725
https://bugs.launchpad.net/ubuntu/+source/aptdaemon/+bug/722228
The UpdateCachePartially method allows to specify an alternative
sources.list snippet to only update the repositories specified in the
corresponding configuration file.
Aptdaemon did not restrict the path to the sources.list.d directory and
allowed to inject packages from malicious sources specified in a custom
sources.list and even to read every file on the system.
CHANGES (0.41):
- Greatly enhanced test suite by moving to unittest2, allowing to perform
package operations in a chroot and running tests on a local session dbus:
"dbus-launch unit2 discover"
- Improved error reporting
- Improved open progress. Thanks to mvo!
- Use sudo to run linitian as the user of the transaction
- Several bug fixes
* General API changes:
- Fix: Emit the properties and signals with the documentated static types.
* gtk3widgets Python module:
- There is now a gtk3widgets module which uses GTK 3.0 and pygobject (with
introspection). gtk3-demo.py is a corresponding port of gtk-demo.py.
* org.debian.apt.transaction D-Bus interface
- The sizes in the ProgressDownload are now of type long - following the API
changes in APT. Therefor the signature of the ProgressDownload struct
changed to "ssxxs".
API CHANGES 0.40:
* General:
- Checks .deb files with lintian before installing
- Apport integration provides additional information on exceptions
- Uses gettext domains in policy files
* org.debian.aptdaemon D-Bus interface:
- Allow to specify the to be installed/removed version of package. The package
name and version are separated by "=", e.g. "xterm=258-1".
- API BREAK: The CommitPackage method has got a new argument to downgrade
packages.
You have to specify the version of the to be downgraded packages.
- API BREAK: The InstallFile method now takes an additional argument force to
allow installing package files which violate the Debian/Ubuntu policy.
- Authentication for actions has been moved to the
org.debian.aptdaemon.transaction.Run(). This allows to simulate actions
without having to authenticate for it.
- Add a new transaction based action Clean() which allows to remove
cached downloaded package files.
- Add a new transaction based action Reconfigure() which allows to reconfigure
already installed packages using debconf.
- Add writable property PopConParticipation to control the participation
in the package popularity contest.
- Add writable properties AutoUpdateInterval, AutoDownload, AutoCleanInterval
and UnattendedUpgrade to control the behavior of the APT cron job.
* console client:
- Add a --details option to show the version number of to be changed packages
- Add --clean, --reconfigure and --priority option
* defer modules:
- Moved to a separate project python-defer
* enums module:
- Add ERROR_UNREADABLE_PACKAGE_FILE and ERROR_INVALID_PACKAGE_FILE to provide
finer error messages
* client module:
- The return value of wait=True in an async call is now the exit state of
the transaction instead of the Transaction instance. It behaves now
as documented and in the same way as sync calls.
- Add AptClient.clean(), see changes in the D-Bus interface
- Add AptClient.reconfigure(), see changes in the D-Bus interface
* PolicyKit privileges:
- Add a new org.debian.apt.clean privilege for removing downloaded
package files. It is granted by default to all active sessions.
- Add org.debian.apt.change-config privilege for changing the APT
configuration.
API CHANGES 0.33
* org.debian.apt D-Bus interface
- Make AddRepository() and EnableDistroComponent() transaction based.
- Add a new UpdateCachePartially() method which allows to only update
the repositories from a given sources.list snippet.
* org.debian.apt.transaction D-Bus interface
- Add a RunAfter() method to chain transactions.
- Add an Unauthenticated property to the transaction.
* client Python module
- Adapt to changes in the D-Bus interfaces.
* enums Python module
- Add new role enums ROLE_ADD_REPOSITORY and ROLE_ENABLE_DISTOR_COMP.
* policykit1 Python module
- Raise an AuthorizationFailed exception in a non-interactive check if the
user could obtain the privilege in interactive-mode (is_challenged)
* errors Python module
- Make the AuthorizationFailed error an inheritance of NotAuthorizedError
* PolicyKit1:
- Allow every active user to update the cache
- Merge install-packages, remove-packages and fix privilege into a new
install-or-remove-packages one
- Merge add- and remove-vendor-key privileges into change-repository one
- Remove upgrade-system in favour of upgrade-packages
- Allow set-proxy and cancel-foreign only by auth_admin
API CHANGES 0.32
* PolicyKit1:
- Add a new privilege org.debian.apt.set-proxy which allows to set an http
proxy server for a transaction. Currently every active user is allowed to
set a proxy for his or her transactions.
* entry points:
- Add modify_cache_before and modify_cache_after entry point which make
it possible for plugins to modify the to be installed or removed packages
of a transaction. See README.Plugins for further details.
* client Python module:
- Allow to convert all methods into Deferreds by using the deferable_function
decorator, see below for more details.
- Add a downloads attribute to AptTransaction. It contains a dictionary of all
processed downloads. The key is the uri of the download. The value is a
tuple of status enum, short description, full size, downloaded size and a
status/error message
- Add a progress-download-changed signal to AptTransaction which is emitted
when a download progress information changed, see above.
- Implement the wait arguement in the AptClient methods which are transaction
based. If True the transaction will be started immediately and the method
call will return when the transaction is finished.
- Add add_vendor_key_from_keyserver method, see AddVendorKeyFromKeyserver
* enums Python module:
- Add a set of DOWNLOAD_* status enumerations.
- Fix value of STATUS_DOWNLOADING: from status-downloadgin to
status-downloading
* defer Python module:
- Add inline_callbacks and return_value functions which allow to write
async code in a sync way. Works like the inlineCallbacks decorator from
the Twisted framework.
- Add deferable decorator which adds a defer attribute to the
decorated function and returns a Deferred instance. The callback of the
Deferred will be passed as reply_handler argument and the errback as the
error_handler argument to the decorated function.
* gtkwidgets Python module:
- Add to the AptConfirmDialog two methods which allow to override the rendered
objects and icons: map_package and render_package_icon
- Add AptDownloadsView class, which allows to show the sub progress of each
download
- Rename AptTerminalExpander to AptDetailsExpander and add a terminal
attribute to the __init__ call, since the expander now also shows
the download sub-progresses.
- AptProgressWindow now sets the proxy and debconf frontend during the
run call instead of during the set_transaction call.
* org.debian.aptdaemon.transaction D-Bus interface:
- Add a ProgressDownload property. It contains the last download progress
information that was recieved from APT. It is an array of uri, status enum,
short description, full size, downloaded size and an error/status message.
- Add AddVendorKeyFromKeyserver method to download and use a GnuPG which
is used for authenticating packages.
API CHANGES 0.31
* client Python module:
- Add AptClient.enable_distro_component method, see EnableDistroComponent
* org.debian.aptdaemon D-Bus interface:
- Add EnableDistroComponent method which enables a component for all distro
repositories, e.g. main or universe
API CHANGES 0.30
* client Python module:
- Change order of error_handler and reply_handler in the AptTransaction.run
method to be in sync with the other methods
- Add the dependencies, download and space attribute and the corresponding
*-changed signal to AptTransaction, see interface changes below
- Add a new AptTransaction.simulate() method, see interface changes below
- The AptDaemonError stored in client.AptTransaction.error was replaced by
a errors.TransactionFailed error. The APtDaemonError has been removed
from the client module.
- The DBus exception will be converted to native ones which are shared
with the daemon. E.g. The DBusException with the error name
"org.debian.apt.TransactionRoleAlreadySet" will be a
TransactionRoleAlreadySet instance instead. This makes error handling
easier since you can use try/except without having to compare the
_dbus_error_name attributes.
* errors Python modules:
- Rename APTDError to AptDaemonError because of readabilty
- Add convert_dbus_exception decorator which converts DBus exception
raised in a function to native ones. Also takes asynchrous calls
into account.
- Move NotAuthorizedError from policykit1 to the errors module
* enums Python module:
- Use strings instead of integers for STATUS_*, EXIT_*, ROLE_* and ERROR_*
enum. See interface changes for additional information
- Add new enum EXIT_UNFINISHED
* org.debian.aptdaemon.transaction D-Bus interface:
- The Exit, Status, Role and Error property and the Finished signal now
use strings for the enums. This helps to make debugging a lot easier.
- Add Simulate method which calculates the dependencies, the download size
and the to be used disk space of the transaction. Furthermore it raises
a "org.debian.aptdaemon.errors.TransactionFailed" if the transaction
could not be performed.
The Simulate call also takes all previously queued or currently running
transactions into account. So you can simulate the removal a package
if the installation of it is still in the queue.
- Add new properties Dependencies, Download and Space, see above.
API CHANGES 0.20
You don't have to request a transaction, set it up and call the whished action
on it aynmore. Instead you call the action, e.g. UpdateCache, on the daemon
interface which will return the id of a newly created transaction. After settingit up you have to call its Run method.
* org.debian.aptdaemon D-Bus interface:
- Add InstallPackages, InstallFile, RemovePackages, CommitPackages,
UpgradePackages, UpgradeSystem, AddVendorKey, RemoveVendorKey, UpdateCache
method. Each method creates a new transaction and returns its tid.
- Remove RequestTransaction method
- Add new FixIncompleteInstall method which basically runs dpkg --configure -a
- Add a new FixBrokenDepends method wich tries to correct dependencies
* org.debian.aptdaemon.transaction D-Bus interface:
- Remove InstallPackages, InstallFile, RemovePackages, CommitPackages,
UpgradePackages, UpgradeSystem, AddVendorKey, RemoveVendorKey, UpdateCache
method. They are now part of the org.debian.aptdaemon interface.
- Add a Run method which queues the transaction.
- Add PropertyChanged signal - should be used instead of the deprecated
signals. Signal matchers are quite limited on the system bus by default.
- Add ProgressDetails, RequiredMedium, ConfigFilePrompt, ExitState, Error,
Locale, AllowUnauthenticated, Terminal, DebconfSocket, Packages,
MetaData and RemoveObsoletedDepends properties.
The Packages property keeps a lists of packages which should be installed,
reinstalled, removed, purged or upgraded. Currently this doesn't work for
UpgradeSystem.
The MetaData property allows clients to store additional meta data in the
transaction. See man page org.debian.apt.transaction(7) for the format.
- Rename the AllowCancel property to Cancellable and the AllowTerminal one
to TerminalAttached - helps to make a difference between allowing
from the client and daemon side e.g. AllowUnauthenticated.
- Remove Message signal and the concept of having non-critical fail states
on the daemon side. The decision is up to the client e.g. if a system
could not be fully updated.
- Remove the Role, Status, AllowCancel, AllowTerminal, StatusDetails,
Progress, ProgressDetails signal - PropertyChanged signal should be used
instead.
- Remove the Attach method - GetAll on the properties interface
should be used instead.
- Rename property ConfigFilePrompt to ConfigFileConflict and the method
AnswerConfigFilePrompt to ResolveConfigFileConflict
* client Python module:
- The exit_handler was removed from the AptDaemonClient methods, instead it
now supports (reply|error)_handlers to call the method asynchronously and
furthermore a wait statement to return after the method is complete.
- Add public attributes to the Transaction class and remove get_* helpers:
role, error (stores an AptDaemonError instance), error_code, error_message,
exit_state, cancellable, term_attached, required_medium,
config_file_prompt, status, status_details, progress, progress_details,
paused, remove_obsoleted_depends
The properties are automatically updated by the PropertyChanged signal
matcher.
- Rename GObject signals of the Transaction class:
- role -> role-changed
- status -> status-changed
- allow-cancel -> cancellable-changed
- allow-terminal -> terminal-attached-changed
- status -> status-changed
- status-details -> status-details-changed
- progress -> progress-changed
- progress-details -> progress-details-changed
- config-file-prompt -> config-file-conflict
- Rename method config_file_prompt_answer to resolve_config_file_conflict
- Add GObject signals to the Transaction class:
- meta-data-changed
- paused
- resumed
- locale-changed
- allow-unauthenticated-changed
- remove-obsoleted-depends-changed
- debconf-socket-changed
- The methods Transaction.set_(locale|allow_unauthenticated|data|
debconf_socket|remove_obsoleted_depends) reply with the transaction
instance if called async. This makes queing much easier.
- Remove messages attribute from the Transaction class, see above
- Remove Transaction.attach method in favour of a new sync method which uses
the GetAll method on the D-Bus properties interface.
- Add set_meta_data method which accepts pairs of key=value
* PyGTK widgtes:
- On the one hand the run method of AptProgressDialog doesn't provide a way
to wait until the transaction is done anymore (by iterating on pending gtk
events), but on the other hand it now allows to show an error dialog if
required (show_error argument) or to close the progress window
automatically when the transaction is finished (close_on_finished arguement).
- Rename AptConfigFilePromptDialog to AptConfigFileConflictDialog
|