[4/2/2011] Version 0.6.4 "Spring is sprung" This version of aptitude requires apt 0.8 and will not build against earlier releases. - Security fixes: * [curses]: Fixed an arbitrary overwrite triggered by saving changes in the hierarchy editor, if the current user's home directory couldn't be determined. (Closes: #612034) - Crashes and serious errors: * [all]: Don't crash when apt-xapian-index isn't installed. (Closes: #588089) - Interprets "~" as "?name(~)" instead of "?term(~)" - If the Xapian index isn't available, attempts to mimic its behavior to a first approximation: not perfectly, but enough to make ?term and ?term-prefix do something sensible. * [all]: Restore aptitude's old treatment of the auto flag, meaning that instead of clearing the flag when the user asks to upgrade a package, we leave it set. Worked around a change in apt's behavior by forcibly preserving the auto flag's setting regardless of what pkgDepCache::MarkInstall thinks is right this week. (Closes: #622719) - New features: * [curses]: Add a "source" grouping policy that groups packages by their source package name. Thanks to Thadeu Lima de Sourza Cascardo for the patch, sorry it took so long to apply! (Closes: #497206) - Minor bugs: * [all]: Fixed the debug logging code to output TRACE-level messages. * [all]: Fixed the debug logging code to properly allow log levels to be disabled. * [all]: Fixed the resolver cost levels for installs and upgrades. - Internal changes: * [all]: Include the current time and thread ID in all debug log messages. * [cmdline]: Refactor terminal handling to simplify some of the tests. * [qt]: Added the beginning of a Qt frontend, thanks to SoC 2010 student Piotr Galiszewski. Not really in a usable state yet. * [all]: Fixed build errors with gcc 4.6 (Closes: #624948) - Cosmetic and UI bugs: * [cmdline]: Overhaul how download progress is displayed at the command-line. Fixes problems on large terminals and should provide less glitchy behavior in general. - Build system changes: * [all] Use $(srcdir) whenever $(wildcard) is used, so wildcarded files get picked up even when the build directory is not the source directory. * [all] Build src/generic/util before src/generic/apt (which depends on it). * [all] Multiple fixes to get VPATH builds working properly. * [doc]: Added a doc-fo target that builds (very rough) PDF documentation if you have fop installed. * [gtk] If the GTK+ frontend isn't built, don't try to build tests that require it. [6/18/2010] Version 0.6.3 "Sunlight, moonshadow" This version of aptitude fixes some crashes that occurred when exiting the program and overhauls how progress is displayed from the command-line. aptitude now requires google-test and google-mock; it will work with newer versions of libept and older versions of boost; it no longer requires log4cxx. - New features: * [cmdline] Modified the command-line progress counters so that they're erased when they complete instead of leaving cruft behind. The old behavior and appearance can be recovered by Aptitude::CmdLine::Progress::Retain-Completed and Aptitude::CmdLine::Progress::Percent-On-Right to "true". - Crashes and serious errors: * [all] Ditching log4cxx will hopefully fix some of the crashes on exit that people were seeing. - Cosmetic and UI bugs: * [cmdline, curses] Fixed the display of the archives associated with a version so that duplicated archive names are never displayed. - Internal changes: * [gtk] Started working on a redesign of the GTK+ interface, both internal and external. The internal half involves refactoring the code to better separate logic and presentation and to improve testability and code reuse. The external half adds the groundwork for a redesign of how the UI is arranged at the top level. This code is very incomplete and currently disabled by default. * [cmdline] The progress changes noted above included some refactoring to make the command-line interface easier to unit test. In particular, I created a terminal abstraction that could be stubbed out for the purposes of testing. Currently this is only used for the progress code, but it's likely to become more widely used as time goes on. - Changes for build dependencies: * [all] Stopped using log4cxx in favor of a homegrown module. We're really only using it for debug output, so its most powerful features aren't useful for aptitude. At the same time, it appears to be behind some of the crashes on exit that users have reported, and it's never really integrated well into the program (the initialization process has always been a hack). The new code is much better suited to aptitude's requirements. * [all] Added appropriate configure checks and conditionalization to support building against either the current ept release or the upcoming release. (Closes: #581009) * [all] Write a proper configure check to detect the calling convention used by boost::fusion::fold(); don't require Boost 1.42 any more. - Build system changes: * [all] Added a build system based on scons. scons supports fully parallel builds and variant builds without reconfiguration, which should speed up the build process significantly on multi-core machines. * [all] Switch from automake 1.9 to automake 1.11. [4/21/2010] Version 0.6.2.1 "I didn't know it was a real zebra!" - Crashes and serious errors: * Fixed a crash caused by being insufficiently careful about NULL pointers in the resolver. (Closes: #578344) * Boost 1.42 changed the order of arguments to fusion::fold(), breaking aptitude. As an interim measure, I have modified configure to require 1.42 or higher, and fixed the argument order. The correct long-term fix here is to do a feature test to see which order fold expects its arguments in. - Backwards compatibility fixes: * Restored the "conflict" safety level/tier. * Fixed a bug that meant that the old configuration option names (*-Tier instead of *-Level) could only be used to increase safety levels, not to decrease them. - Internal changes: * Change the incremental_expression subsystem of the resolver to be fully robust against NULL pointers and write unit tests for it. * Reduced the number of explicit dependencies on log4cxx (using indirection), in case I decide to resolve the random crashes it causes by switching to some other framework or rolling my own. [4/18/2010] Version 0.6.2 "A costly proposition" - New features: + [all] Resolver tiers are dead, long live resolver costs. The resolver now supports a flexible system of multi-leveled costs, in place of the fairly rigid tiers of previous releases. The default behavior emulates how tiers worked, but the resolver can also be configured with custom cost vectors by setting Aptitude::ProblemResolver::SolutionCost to something like this: canceled-actions + 2*removals, ignored-recommends, installs That says to minimize the number of packages kept at their current version plus twice the number of removals (i.e., a removal counts for two keeps). Within that group, ties are broken by looking at the number of Recommends that were ignored, and within that group, ties are broken by looking at the number of new packages the resolver wants to install. In addition to custom cost vectors, resolver hints can be used to create completely custom costs. See the reference manual for full details. This is not optimized and I expect that pushing it to the limits will show off all sorts of exponential explosions. Have fun! + [cmdline] Implemented an "aptitude versions" command that I've been kicking around for a while, to display and search for individual package versions. Documented in the manpage, but here are some highlights: $ aptitude versions apt i 0.7.25.3 unstable 500 p 0.7.26~exp3 experimental 1 $ aptitude versions '^apt$ ?installed' Package apt i 0.7.25.3 unstable 500 $ aptitude versions xserver-xorg udev Package udev: i 151-2 100 p 151-3 unstable 500 Package xserver-xorg: i A 1:7.5+3 100 p A 1:7.5+5 unstable 500 $ aptitude versions --group-by=source-package '?name(aptitude)' Source package aptitude: i aptitude 0.6.1.5-2 100 p aptitude 0.6.1.5-3 unstable 500 i aptitude-dbg 0.6.1.5-2 100 p aptitude-dbg 0.6.1.5-3 unstable 500 i aptitude-doc-cs 0.6.1.5-2 100 p aptitude-doc-cs 0.6.1.5-3 unstable 500 (... many more lines of output snipped ...) - Crashes and serious errors: + [cmdline] Don't crash if the user sets a rejection at the internal command-line via package name and version rather than using the new pick-by-numbers UI. (Closes: #567242) + [cmdline] Don't crash if the user asks to see information about a removal. + [cmdline] Don't crash in "aptitude changelog" when the package given on the command-line doesn't have a valid version (Closes: #576318). Thinks to Dmitry Semyonov for the patch. - Cosmetic and UI bugs: + [curses] Don't leave a download progress bar hanging around after downloading a changelog. (Closes: #566205) - Internal changes: + [all] Replaced mktemp() with a custom function doing a similar thing (albeit with slightly better randomness). This eliminates the spurious linker warning I've been ignoring for five years: the linker has no way to know that I only use mktemp() to create names in a mode 0700 directory, which is about the only way to use it safely. [1/20/2010] Version 0.6.1.5 "All around the dependency bush, the monkey chased the weasel..." - Crashes and serious errors: + [all] Changed the default resolver configuration so that removals and "safe" actions are grouped together. Without this change, aptitude was being too conservative and failing to solve simple upgrades. (Closes: #565867) The safe-upgrade resolver is unaffected by this change, since it uses explicit constraints to prevent removals from being installed. - Cosmetic and UI bugs: + [test] Eliminated a spurious error message that was being printed by the cppunit unit tests. + [curses] Fixed the progress display and error reporting for changelog downloads. - Documentation: + [doc] Added a note in the manpage explaining the principles of the Linux command-line to hopefully forestall future bug reports telling me that the manpage for "aptitude search" contradicts the user manual. (Closes: #566003) [1/17/2010] Version 0.6.1.4 "You can't take the sky from me." - New features: + [gtk] The status of each changelog download is now displayed in the space where that changelog will appear. + [cmdline] When aptitude displays a resolver solution, it now displays a number next to each entry in the solution. This number can be used to manipulate the corresponding entry (for instance, to reject it or to view information about it). This makes it much more convenient to use the command-line resolver interactively. - Crashes and serious errors: + [all] Be paranoid about the sign of file offsets (on some architectures they're apparently signed). (Closes: #557212) + [all] Fix various include and compilation errors revealed by the new version of g++ being stricter. (Closes: #531687, #560517) + [all] Use pthread_sigmask() instead of sigprocmask() on startup to avoid problems on architectures where sigprocmask() behaves poorly in multi-threaded processes. (Closes: #559980) + [gtk] Fix a startup crash caused by not properly protecting the call to Glib::thread_init(). (Closes: #555120) - Cosmetic and UI bugs: + [cmdline] Document the flags that are shown after packages in the preview. + [cmdline] Instead of showing broken packages in their own group, show them in the group they would normally appear in but with a "b" flag. It was somewhat confusing that packages which were being installed but had broken dependencies showed up in the "broken" section instead of the "install" section. Packages that are unchanged and have broken dependencies won't show up in the preview any more, but they will show up just below it, in the list of packages with broken dependencies. + [all] Eliminate spurious error messages from log4cxx. (Closes: #557150) - Internal changes: + [all] Download changelogs using the new internal download queue, not the download_manager system. Fixes random crashes at shutdown. + [gtk] Wrote the first draft of some harness code that will underpin a redesign of the main window. Currently this is unused. [11/19/2009] Version 0.6.1.3 "Too many cooks put lots of beans in the soup." - Build system fixes: + [doc] Fixed the Makefile for the Spanish translation of the documentation so that it honors DESTDIR. [11/19/2009] Version 0.6.1.2 "I think I can, I think I can..." - Crashes and serious erroors: + [all] Modified the new temporary file module so that it doesn't rely on the order in which global destructors run. This was causing an abort when the program exited if it was built with optimizations. - Internal changes: + [test] Wrote an additional unit test verifying that the program's temporary directory is really deleted when it exits. [11/19/2009] Version 0.6.1.1 "Again with the bug-writing." - Crashes and serious errors: + [test] Fixed the test code to actually compile against the new temp API (major oops there). + [all] Fixed the temporary directory code to create directories in $TMPDIR rather than ".". [11/18/2009] Version 0.6.1 "Instant toll logging." - New features: + [gtk] Support for automatically downloading screenshots from screenshot.debian.net. Eventually the screenshots will probably show up in a few more places, such as the update preview and package lists (but this will require careful coding to only download screenshots that are visible). - Internal changes: + [all] aptitude now has a generic global download queue. This is actually implemented with the apt download queue object, but it runs all downloads in the background, integrates with aptitude's download cache, and provides support for getting status information on individual downloads and canceling them. This new queue is used to implement screenshot support. + [all] Overhauled how temporary files are created. aptitude will now create only one entry in $TMPDIR, and it will make a stronger effort to delete all its temporary directories when it exits normally. Abnormal exits (i.e., signals) will still leave cruft behind, but at least it's only one file and not dozens per run. - Crashes and serious errors: + [all] Don't support trying to block the foreground thread while dependencies are solved; doing so is very deadlock-prone and was causing deadlocks in practice. + [all] Fix several places where the "why" code dereferenced version iterators without checking whether they were valid, causing a crash. (Closes: #546446) + [gtk] Fix several crashes in the resolver tab caused by trying to generate tooltips using invalid version objects. + [gtk] Properly disconnect signals from the background thread in the dashboard tab, instead of occasionally crashing when one is delivered after they should have been disconnected. + [gtk] Fix a potential deadlock that could have occurred if the main thread posted lots of thunks to itself. - Minor bugs: + [all] The resolver will now ignore recommendations that are already unresolved on the system, rather than trying to fix them every time any dependency needs to be solved. (Closes: #556042) + [curses] Fix becoming root with the "su" protocol. (Closes: #552471) - Cosmetic and UI bugs: + [all] Correct how we decide when the resolver is out of solutions. + [all] Work around a spurious error message generated by apt. (Closes: #526661) + [cmdline] The message that no packages are being installed, removed or upgraded is more accurate now. + [cmdline] Another preview is shown after the resolver runs even if -y was passed on the command-line. + [cmdline] Exit without prompting if the user tells the dependency solver to cancel all of their changes. (Closes: #556866) + [gtk] Fix a typo in one of the resolver tab's tooltips. + [gtk] Fix the resolver tab to only show a new solution when the user explicitly asked for one. [10/25/2009] Version 0.6.0.1 "Who's laughing now?" - Build system fixes: + [all] Actually distribute the auxiliary data for the unit tests. Hopefully this means that the unit tests can actually pass in the distributed tarfile. [10/25/2009] Version 0.6.0 "Stick a fork in it, it's done." - Internal changes: + [all] The file cache now supports storing the last modification time of cached files. Currently this isn't used (changelogs are assumed to be up-to-date anyway), but future code will need this. + [gtk] Factored out the common parts of the background threads that handle changelog downloading into a generic utility class. - Minor bugs: + [all] Load the download cache in apt_init() instead of apt_preinit(). Avoids complaints from log4cxx if there are errors, and also ensures that we have a download cache even if the apt cache was closed and reopened. + [all] Add some missing #includes that showed up when NLS wasn't enabled. - Build system fixes: + [all] Don't include files in POTFILES.in that aren't distributed. Hopefully this will prevent the unnecessary junk that was getting into the Debian diff. [10/12/2009] Version 0.5.9rc4 "Trust me, you don't want to know about the spork." - New features: + [all] The test to see whether a changelog is in aptitude's download cache now takes place in a background thread. + [gtk] When generating the upgrade summary, aptitude caches a parsed version of the portion of each changelog that's displayed. This makes the changelogs show up much faster and with a lot less system load. + [gtk] The second tab in the upgrade view now displays information about the currently selected package, rather than its full changelog. + [gtk] "aptitude --version" prints the versions of GTK+ and GTK-- that it was compiled against. - Crashes and serious errors: + [all] Fix how the background dependency solver thread communicates with the foreground thread to eliminate at least one deadlock. - Cosmetic and UI bugs: + [curses] Don't print a spurious warning if we get --no-gui when the GTK+ frontend was compiled out. (Closes: #550727) - Build system fixes: + [gtk] Make "./configure --enable-gtk" enable GTK+ instead of disabling it. [10/8/2009] Version 0.5.9rc3 "The stars, like little starry things..." - New features: + [cmdline] Package versions can be chosen by codename as well as by archive. (Closes: #547707) + [all] Not exactly a new feature, but reverted from dpkg-parsechangelog to parsechangelog: both of them require extra dependencies, and parsechangelog is faster. (Closes: #546280) - Crashes and serious errors: + [all] Don't crash if the Xapian database fails to load. (Closes: #512998) + [all] Recognize --no-gui even in non-GUI builds, so switching to root can just always pass it. (Closes: #546406) + [all] Don't discard errors after dpkg fails. (Closes: #548879, #548889) + [gtk] Don't crash when displaying the file list of a package that's not installed. - Cosmetic and UI bugs: + [curses] Block SIGWINCH by default so that cwidget can sigwait() on it. (Closes: #547212) + [cmdline] Mention build-dep in "aptitude help". (Closes: #547151) + [cmdline] Consistently use a full-stop at the end of "--help" lines. + [cmdline] Fix an incorrect message that stated that a package was not installable, rather than that it was not going to be installed. + [cmdline] Make --arch-only do what it should instead of the opposite. (Closes: #547266) + [gtk] Make the "hold" command hold packages instead of deleting them. (Closes: #549897) + [gtk] Use a single thread for all changelog downloads, to avoid spawning as many instances of parsechangelog as there are changelogs. I really should move the extraction of changelogs from the cache to a background thread as well; it takes ages to extract every last changelog if there are a lot, and I should be able to start parsing them as soon as the first one is extracted. - Documentation: + [doc] Mention Get-Root-Command in the section on "becoming root". (Closes: #548657) + [doc] Correct the default value of Get-Root-Command to match the code. (Closes: #550057) - Translation updates: + Danish (Closes: #546497) + French + Portuguese (Closes: #522445) + Russian (Closes: #535806) + Spanish [9/9/2009] Version 0.5.9rc2 "Over five served." - Crashes and serious errors: + [all] Fix a bug in the logic to filter package actions so that only actions initiated by apt's greedy resolver are affected, rather than all actions. [9/8/2009] Version 0.5.9rc1 "The only way to win is not to play." First release candidate for 0.6.0. Due to the length of time it's taken me to prepare this and to the new Debian release cycle, I'm releasing 0.6.0 before the GTK+ interface is really complete; it's still in an experimental state. However, several of the other changes in this release should really be rolled into the mainline before the Debian release (particularly the improvements and optimizations to the dependency solver). This version disables the full-text Xapian search by default, although it can still be accessed via ?term(). Version 0.5.9rc1 - New features: + [all] Internal file cache for auxiliary downloads, based on the binary file engine SQLite and the Boost zlib wrapper. This will substantially speed up the GTK+ interface's startup time when it's just downloading the same thirty changelogs it was showing before, and will be even more helpful once aptitude can show screenshots. Hopefully it will also reduce the load on the Debian network infrastructure. + [all] aptitude now uses the new hooks in apt to prevent the greedy resolver from removing packages or breaking holds. (Closes: #177374, #205049, #374353, #376802, #406506, #430816, #434731, #442420, #452589) + [all] aptitude now uses dpkg-parsechangelog to parse changelogs instead of parsechangelog, courtesy of Frank Lichtenheld's patch in 2007. This means that it no longer requires libparse-debianchangelog-perl to show changelogs. + [all] "aptitude update" now honors the configuration options APT::Get::List-Cleanup and APT::List-Cleanup. (Closes: #448958) + [cmdline] "aptitude safe-upgrade" now supports listing extra actions on the command-line, just like "install", "remove", etc. If any actions are listed, then only the given actions are performed (the blanket upgrade is skipped). Packages with no qualifications give a list of the packages that should be upgraded; if they aren't installed or aren't upgradable, they're ignored. + [curses] The commands to clean the package cache and to delete obsolete files now support automatically becoming root. (Closes: #492832) - Crashes and serious errors: + [all] Fix some crashes that occurred when viewing dependency solutions. + [all] Make "aptitude update" correctly clean up the list download directories. (Closes: #507603) + [all] Disable Xapian full-text search by default; it's still available via the ?term pattern. Feedback on this "feature" was uniformly negative; it seems to be flaky and not very useful. Maybe it would be useful with more work, but it won't be ready for Squeeze. (Closes: #527540, #538198, #514625) + [cmdline] Fix a bug that caused lots of extra "unresolved recommendations" to be displayed in dependency solutions. + [curses] Fix a crash on exit that was caused by having dangling boost::flyweight objects when the global destructor was invoked (arguably this is a bug in Boost; we might want to consider moving away from flyweights for this reason). + [curses] The auto-su-to-root code now passes --no-gui, so it should actually work again (rather than popping up a graphical UI). - Cosmetic and UI bugs: + [all] Fix some corner cases in the serialization of search patterns, such as the new "enhances" dependency type. + [curses] Hopefully fix pattern-based grouping in the curses UI. + [curses] Add descriptions of the new ftp sections to the default sections file (thanks to Miroslav Kure). + [gtk] Make more of the UI translatable (thanks to Miroslav Kure). + [gtk] Don't attempt to translate the empty string when displaying the state of a package that's unchanged. - Documentation: + [doc] Document that full-upgrade and safe-upgrade take extra actions on the command-line. (Closes: #268696) + [doc] Document that the "standard" apt options should be used instead of Keep-Suggests and Keep-Recommends. (Closes: #540230) - Translation updates: + Czech (Closes: #545144) + French + Spanish [7/21/2009] Version 0.5.3.1 "Sky without end" - Build system fixes: + Fixed the Spanish documentation Makefile to use DESTDIR. - Translation updates: + Slovak (Closes: #521052) [7/20/2009] Version 0.5.3 "The Aardvark Contingency" This version of aptitude now requires GTK+ 2.16 or greater and GTK-- 2.16 or greater. - Crashes and serious errors: + [gtk] Don't crash when displaying a solution that cancels the installation of a package. (Closes: #525898) - Internal changes: + [all] Rewrote the resolver code to trade memory for time. Large dependency problems should be processed in about 20% of the time that previous versions took. - Cosmetic and UI bugs: + [gtk] Some redesigns to the GTK+ UI (Thanks to Arthur Liu). + [gtk] Display package short descriptions in the resolver tab. + [gtk] Display the search progress bar behind the text of the search term (requires GTK+ 2.16 or greater). - Translation updates: + Asturian (Closes: #521558) + Finnish (Closes: #531582) + Spanish: added translation of the user's manual. [4/26/2009] Version 0.5.2.1 "Albatross!" - Crashes and serious errors: + Don't crash when tabs are closed from the menu or using Ctrl-W. - Internal changes: + [gtk] Always use trampolines (via the main loop's idle handler) to delete tabs, to hopefully avoid bad interactions when a tab is closed as a side effect of some other action. - Cosmetic and UI bugs: + [gtk] Eliminated some warnings that were caused by modifying a tree model while iterating over its selection list. + [curses] Work around some buggy terminals so that the progress bar doesn't get truncated or corrupted. (Closes: #455220) + [cmdline] Change the "last-package" summary mode to "first-package". aptitude prints the package that's selected by this option at the beginning of a chain, so it seems counterintuitive to me to call it the "last" package. + [cmdline] Renamed the configuration option "Aptitude::Why-Display-Mode" to "Aptitude::Show-Summary", to match the command-line flag that it corresponds to (--show-summary). + [cmdline] Removed a stray space in the output of "aptitude why". - Documentation: + [doc] Document --show-summary and Aptitude::CmdLine::Show-Summary. + [doc] Use rsvg instead of Inkscape to convert svg diagrams to png files for the time being. Also cropped rsvg to the drawing boundaries. + [doc] Add search-tier-diagram.svg to the distributed .tar.gz file. - Translation updates: + French [4/22/2009] Version 0.5.2 "Ramparts of the Dawn" This release merges in the work that was done on the lenny branch of the program but not the post-lenny one (mostly translation work). KNOWN BUGS: + Ctrl-W should close a tab, but instead it crashes the program. Do not press Ctrl-W and you will be happier. + When you reject or accept a resolver choice, the corresponding row in the solution might not update to reflect your change. If you switch to another solution and back, it will update correctly. - New features: + [all] aptitude now uses liblog4cxx to provide diagnostic logging of much of the program. + [all] The aptitude dependency solver now supports a "tiered search". Hopefully this will make dependency resolution more predictable and allow more meaningful configuration. In particular, removals are not attempted until all solutions involving only keeps, installs and upgrades are exhausted, and solutions involving versions that aren't the default candidate are deferred until removals are exhausted. See the user's manual for details. Closes: #514820, #514930, #524221, #473296 + [gtk] The resolver tab has been completely overhauled. It now supports all the features of the backend dependency solver, and it has an interface that is much more suitable for a GTK+ program. + [gtk] The dpkg tab now attempts to detect when something is waiting for input, by keeping track of how long it's been since dpkg sent a status message. When input is available, the "view details" button is flashed to hopefully get the user's attention. + [gtk] The procedure for upgrading has been streamlined. aptitude computes an upgrade in the background automatically using the same algorithm that backs "safe-upgrade". The user can either accept the solution or try to fix the remaining dependencies manually. + [cmdline] Added a new command-line option, "--show-summary", to the "why" command-line action. This option causes aptitude to show a brief list of the first package in each dependency chain that would have been displayed. So combined with the "-v" option, you can easily get a list of all the manually installed packages that require a given package. + [gtk] When the user clicks on a package in the dashboard's list of upgrades, the changelog display automatically scrolls to that package. + [gtk] Some common notifications are now marked with the icon of the task they're performing. + [gtk] Initial support for incremental search (currently you have to click the "incremental" toggle button to enable it). + [gtk] Ctrl-PageDown and Ctrl-PageUp, or F7 and F6, now switch to the next or previous tab, respectively. + [gtk] A link now exists below the package description to open all the other packages from the same source package. + [all] The aptitude dependency resolver now continues searching for a few steps after it finds a solution, in the hope that it can find a better one. (Closes: #482825) + [all] The aptitude dependency resolver now adds a bonus to the default apt resolution for a dependency (that is, the first non-virtual package listed). The default bonus is 400 and it may be configured via Aptitude::ProblemResolver::DefaultResolutionScore. + [all] Setting the environment variable APT_ROOTDIR to a directory name will cause aptitude to use the given directory as the root for the purpose of locating apt files. - Crashes and serious errors: + [gtk] Don't crash in the dependency chains tab. (Closes: #514714) + [gtk] Don't crash when the user views the information tab of a virtual package. + [all] Fixed some serious inefficiencies in the algorithm used by safe-upgrade. It's still a bit slow on very large upgrades, but not as ridiculously slow as it was before. + [all] Fixed a bad interaction between the dependency solver and reinstatement of unused packages, which could cause a situation where a "solution" from the solver would actually lead to broken dependencies, due to a conflict declared on the newly reinstated package. (Closes: #522881, #524667) - Cosmetic and UI bugs: + [gtk] Changelogs are now downloaded and parsed in the background. aptitude still sets the download up in the foreground, and this can take a long time if there are lots of available upgrades. + [gtk] A background thread is used to find the packages that match a search pattern and to build the list of matching packages for display. + [gtk] Some work on the download screen, although more is needed. + [curses] Don't warn the user about removing an Essential package if they're just purging the configuration files of one they removed already. (Closes: #513472) + [curses] Don't compute an excessive amount of "why" information every time a package is selected. Should make the curses interface much less sluggish. (Closes: #516296) + [cmdline] Add a missing newline in the error message that "aptitude why" prints if it has no arguments. (Closes: #514676) + [cmdline] Fix some badly formatted messages that are displayed when a build dependency can't be installed: they were missing punctuation and newlines. (Closes: #492615) + [cmdline] Make the warning asking the user to use safe-upgrade instead of upgrade a bit clearer. + [cmdline] Always display [held] next to the state of held packages. + [cmdline] Pre-compute the column sizes needed to display "why", so that columns don't wrap in Stupid Places[tm]. (Closes: #516389) - Minor bugs: + [all] The dependency resolver's scoring of full package replacement was not behaving as intended in the corner case that the package was replaced due to a virtual package it provided, and some other version of the replaced package didn't provide that virtual package. The intent was to give the non-providing package a bonus, but instead the versions that got replaced were getting a bonus (more or less negating the whole point of the full replacement score). + [all] The resolver should now more correctly obey approval constraints set by the user (solutions that were previously rejected and aren't rejected any more can be returned). - Internal changes: + [all] The dependency resolver now supports "hypothetical reasoning": it can calculate a solution to a dependency problem from a starting state that isn't the "live" state of the package cache. This is used, for instance, to compute an upgrade before any packages are marked for upgrade. + [all] Implemented support in the dependency resolver for propagating knowledge about dead-ends up the search tree. Currently disabled as it turned out to greatly increase the memory and CPU overhead of a search without significantly decreasing the number of steps needed. + [all] The dependency resolver now stores solutions as sets of "choices" rather than explicitly maintaining several lists for the different types of choices a solution can contain (for instance, installing a version vs leaving a Recommends unresolved). This makes things a bit cleaner and should make it easier to add new types of choices if that turns out to be useful. + [gtk] The Glade file now stores each tab as a separate top-level widget, which makes it a lot easier to edit and add tabs. - Documentation: + [doc] Improve the documentation of --purge-unused. + [doc] Improved documentation of the resolver (in addition to documenting the new features). - Translation updates: + Asturian (Closes: #518981, #519693) + Danish (Closes: #512384) + German + Italian + Norwegian Bokmål (Closes: #510977) + Spanish (Closes: #517272) + Swedish (Closes: #511238, #514011) [1/18/2009] Version 0.5.1 "One step at a time" - New features: + [all] New match term: ?term-prefix(term). This is like ?term(), but it searches the Xapian database for any term which is an extension of ?term. For instance, ?term-prefix(hour) matches any package that contains the terms "hour", "hourglass", "hourly", etc. + [all] If the user asks for the changelog of a version of a package that's currently installed, aptitude will use the local copy instead of downloading a new copy off the network. If the local copy can't be used for some reason, aptitude will fall back to downloading a copy. + [all] Implemented resolver hints: you can now place options in apt.conf that control how the aptitude resolver treats particular packages. For a full discussion see the user's manual, but here is a flavor: Aptitude::ProblemResolver::Hints { "reject pulseaudio"; // Prevent the "pulseaudio" // package from being installed // by the aptitude resolver. "approve ?name(emacs[0-9]*)"; // Always choose emacsNN over // any alternatives. "300 ?true /unstable"; // Give a 300-point bonus to // any version in the // "unstable" archive. }; Currently these hints do not influence the choices made by the "immediate" dependency resolver (the one that runs as soon as you mark a package for installation). + [gtk] aptitude now parses the dpkg status pipe, so it can show a progress bar while dpkg is running. Closing the terminal tab does not terminate the install; only destroying the progress bar does that. + [gtk] The search entry box's background will turn slightly red if the current text is not a valid search pattern. + [gtk] If the user enters an invalid search pattern into the search entry box, the error will be shown below the box (rather than being shoved onto the apt errors pane). + [gtk] aptitude prompts for confirmation before killing a download or a dpkg process. The download prompt might be superfluous, but considering the possible side-effects of killing off dpkg, that prompt will remain for the foreseeable future. + [gtk] aptitude will print a message to its embedded terminal before and after running dpkg. + [gtk] A drop-down box of package filters is available under the text box where searches are entered. This lets you quickly filter a list of packages by some common criteria (showing only packages that aren't installed). + [gtk] The "automatically installed" flags of packages can be toggled from the Package menu or from buttons in the description pane. + [gtk] Undo -> Undo works. + [gtk] When viewing a dependency solution, you can choose to see the actions in their "logical" order (equivalent to typing "o" in the curses front-end). + [gtk] In the version information tab (the one you get by double-clicking a package), selecting a different version in the list of versions causes information for that version to be shown instead. + [gtk] You can now change which columns are visible in a package list by selecting View -> Edit Columns... or by clicking the "..." column heading. + [gtk] New package list column: "automatically installed". Each value in this column is displayed as a check-box, where the box is checked if the package is automatic. The check-box can't currently be clicked because I'm worried that people would click it by accident while trying to select a package. Most likely the rendering will be changed in the future to look less "clickable". + [gtk] New package list column: "archive". - Crashes and serious errors: + [gtk] Fix several crashes, including one at start-up, that were caused by some unusual package states. - Minor bugs: + [cmdline] "aptitude why-not" no longer crashes when the final argument is a virtual package. + [gtk] The "Download started" row in the Downloads page is no longer shown. + [gtk] The dependency chains tab no longer misses some chains that "aptitude why" would show. + [gtk] Fix buffer problems due to sprintf by using aptitude's safer variant of that function. (Closes: #511559) + [gtk] When extracting just the part of a package's changelog that corresponds to versions that are newer than the currently installed version, truncate the changelog as soon as we see the version numbers go "backwards" -- that is, as soon as the previous version in the changelog is "newer" than the current version. This is important because some packages changed their version scheme over time. For instance, g++-4.2 lost its epoch in 2004 when the package name changed. But that doesn't mean that those earlier versions of the package should be displayed when we want to display the log for today's upgrade! - Cosmetic and UI bugs: + [all] The --help output now mentions --gui and --no-gui. + [gtk] Many tweaks and improvements to the appearance of the UI; particular thanks to Luca Bruno for his patches. The program looks a lot "nicer" overall as a result of his work. + [gtk] The RC style "tiny-button-style" is used for tab close buttons. + [gtk] Use the "yes" icon (a green sphere) to indicate that a package is installed and OK. This is far more recognizable for me (dburrows) than the hard disk icon we were using before. + [gtk] Not-yet-implemented menu options produce a "not implemented" message. + [gtk] Some menu items are disabled if they don't apply to the "currently selected object". + [gtk] When the user performs an action on several packages at once, any packages they install will be marked as manually installed, and package states won't change to fulfill dependencies if those dependencies are already satisfied by the selected actions. For instance, suppose that the user selects A, B, and C for installation. A depends on "D | B", and B depends on C. Previously aptitude might decide to install D to fulfill A's dependency, and would mark C as automatically installed because of B's dependency. Now, just the three selected packages will be installed, and they will all be marked as manually instsalled. - Documentation: + [doc] Wrote a new section of the documentation describing the various dependency resolution mechanisms in aptitude. This includes the old section on resolving dependencies, but also describes the immediate resolver and how to configure the full resolver using resolver hints. - Internal changes: + [gtk] Redesigned the dpkg terminal creation code to make it cleaner and more maintainable. + [gtk] Redesigned the code for the buttons in the package description pane. + [gtk] Stopped using random bits of the glade file as templates for other GUI elements, in preparation for making each tab a separate top-level widget in the file. - Translation fixes: + Fix how ngettext is used so that the plurals can be properly translated. (Closes: #505675) + Slovak (Closes: #505676) [11/10/2008] Version 0.5.0 "Wheee!" This version introduces the GTK+ frontend. Thanks are due to Obey Arthur Liu for providing code, ideas and energy to the project, and to Google for funding his work through their Summer of Code program in 2008. This is an EXPERIMENTAL, DEVELOPMENT release. It can be used for package management, but there may be bugs, there are probably places that need improvement, and it is certainly incomplete. - New features: + Integrated the GTK+ frontend written by Obey Arthur Liu for the 2008 Google Summer of Code. To manually suppress the GUI, run "aptitude --no-gui" or set the option "Aptitude::Start-Gui" to false. + Added Xapian support. Unadorned strings in search patterns now search the apt Xapian database built by Enrico Zini. There is also a new search term ?term that does the same thing. + Added the command-line option "--show-resolver-actions" to display why aptitude made the decisions it did in "aptitude safe-upgrade". - Known Regressions: + Incremental searching in the curses frontend is made much less useful by introducing Xapian. It still works, but because Xapian searches don't find substrings, the search will fail to match anything until you finish typing the entire search string. + Documentation for the GTK+ frontend has not yet been written. [11/19/2008] Version 0.4.11.11 "And the moon be still as bright" This is purely a translation release for Debian lenny. - Translation fixes: + Catalan (Closes: #499464) + German (Closes: #500444) + Greek (Closes: #498583) + Italian + Romanian (Closes: #502413) + Slovak (Closes: #498910) + Spanish (Closes: #501096, #502695, #502696, #502697) + Traditional Chinese [9/5/2008] Version 0.4.11.10 "Upon the empty winds of time" - Bug fixes: + Serious bugs: * Never, ever remove an Essential package from the curses UI without asking the user first. I chose a very simple implementation for this patch because of the pending release of lenny, and so users who are removing Essential packages will get prompted twice. But I feel this is better than occasionally not prompting at all; it will be cleanup up later, once lenny is out. + Minor bugs: * Fix displaying the section descriptions in non-UTF-8 locales. (Closes: #483464) * Add the ?task search term, which was documented in some areas but not others, and wasn't actually implemented due to an oversight. - Documentation bugs: + A whole pile of minor improvements suggested by "jidanni". (Closes: #497374, #497340, #496726, #471347, #496719, #496729, #496732, #497333, #497336, #497726, #497969) + Give the right name for the preview limit configuration option: it's Aptitude::UI::Preview-Limit, not Aptitude::Preview-Limit. + Generate the HTML documentation in a UTF-8 encoding. - Translation fixes: + Brazilian Portuguese (Closes: #496613) + Czech (Closes: #497287) + Dutch (Closes: #497965) + Kurdish + Japanese (Closes: #494816) + Lithuanian (Closes: #496504) + Norwegian Bokmål + Simplified Chinese (Closes: #497550) + Ukranian [8/3/2008] Version 0.4.11.9 "This message brought to you courtesy of the Friends of Poland society." - Bug fixes: + Minor bugs: * Don't annoy every Polish user with a warning about a badly formed string in the aptitude-defaults configuration file. Also added some documentation for translators telling them about the pitfall that led to this bug happening. (Closes: #483459) * Fix some case fallthroughs that would cause the wrong information to appear in the "archive" (%t) column for virtual packages. * Correctly handle install-and-mark-auto commands that are targeted at a particular version, like "install foo/testing+M". Previously aptitude would completely ignore the archive in this case. - Translation fixes: + German + Slovak + Swedish (Closes: #490782, #490818) [7/4/2008] Version 0.4.11.8 "Happy Fireworks Day." - Bug fixes: + Minor bugs: * Fix a long-standing and annoying bug that would cause aptitude to sometimes delete package lists if downloading new copies failed. (Closes: #201842, #479620) [6/28/2008] Version 0.4.11.7 "Yes I can" - Internal changes: * Fix several compilation errors on exotic architectures. (Closes: #488132) - Translation updates: * Basque * Portuguese (Closes: #482094) * Thai [6/21/2008] Version 0.4.11.6 "Take two" - Internal changes: * Fixed several places where the code was a bit sloppy in ways that were harmless at the moment but were turned up by -Wall -Werror. [6/21/2008] Version 0.4.11.5 "A tisket, a tasket" - Bug fixes: + Crashes and serious errors: * aptitude will no longer suggest removing Essential packages to fulfill dependencies unless you explicitly allow it to. Also, removing apt (if it is allowed) will be scored as if apt were an Essential package, meaning that it should show up last in any list of solutions. (Closes: #486748) + Minor bugs: * "aptitude add-user-tag" and "aptitude remove-user-tag" will return 0 instead of a random value when they succeed. + Translation updates: * Dutch (Closes: #486858) * Romanian (Closes: #486934) - Internal changes: * Consistently build with -Wall -Werror (it wasn't being used in all subdirectories of the code). * Clean up various minor and potential bugs turned up by increasing the warning level. [6/7/2008] Version 0.4.11.4 "Turn down the suck." - New features: * "aptitude download" now properly handles both patterns and things like version specifiers that contain a tilde. * New option "--disable-columns" to "search" that prevents aptitude from trying to reformat its output into columns. This should be useful for people trying to call aptitude from scripts. (Closes: #136874) - Crashes and serious errors: * Fix a problem with assigning scores in the dependency resolver that severely distorted the relative weights of packages. If a package conflicted with a virtual package that it also provided and replaced, aptitude would randomly score some of its versions as if they were full replacements of the current version. This could lead to surprising and wrong resolver outputs. (Closes: #483920) - Documentation bugs: * Fix some broken internal links. * The manpage formatting of elements is correct now. They're bolded, and literal file extensions don't get misinterpreted as groff escapes. (Closes: #473580) - Translation updates: * Install defaults files for locales that contain an underscore, like pt_BR. (Closes: #483620) * Russian. (Closes: #483943) [5/26/2008] Version 0.4.11.3 "Not looking back." - Crashes and serious errors: * "unhold" should work now. (Closes: #477165) * Fixed viewing changelogs at the command-line, which was almost totally broken in recent releases. (Closes: #481458) * Fix getting the changelogs of bin-nmued packages from the curses interface. (Closes: #333468) For some reason when this was fixed for the command-line mode, the equivalent change didn't make it into the curses codebase. * Don't die with an assertion error when --show-why is used in the presence of impure virtual packages. - Cosmetic and UI bugs: * Always be at least as quiet as the user requested; when aptitude automatically enabled quietness if its output wasn't a TTY, it could actually become less quiet than otherwise! (Closes: #476749) * If the user asks for the justification of a manually installed package, try to find a nontrivial answer (some other package that requires it) instead of just telling them that it's already installed. (Closes: #477038) * Remove an incorrect hyphen in the output of --help. (Closes: #476835) * When the resolver is run several times in a row without user interaction (for instance, in "safe-upgrade"), only print "Resolving dependencies..." once. * When listing the complete chains of dependencies that are holding a package on the system, show "A provided by B" as "A <-P B", not "AP<- B". (i.e., add a space after "A") - Build system fixes: * VPATH should be supported better in doc/. * Most files will generate Doxygen output now (they were missing \file tags). - Documentation bugs: * Clarify how aptitude's search language behaves in some syntactic corner cases, like "~nname?installed": the "?" is part of the string parameter to the first matcher, not the start of a new match term "?installed". * Change the documentation of "aptitude why": it shows why packages should be installed, not why they can be installed, and be clearer about what happens when "why" is called with a single argument. * Fix the manpage to talk about Recommends-Important instead of Install-Recommends. (Closes: #480533) - Translation updates: * Brazilian Portuguese (Closes: #481007) * Danish (Closes: #476732) * French * Galician (Closes: #476837) * German (Closes: #476344) * Japanese * Norwegian Bokmal (Closes: #480063) * Polish (Closes: #480062) * Simplified Chinese (Closes: #475740) * Vietnamese (Closes: #477295) [4/9/2008] Version 0.4.11.2 "How far the sky, how cold the night, how still the flowing river. How sharp the air -- so pure the light -- beneath Orion's quiver. Beneath the frozen, staring, starry sky we lay a-shiver." - New features: * The information area can display tabs for the alternative views it supports. This is off by default because I found that it was too intrusive (mainly because it appears between the short and the long description of a package). If cwidget gets the ability to put tabs at the bottom of multiplex widgets, I might change this. - Documentation bugs: * Fix several XML errors in the manpage source (Closes: #473722) - Bug fixes: + Crashes and serious errors: * Make the safe resolver not explode exponentially when new Recommendations are present. The root cause here was that the "mandate" mechanism the safe resolver uses to ensure that it progresses monotonically towards a solution doesn't work in the presence of Recommends, so the resolver ended up exploring the entire space of possible resolutions to packages' Recommendations. (Closes: #474680) * Don't crash if a package's Section is empty. (Closes: #474115) + Cosmetic and UI bugs: * The "why installed" information display in the package list will now display an informative message when no package is selected, the same way that the "related dependencies" display does. * The "why installed" information display should work better for newly installed packages now. * "aptitude --version" prints more information about the libraries it was compiled against. * "Help -> About" prints a correct copyright date now. * The status indicator has been rewritten so that it no longer needs numeric conjugation (meaning it won't say "there are 1 update"). (Closes: #486186 and friends) * "why" and "why-not" now appear in the list of commands in "aptitude --help". (Closes: #454088) + Minor bugs: * Use a 'latch' configuration option to migrate from Recommends-Important, instead of just clobbering the old option. (Closes: #473872) * Treat packages that were removed but whose configuration files remain on the system as if they're not installed in the output of --show-why. This fixes some cases where --show-why would hide the reasons for some installations. - Translation updates: * Galician (Closes: #474672) * Vietnamese (Closes: #473719) [3/30/2008] Version 0.4.11.1 "No, no, fool, I said bring me the FLUFFY Bunny Slippers of EXTREME Dismemberment, not the EXTREME Bunny Slippers of FLUFFY dismemberment! Does an evil overlord have to do everything himself around here?" - New features: * The command-line argument --show-why will cause all installation and removal commands to display a brief summary of the dependencies related to an installation or removal. For instance: The following NEW packages will be installed: libboost-iostreams1.34.1{a} (for wesnoth) wesnoth wesnoth-data{a} (for wesnoth) wesnoth-music{a} (for wesnoth) Note that wesnoth-music is a dependency of wesnoth-data, not wesnoth. --show-why displays the manually installed package behind each automatic installation. If -v is passed on the command-line, it displays the entire chain of dependencies leading to each manual package. --show-why also handles upgrades: The following packages will be upgraded: klibc-utils libklibc (for klibc-utils) --show-why is limited to the capabilities of the logic behind "aptitude why". Although libklibc might be the package that was originally marked for upgrade, --show-why has no knowledge of this fact: it just knows that klibc-utils requires libklibc. * In the ncurses interface, added a menu entry to cycle the display in the lower pane (equivalent to pressing "i" but more discoverable). * The ncurses interface now displays the number of packages in a tree next to the tree header, and in the information area when the header is highlighted. * The header for the list of versions in the ncurses interface now reads "Versions of " instead of just "Versions". * A new extract-cache-subset command that will create a reduced copy of the package cache, removing all but a given list of packages and all references to packages not in the list. It's intended for, e.g., generating test cases for package managers. - Bug fixes: + Crashes and serious errors: * Handle exceptions thrown by the Debtags constructor (e.g., when debtags has been purged and there are no data files) instead of just crashing. (Closes: #472695) * Eliminate a case where we would access uninitialized memory while starting up, found thanks to valgrind. + Cosmetic and UI bugs: * Correct the documentation within the on-line help of how to leave the on-line help (it was never updated when the help went from being a dialog to being a top-level view). * Correctly save changes to string configuration options. (Closes: #471315) * Don't print an error on startup when debtags isn't installed. (Closes: #472678) * Use less technical language when "why" fails to find a derivation for "A transitively requires B". * Eliminated some cases where description signals for tree headings weren't being connected. These weren't noticable in the past because in most cases, the heading had no description anyway. - Translation updates: * The aptitude-defaults.* files are now installed to /usr/share/aptitude. (Closes: #472625) * Simplified Chinese (Closes: #458162, #473363). * Vietnamese (Closes: #473229) [3/15/2008] Version 0.4.11 "When you're tired of being beat with a stick, you're tired of Debian." - New features: * Search terms can be named with words instead of single-character flags. Each new-style search expression starts with a question mark ("?"), followed by the name of the matcher; for instance, "?obsolete" is equivalent to the old-style expression "~o". At the command-line, package names containing question marks are treated as search expressions, just like package names containing tildes ("~") are. The old-style syntax is still present and works just like it did previously. See the reference manual for complete documentation of the new syntax. This will hopefully make the search syntax more memorable and make it clearer what a given search expression actually does. In addition, this opens up the possibility of greatly expanding the number of search patterns supported by aptitude (the requirement to choose a meaningful and unique single character had become a major limiting factor in the ability to add new search terms). * New search terms: + ?source-package(expr) matches packages whose source package matches the given regular expression. + ?source-version(expr) matches packages whose source version matches the given regular expression. + ?all-versions(expr) matches a package if expr matches all versions of that package. + ?any-version(expr) matches a package if expr matches any single version of that package. + ?user-tag(pattern) matches a package if it has an attached user-tag matching the given regexp (see below). + ?for var: expr binds var inside expr to the package or version being tested. + ?bind(var, expr) matches anything if the package or version bound to var matches expr. + ?=var matches the package or version bound to var by an enclosing ?for. For instance, "?for x: ?depends(?recommends(?=x))" will match any package X that depends on a package that recommends X. * aptitude now supports attaching arbitrary strings to packages, known as "user tags" (to distinguish them from debtags tags). The following commands will manipulate user tags: aptitude add-user-tag tag package... aptitude remove-user-tag tag package... Each of these commands will add user tags to or remove them from one or more packages (possibly selected using search expressions). In addition, all command-line actions that modify package state now take the following optional arguments: --add-user-tag TAG --add-user-tag-to TAG PATTERN --remove-user-tag TAG --remove-user-tag-from TAG PATTERN The variants that take a PATTERN will add tags to or remove tags from any packages that match the given PATTERN. (e.g.: "--add-user-tag-to installed-for-build-dep ?action(install)"). The variants that do not take a PATTERN will affect any package that is being modified (this is equivalent to using the pattern "?not(?action(keep))"). The ?user-tag(tag) matcher will select packages with a tag matching the given regular expression. User tags also show up at the end of package descriptions, next to the list of debtags tags for a package. * All command-line actions that modify package state now accept the arguments --safe-resolver and --full-resolver. --safe-resolver forces the command to use the same resolver logic as --safe-upgrade (e.g., "aptitude install --safe-resolver exim4" to install exim4 as long as it can be installed without removing any packages). --safe-resolver can be enabled in the config file by setting Aptitude::Always-Use-Safe-Resolver to "true"; passing --full-resolver will override this configuration option. The option --no-new-installs and the new option --no-new-upgrades will control whether the safe resolver attempts to install new packages or upgrade installed packages. Future versions of aptitude will enable this logic in the curses UI as well, but I haven't decided how it should be exposed yet. * The aptitude dependency resolver will now refuse to adjust held packages or install forbidden versions unless you manually allow it to. This behavior can be disabled by setting Aptitude::ProblemResolver::Allow-Break-Holds to "false". aptitude will still break holds when packages are being automatically installed; there is a pending patch against apt that eliminates this behavior. * The aptitude dependency resolver will add a bonus to solutions that remove a package and install another package that fully replaces it by declaring a conflicts/provides/replaces relationship. (Closes: #466374) * aptitude now has a "build-dep" command that will install build-dependencies from the command-line. (Closes: #243317) * A new "subdirs" variant of the section grouping policy is introduced in this release, courtesy of Paul Donahue, and is enabled by default. This will behave just like the old sectioning policy, except that if a section has several components (for instance, games/arcade/space), they will all be realized as tree levels in aptitude. A side effect of this change is that section descriptions are no longer hard-coded in the source (see the documentation of Aptitude::Sections::Descriptions). * Command-line updates in aptitude will now list packages that are newly obsolete. This doesn't work when a source is removed and all its packages become obsolete, for technical reasons. * aptitude now uses libept to handle debtags information instead of a slow and wrong internal implementation. (Closes: #397652, #406201) "aptitude update" will merge new package information into the debtags database automatically by running "debtags update --local". - Bug fixes: + Cosmetic and UI bugs: * The curses interface now uses a spinner to indicate download progress, since the percentage measurement can't be made correct in the current apt model. * Remove some stray cw:: strings that made it into user-visible messages (thanks to Jacobo Tarrio for pointing them out). * Interpret %-escapes in the descriptions of configuration options instead of displaying them to the user; thanks to Jens Seidel for pointing this out. * At the command-line prompt, don't list packages that aren't being upgraded unless the user tried to upgrade them. e.g., "aptitude install foo" will no longer spew the entire list of pending upgrades to the terminal. * When displaying dependencies or version numbers at the command-line (i.e., -D or -V is passed), add an extra space between packages, to make it a little more obvious which tags "belong" to which package. * If the resolver is allowed to produce the solution 'cancel all actions' (i.e., "Aptitude::ProblemResolver::Discard-Null-Solution" is false), the brief indicator in the UI will say that it cancels all the pending actions instead of counting its component actions. * When displaying the packages that could satisfy a versioned dependency, don't list packages that provide the package name unless they declare a versioned provides that matches the dependency's version restriction. (Closes: #464131) * Don't try to generate and then parse a matcher when searching for packages that look like what the user typed; instead, write explicit code to compare against package names and descriptions. This allows aptitude to find similar package names even if the corresponding command-line argument is an invalid search pattern (without having to write complex escaping logic); e.g., "aptitude install +5" does something sensible instead of printing a confusing error message. * If the user enters "q" during command-line dependency resolution, quit the program instead of falling back to manual resolution; manual resolution is only used if automatic resolution hits a fatal error or if the user requests it by typing "x". (Closes: #459629) + Translation bugs: * Generate POTFILES.in automatically, so it stays up-to-date without requiring manual intervention. * Flag W_() as a translation marker; failure to do this caused a lot of strings to be incorrectly left out of the translation files; pointed out by Jens Seidel. * Fix translation of strings displayed by the options editor (they weren't getting translated at all); thanks to Jens Seidel for reporting this. + Minor bugs: * Fix task handling in the case that different versions of a package are in different tasks. (Closes: #459348) * "safe-upgrade" will now attempt to automatically maximize the upgrade. Hopefully this will eliminate the situation where you run "aptitude safe-upgrade" and then discover that there are still some upgradable packages. + Crashes and serious errors: * aptitude will now build with g++ 4.3, assuming that 4.3-compatible versions of cwidget and sigc++ are installed. (Closes: #452204, #452540) * Reduce the translation percent threshold for the various versions of the manual until it compiles. (Closes: #470054) * aptitude now uses Apt::Install-Recommends instead of Aptitude::Recommends-Important to control whether recommendations are automatically installed. (Closes: #458189, #448561) Old configurations will be migrated to the new configuration option, if possible. Among other things, this means that --without-recommends works again (it was broken when recommends handling moved to apt). * Ensure the resolver state is always synchronized with the package cache, eliminating some cases where the resolver would break or produce wrong answers. (Closes: #421395, #432411) * Don't crash at the command-line when displaying the version numbers of packages being removed that don't have an installation candidate; also, the version display for removed packages is now meaningful. (Closes: #459336) * Don't crash at the command-line when displaying the version numbers of packages in the ConfigFiles state that are being purged; instead, display "Config Files" as the removed version. (Closes: #461669) As a side note: the code in question has been adjusted to be robust against bad version pointers, and should display "??" instead. If you see this, it's a bug, but at least aptitude won't crash in this case. * Don't crash in "aptitude update" when the package lists can't be parsed for some reason; instead just go ahead and download new ones. (Closes: #468751) + Documentation bugs: * Fix the documented default keybinding for PrevPage. * The documentation of searching has been substantially rewritten, and is hopefully much more useful now. In particular, there's more information about how versions are handled, and a concise table listing all the search expressions supported by aptitude. * Document some of the files aptitude uses in a FILES section in the manpage (Closes: #470839). + Translation updates: * Basque * French - Christian Perrier: Fix the use of quote in the French translation (Closes: #460808). * Galician * German (thanks to Jens Seidel) * Japanese (thanks to Noritada Kobayashi) * Norwegian Bokmål * Portuguese * Romanian (thanks to Eddy Petrișor) * Russian * Simplified Chinese * Slovak * Spanish * Vietnamese [12/15/2007] Version 0.4.10 "Oscillating Reindeer" - New features: * In command-line mode, if the resolver fails to produce a solution for whatever reason, then instead of aborting the program entirely aptitude will now display a prompt at which you can fix the dependency problems by hand. Enter "r" at this prompt to try to automatically fix dependencies again. * safe-upgrade will now install new packages to fulfill dependences (but it will never remove packages, downgrade packages, or install a version that's not the default). The option --no-new-installs will disable this behavior. * Updates and commands that install, remove, or upgrade packages will now display a brief summary of what changed. For instance: There are now 64 updates [+10], 3 new [+1]. Unfortunately, this change requires reading the cache after an update is complete. Passing -q will disable this behavior, but also make the update progress bar less attractive. More work on resolving this tension between features and performance remains to be done. * Add an option --allow-untrusted to override trust warnings. (Closes: #452201, #452541) * Recommended packages are now hidden if quiet mode is enabled. (Closes: #452202) * The options Aptitude::ProblemResolver::Trace-File and Aptitude::ProblemResolver::Trace-Directory allow you to generate a minimal cut of the cache that allows a problem resolver run to be reproduced. The eventual aim is both to simplify bug reporting and to generate a corpus of automatic test cases for the resolver (although more work needs to be done to accomplish the latter). * When run in command-line mode, instead of displaying many separate and sometimes duplicative groups of packages (e.g.: installed, auto-installed, auto-installed in a light cream sauce, etc), aptitude displays packages in a few exclusive categories and uses tags (like the existing "purge" tag) to provide more state information. For instance: $ aptitude -s install wesnoth The following NEW packages will be installed: wesnoth wesnoth-data{a} wesnoth-music{a} $ aptitude -s remove freeciv-data (... dependency resolution ...) The following packages will be REMOVED: freeciv-client-gtk{a} freeciv-data freeciv-server{a} ggzcore-bin{u} libggz-gtk1{u} libggz2{u} libggzcore9{u} libggzdmod6{u} libggzmod4{u} Here {a} indicates that a package was automatically installed or removed, and {u} indicates that a package is being removed because it is unused. Hopefully this will be less confusing than the old format. - Bug fixes: + Crashes and serious errors: * Track down and fix a SEGV triggered on the first action after a cache reload (sometimes). There are multiple bugs where this might have been the root cause, but it's confirmed that it was the cause of at least #454695, #454700, #455349, and #453362. Bug #455865 is almost certainly the same issue, and bug #352278 may be another manifestation of it. * If StepLimit is set to 0, refuse to solve dependencies instead of going into an infinite loop. (Closes: #451311) + Minor bugs: * Return a failing exit code after jumping from the command-line to visual mode if the last install run failed. (Closes: #282408) * Return a failing exit code from "aptitude update" if any download fails. (Closes: #233129) + Cosmetic and UI bugs: * In addition to Enter, Space will now activate checkboxes and radio buttons. (Closes: #451765) * Abort the program if we get EOF at the resolver prompt instead of claiming the resolver failed. * Command-line searches will now only print each result once. (Closes: #450798) + Documentation bugs: * The options menu documentation now minimally describes the new configuration interface. * The documentation of the configuration file options has been placed back in alphabetic order after apparently suffering bitrot over the years. * Corrected the documented default of Parse-Description-Bullets to match reality. * The manpages for aptitude-create-state-bundle and aptitude-run-state-bundle are now generated using DocBook, which should produce higher-quality and more consistent typesetting, as well as making the manpages more maintainable and allowing translators to easily produce localized versions of the manpages. - Internal changes: * Removed some unit tests that really tested cwidget. - Translation updates: * French (Christian Perrier) [11/17/2007] Version 0.4.9 "Ow. Ow. Ow. Ow. Ow." - New features: * Add a matcher ~o for obsolete/local packages. (Closes: #397547) - Bug fixes: * Correctly set the name, description, and long description of radio options. (Closes: #449138) * Don't remove *.gmo in distclean. Apparently this causes trouble for translations. (Closes: #451584, #441696) [11/15/2007] Version 0.4.8 "The fun never stops!" This change removes the internal widget set, instead using the cwidget curses widget library (which just happens to provide all the same functionality as the aptitude widget set, imagine that). - Bug fixes: + Cosmetic and UI bugs: * Interpret key names in the broken indicator as wide-character strings; fixes actual display corruption on some platforms and potential corruption on all platforms. (Closes: #448753) [10/30/2007] Version 0.4.7 "Where did all these balloons come from? And why am I wearing a fake nose?" - New features: * The options dialogs have been completely replaced by a new interface, based on a top-level list view. This fixes many deficiencies of the old interface: it handles long strings more gracefully, avoids many of the focus-handling bugs that the old dialogs had, and should generally be better-behaved. (Closes: #197976, #331200, #424708) * Prompts that ask you to enter text will now wrap to multiple lines when the text gets long, rather than hiding parts of the string. * The online help and other Help-menu items are now top-level views, which should make them somewhat more usable. (Closes: #434349) * Support for the "Breaks" field and for trigger states (thanks to Michael Vogt and Ian Jackson for patches and prodding). (Closes: #438548) * Two new styles, "PkgDowngraded" and "PkgDowngradedHighlighted", are provided to control how downgraded packages look. By default these packages look like any other installed package. (Closes: #439924) * aptitude can now display homepage URLs stored in the Homepage field of packages. This requires a recent version of apt; 0.7.8 or better includes it. - Bug fixes: + Crashes and serious errors: * When applying the resolver's output, only set the packages that are newly installed to be automatic, rather than making everything the resolver touches automatic. * Save and restore the automatic flag on packages that are not not currently installed and that are being installed. (Closes: #435079) * Fix the help generated when the user presses '?' at the prompt to not segfault, and rewrite the code to avoid this bug in the future (it was using a format string with a huge number of placeholders; now it builds a list of the output lines explicitly). * Eliminate a crash on startup caused by using a global pointer to the cache in the package matching logic (which might be null) instead of taking a valid pointer to the cache as a parameter. This is necessary since the matcher might be invoked while the cache is being loaded, e.g., to decide if a package should be part of the root set. + Minor bugs: * Fix the 'pattern' grouping policy: it was inserting packages into all the trees that matched, not just the first one. * Make removals and holds that occur later on the command-line override earlier commands. * The debugging output from "why" no longer tries to dereference invalid pointers or display multibyte strings as single-byte strings. (Closes: #447290) + Cosmetic and UI bugs: * If the text in a column of the "why" output exceeds the column width, the column will now wrap correctly onto the next line. * Auto-held and unconfigured packages no longer generate ?????? in the aptitude log. + Documentation bugs: * Fix the documentation on aptitude development. It now gives the correct URL and version control system for the upstream repository, and somewhat more actively solicits contributions. - Translation updates: * Galician (Closes: #446620) * Nepali * Russian * Spanish * Swedish (Closes: #434643) [7/25/2007] Version 0.4.6.1 - Minor bugfix to include the new scripts/manpages that didn't get distributed with the previous release. [7/25/2007] Version 0.4.6 "He who works and works all day, gets to work another day." - New features: * Added two programs, aptitude-create-state-bundle(1) and aptitude-run-state-bundle(1), to eliminate some of the drudgery involved in collecting apt state and running aptitude with a state snapshot. * "why" output is now available in visual mode (hit 'i' to cycle through informational displays). The formatting and styling are pretty awful in this release. - Bug fixes: + Crashes and serious errors: * Handle EINTR from select() better; thanks to Jiří Paleček for tracking this down. (Closes: #431054, #431688, #432323) Note that there is still a race condition lurking here, although it's almost impossible to trigger it. The next release should eliminate it, though. * Run mark-and-sweep on startup, to initialize apt's auto flags. This should prevent aptitude from losing the auto flag when a package is marked for upgrade. (Closes: #432017) * Don't crash on startup when something goes wrong early in the initialization process (e.g., when the cache is locked; Closes: #430061). + Minor bugs: * Disable unused-package removal if Delete-Unused is false. (Closes: #431716) + Cosmetic and UI bugs: * Don't garble descriptions in non-UTF8 locales. (Closes: #432911) * Hopefully fixed the problem that was garbling the startup progress indicator. * Eliminate another bogus error about a supposedly locked cache. (Closes: #431909) + Documentation bugs: * Fix the manpage's metainformation so that the footer gets generated. + Potential bugs: * Handle some unusual cases where the resolver could dereference invalid pointers (no bugs reported). * Added code to recover with an error if apt improperly marks a dependency as broken. - Translation updates: * Basque (Closes: #432535) * Dzongkha * French * Vietnamese (Closes: #432283) [7/3/2007] Version 0.4.5.4 "Oh my God, THEY KILLED LENNY! (actually, it was sid, but I wanted to say that)" - New features: * Expose the "why" command from the command-line Y/n prompt. Typing "w " will invoke "why ". The resolver prompt doesn't support this, maybe it should? - Bug fixes: + Crashes and serious errors: * Eliminate a bounds error that was crashing the vs_editline. (Closes: #429673) + Minor bugs: * Force aptitude to write out a state cache the first time it runs. Without this change, it won't know which packages are "new" until after the first time the user installs something. (Closes: #429732) + Build system fixes: * Add a configure check for the new apt, so users get more sensible build errors with incompatible apts. * Have 'make clean' remove autogenerated XML files, so they don't show up in the Debian diff. - Translation updates: * Basque (Closes: #418862) * Galician (Closes: #429504) * Vietnamese (Closes: #429447) [6/17/2007] Version 0.4.5.3 "The Long Dark Tea-Time Of The Code" - New features: * Added two commands "aptitude why" and "aptitude why-not" that provide explanations of why a package is, must be, should be, or must not be installed on your system. They are not complete, by which I mean that they can't always provide the most useful justification, but they should answer a lot of questions that I hear people asking regularly. - Bug fixes: + Crashes and serious errors: * Eliminate a nasty race that was probably the cause of corrupted output on some dual-core systems. (Closes: #414838, #406193) * Fix a bug that could cause aptitude to try to remove a package that it had already removed. (Closes: #429388) This can't be totally eliminated without help from dpkg, but hopefully this fix will make the problem much more difficult to trigger. Unfortunately, the fix also means that aptitude has to perform a save/load cycle after installing packages to make sure that everything is consistent. * Allow "keep" actions to be undone. * Don't consider every removed package to be an unused package. * Clear the broken package indicator when the user undoes an action. * Fix build errors on other architectures. (Closes: #429348) * Set packages to manual mode when the user cancels their removal. (Closes: #429271) * Fix compile bugs with g++-4.3. (Closes: #413488) [6/15/2007] Version 0.4.5.2 "To ook is human, to meow feline" - Bug fixes: * Multiple minor bugs introduced by the patches to support apt's auto-marking were fixed. - Packages kept at their current version by applying a solution no longer get their hold flags turned on. - Packages that are installed by a solution get their auto-installed flag set. - Applying a solution updates the resolver state (so the error bar doesn't stick around until you change a package's state by hand). * Fixed a broken cross-reference in the manpage. [6/15/2007] Version 0.4.5.1 "Nothing could possibly go wrAAAAAAAAAAaaaa..." - New features: * aptitude now uses apt's central database to track which packages are auto-installed. Aptitude's own list of automatic packages will be merged into the global list the first time that aptitude is run. * Packages that are not fully configured are now listed in aptitude's preview, and aptitude will let you do an install run if there are unconfigured packages but nothing to install/remove. (Closes: #424709) - Translation updates: * French (Closes: #428585, #428826) * Portuguese (Closes: #425779) * Vietnamese (Closes: #426976) [5/14/2007] Version 0.4.5 "Confused Cockroach" - New features: * For standard string prompts, the default is now initially displayed, but erased if the user starts out by inserting a new character. * 'N' now repeats the last search in the opposite direction (as opposed to 'n', which repeats it in the same direction). (Closes: #414020, #397880) * aptitude now recognizes Apt::Get::AllowUnauthenticated as a synonym for Aptitude::Ignore-Trust-Violations. (Closes: #411927) * Fix the handling of dselect/dpkg state. Previously, mixing the command-line and visual modes of operation could result in aptitude thinking it should remove a package that was actually installed on your system. This was especially nasty since the Debian installer tripped this condition, leaving people with a broken initial system. Ow. (Closes: #411123) * Added a config option "Aptitude::CmdLine::Resolver-Show-Steps", which causes the dependency resolver to default to displaying its output as a list of individual resolutions, rather than a list organized by the type of change that will be made. (equivalent to pressing "o" at the first resolver prompt) * Added "safe-upgrade" and "full-upgrade" as synonyms for "upgrade" and "dist-upgrade" respectively. The goal here is to eliminate massive confusion about what these commands actually do. "upgrade", in particular, is now deprecated ("dist-upgrade" probably has too much currency to kill off, but hopefully people will at least be rid of the notion that it's exclusively for whole-distribution upgrades). * The option "Aptitude::Get-Root-Command" can be used to choose how aptitude tries to gain root privileges. It defaults to "su"; setting it to "sudo" will choose that program, and other programs can also be chosen (see the user's manual for details). - Bug fixes: + Crashes and serious errors: * Improve the internal consistency of aptitude's reduction of the apt dependency graph. As part of this change, a new (undocumented, primarily for debug purposes) command-line action "check-resolver" was added; it verifies empirically that the dependency structure obeys the invariants that it's expected to obey (for instance, that all forward dependencies have a corresponding reverse dependency). In addition to a number of harmless discrepancies, this flushed out the forward/reverse dependency mismatch that was causing crashes in the resolver. (Closes: #420358, #420381, #420407). Note that check-resolver only verifies *internal* properties of the resolver's model; it doesn't verify that the model faithfully represents the dependency problem posed by the apt package database. * Don't crash on amd64 and other architectures where va_args structures can't be reused. This is an old bug; it was turned up by a new test for ssprintf. * Increase the default value of StepScore to 70 and improve its documentation. This should make it much less likely that the resolver wanders off into lala land trying to solve dependency problems. (Closes: #418385) * When --without-recommends is passed at the command-line, automatically enable Keep-Recommends at the same time we disable Recommends-Important, so we don't automatically remove half the user's system. (Closes: #143532) * Fix an internal sprintf variant to produce correct output (the previous code was safe, just wrong; it safely produced a buffer of the correct size, then truncated it to its initial buffer size). * If the dependency resolver throws an exception, catch it and handle it as cleanly as possible, rather than unceremoniously exploding. * Don't block signals when running dpkg after a package install failed, and tell dpkg not to use TSTP in this circumstance. This tended to cause horrible breakage of dpkg's auto-backgrounding (the "Z" conffile prompt option). (Closes: #367052) * Fix a crash that occurred when generating a revdep-count column for some virtual packages. (Closes: #420405) * Don't abort() if something tries to display a progress percentage that's not strictly between 0 and 100. (Closes: #425145) + Cosmetic and UI bugs: * If a package is both "new" and "upgradable", place it in the "upgradable packages" list instead of the "new packages list", since this seems to be the path of least confusion. (Closes: #419999) * Try to include more information when an internal consistency check is triggered (e.g., the dependency that the program was looking at). * Only print an error about being unable to acquire a lock after downloading when an error actually occurred during the call to GetLock(); this message was getting triggered by stray errors from methods invoked earlier in the download/install process. (Closes: #422700) * Don't ever display more than one "really quit?" dialog box, so people who hold down the "q" key don't have to also hold down "n". (Closes: #411158) * When writing out the aptitude state file, open it mode 0644 and explicitly chmod it to mode 0644, so it doesn't start out world-writable, but ends up group- and world-readable even if root has a more restrictive imask. pkgstates isn't security-sensitive, and aptitude produces surprising results if it can't read this file. If you really need to hide pkgstates from non-root users for some reason, you can chmod -x the directory /var/lib/aptitude. (Closes: #41809, #421811) * If a command (e.g., update) takes no arguments, aptitude will produce an error if it receives arguments. (Closes: #411152) * Write "[Enter]" instead of "enter" in the media-change prompt, to make it clear that the user should press the key of that name. (Closes: #414777) * Remove *.gmo in distclean, so the Debian package can be built twice in a row. (Closes: #424102) + Potential bugs: * Delete some internal cache arrays using operator delete[] instead of operator delete. * Initialize package selection states to the Unknown state explicitly. + Documentation: * Fix the docbook encoding of the users manual and manpages. * Fix an error in the DocBook code of the manual page that caused the AUTHOR section to appear twice. * Fix how bolding is applied to literal elements in the manpage, so that the manpages are no longer screwed up. (Closes: #415468, #416232) * Users manual corrections (thanks to Noritada Kobayashi for patches). * Improve the description of the Recommends-Important, Keep-Recommends, and Keep-Suggests: clean up the language and try to make their precise behavior clearer. Thanks to Stefan Kangas for the initial suggestion. (Closes: #405002) * Try to make it clearer in both the manpage and the user's manual that "aptitude search" does an implicit OR on its command-line parameters, rather than an implicit AND. (arguably it SHOULD do an "AND", but it's probably too late to change this now) * Add some commands to the online help that weren't previously documented. (Closes: #402360) * Fix misaligned items in the online help. (Closes: #399048) - Translation updates: * Task group names localized. * Basque (Closes: #418862) * Catalan (Closes: #353308) * Chinese (Simplified) (Closes: #405166) * Chinese (Traditional) (Closes: #338056, #418139) * Danish (Closes: #409480) * Finnish (Closes: #392305) * French (Closes: #403561, #388504) * Galacian (Closes: #412829, #425358) * Greek * Hungarian (Closes: #405550) * Japanese users manual added. * Marathi (Closes: #416807) * Nepali (Closes: #452278) * Portuguese (Closes: #418940) * Romanian (Closes: #415763) * Slovak (Closes: #401105) * Spanish (Closes: #416339) * Ukranian (Closes: #415448) [10/26/2006] Version 0.4.4 "I shall smite you with my Ultimate Power of Cuteness!" - New features: * "unhold" now just clears the hold flag; it doesn't try to upgrade the package that was just unheld. * The grammar used to parse bulleted lists has changed. Full stops are no longer considered to be paragraph breaks or otherwise significant unless they are indented by exactly one space (i.e., unless they are significant in the standard grammar). A second change introduced by this patch is that a full stop by itself on a line no longer terminates a bullet list; the list will continue as long as the text after the paragraph break is indented at the same level as the rest of the list. This fixes some cases where aptitude badly mangled descriptions that used to work, and means I feel safe re-enabling bullets by default. (Closes: #388594) - Bug fixes: * By default, don't remove Linux kernel images that are unused. (Closes: #386307) * Generate a more useful error message for corrupted or unverifiable file downloads. (Closes: #387537) * Fix minibuffer messages so that they go away when you press a key. (Closes: #395201) * Apparently time is allowed to go backwards, so don't assert that it doesn't in the test suite. (Closes: #381481) * Document what "unhold" does. (Closes: #387336) * Consistently use instead of