After six months of development, I’m proud to announce the release of the Muon Suite, version 1.1.0. The main focus of this release has been to add additional package management utilities to help further round out the package management experience. More specifically, Muon Suite 1.1.0 introduces the Muon Update Notifier, Update Manager, and Software Center.
Packages are available from the QApt PPA for Kubuntu 10.10, and from the official archives in the prerelease version of Kubuntu 11.04. Packages of interest are the “muon” and “muon-installer” packages. Source tarballs for QApt and Muon 1.1.0 can be found here and here, respectively.
Unfortunately, packages cannot be made for Kubuntu 10.04 since the version of APT it has is too old, and a newer version cannot be backported without complications. I did notice that the Kubuntu 10.04 PPA was out of date, (QApt/Muon 1.0.2) so I updated the packages there to QApt 1.0.4 and Muon 1.0.3, the latest releases.
In addition, I’d like to thank two new contributors for their, uhm, contributions. :) Guillaume Martres is responsible for both the revamped download view and network awareness features, and Felix Geyer has contributed various patches to the project. I would also like to thank the KDE l10n team for their amazing work on translations. In this release, Muon Suite is 100% translated in 16 languages, and it is over 70% translated in 4 other languages. There are seven new fully-translated languages since 1.0.0, which is great!
Muon Package Manager
Not to be outdone, the classic Muon Package Manager has received some spiffy improvements in 1.1.0. These include:
- Several new status filters, such as the “Residual Configuration” filter for viewing uninstalled packages that can be purged, and the “Installed (auto-removable)” filter for viewing packages that APT thinks are obsolete/unnecessary that can be removed without harm.
- A menu item has been added to mark all auto-removable packages for removal.
Packages marked for auto-removal
- A progress bar to show the progress of search index rebuilds has been added.
- Searches are automatically reloaded after a rebuild of the search index.
- The origin of a package has been added to the “Technical Details” tab.
- The contents of the “Installed Files” tab are now sorted alphabetically.
- You can now sort the package view by the “Status” and “Requested Status” columns.
- Canonical-supported packages now have a Kubuntu or Ubuntu emblem on their entry in the package view. (Depending on if you’re running Kubuntu or Ubuntu). (Visible in the above screenshot)
- An all-new download view, offering more detailed information on the items being downloaded.
New download view
- A configuration dialog for controlling various APT system options has been added.
Introducing the Muon Software Center
The Muon Software Center is a new utility that provides an easy way to get new applications. With a focus on applications, the user does not have to worry about “package management” at all, and its simple interface means that anyone can use it. Primary features include:
- Informative details about each application
- Easily install addons, if available
Showing a single PPA
- Fast, easy search. (No knowledge of package names required)
- Easily launch newly-installed applications
- The history view gives a searchable, filterable overview of what you’ve installed, removed or upgraded over the past few months.
The History View
- The queuing system allows you to browse packages while larger ones are installing
Introducing the Muon Update Notifier
Not too much to say here. The Muon Update Notifier just notifies you of updates.
These notifications are configurable from either the Muon Package Manager or the Muon Update Manager.
Muon Notifier settings
Introducing the Muon Update Manager
The Muon Update Manager is a GUI for updating your system. Updates are automatically marked, and can be installed via the toolbar button in the lefthand corner. The details tabs work much like they do in the Muon Package Manager, and the download/commit views are the same as in the Muon Package Manager, too.
For Muon Suite 1.2 I’d like to further refine all of the applications in the suite. I’d like to add more power-user features to the Muon Package Manager such as package pinning support, as well as support for configuring more APT system settings. I would like to investigate adding optional commercial software support (Ubuntu’s “App Store”) to the Muon Software Center. (Though I’ve not yet been able to figure out the magic behind that from the Ubuntu Software Center sources) The Muon Update Manager definitely needs to become more update-centric. As of now it’s just a stripped-down version of the Muon Package Manager. Hopefully for 1.2 it will become less package-manager and more update-manager.
If you’re a developer developing a package management frontend using QApt, then QApt 1.1 will have some very nice new features. Here’s an overview of what’s new on the QApt front:
- LibQApt now compiles with QT_NO_CAST_TO_ASCII and QT_NO_CAST_FROM_ASCII.
- Compile with -fvisibility=hidden by default so that libqapt doesn’t expose symbols from libraries it links against, making life easier for packagers everywhere.
The new Config class is an interface to APT’s system-wide configuration. It features a KConfig-style read/write API, and uses proper Polkit privileges for the writing of system settings. The QApt::Backend class contains a QApt::Config object by default, accessible by the Backend::config() function.
The QApt::History class is an interface to the APT history log files. A QList of HistoryItem objects is accessible through the historyItems() function. The HistoryItem class represents a single transaction recorded in the APT history logs. From a HistoryItem you can obtain the start date of the transaction, lists of installed/removed/upgraded/downgrades/purged packages, as well as an error string, if the transaction ended in an error.
QApt::Package has gained some new features in QApt 1.1 as well.
- The new recommendsList(), suggestsList(), enhancesList() and enhancedByList() functions return QStringLists of the names of packages that have the aforementioned relational statuses with the Package.
- The latin1Name() and latin1Section() functions offer more efficient ways for internally dealing with package names and package sections. They return QLatin1Strings, which are cheaper to construct and compare than QStrings. This makes them ideal for sorting by package name, or for searching for a package by name.
- The controlField() function allows you to get the value of an arbitrary field of the package’s debian/control file. This function is useful for obtaining the values of nonstandard fields, such as the “Supported” field that Ubuntu packages supported by Canonical have, or the custom GStreamer metadata fields that gstreamer plugin packages have.
- Added a packageDownloadProgress() signal for per-package download progress reporting. This enables client applications to give more detailed information about currently-downloading packages, including parallel package downloads.
- Added a markPackagesForAutoRemove() method that acts like apt-get autoremove, marking packages for removal that APT deems obsolete.
- Added a new setUndoRedoCacheSize() function to QApt::Backend. This allows applications to customize the undo/redo stack size, allowing them to increase it if RAM usage is less of an issue, or decrease/eliminate the cache if RAM is tight, or the feature is otherwise unused anyways.
- Added a saveInstalledPackagesList() function to QApt::Backend that exports a list of all installed packages to the given path. This list can be ready by Backend::readSelections() and is fully compatible with the Synaptic Package Manager.
- Added an areChangesMarked() function to provide an easier/more efficient way to check if there are pending changes without checking the emptiness of the QApt::PackageList that Backend::markedPackages() constructs and returns.
For those it may interest, here are the detailed, technical changelogs for what has changed between the release candidate and final release for QApt and Muon.
Muon Suite 1.1.0
- Automatically reload searches after a rebuild of the search index is triggered
- Only show PPAs/package origins that have applications in the sidebar of the Muon Software Center
- Fixed a bug that popped up in the 1.1 prerelease cycle that would disallow quitting an app after a user cancelled a download.
- Fixed a crash when an error triggered a reload behind the Muon Software Center’s back (Bug 262712)
- Added a QString-taking overload of the Package::controlField() function
- Use a pkgTagSection object from libapt-pkg to parse the control field instead of rolling our own.
- Only ask for the passwords after we’re sure we can start downloading. (After untrusted dialog, disk space check, etc)
- Use pkgDepCache::GetCandidateVer() rather than CandidateVerIters throughout the QApt::Package class to make things more robust against errors due to broken/partially installed packages. (Bug 262262)
- Fix Package::priority() not working at all due to a faulty validity check
- The Supported package tag can also report years, not just months, so support this as well.