After six months of development, I’m proud to announce the release of the Muon Suite, version 1.2.0.
The Muon Package Management Suite is a collection of package management applications that make package management easy on Debian-based systems, whether or not you know what “package management” means. Packages for Kubuntu 11.04 “Natty Narwhal” are available in the QApt PPA. Packages for the development version of Kubuntu 11.10 are available through the official repositories.
The focus of this release has been adding features to the existing Suite applications, as well as refining existing ones.
I would like to also thank the KDE translation team for their awesome work this cycle. The Muon Suite is now fully translated in 20 languages with 9 more languages over 70% translated. There are four new fully translated languages since 1.1.0. Awesome work all around.
Muon Package Manager
Lots of work has been put in to refining the user interface of the Muon Package Manager to make it even more convenient and usable. Additionally, several new features have been added to give you greater control over your packages. Many of these changes also apply to the Muon Update Manager, which shares components with the Package Manager.
New features and improvements:
- A history view like the one included with the Muon Software Center has been added as a dialog. You can access it from the “View” menu, or by using the Ctrl + H shortcut.
- Added an option to the configuration dialog to make APT treat a package’s “Suggests” as dependencies. For those who don’t care about disk space.
- Modifying settings that require administrator privileges to apply now turns the “Apply” button’s icon to the key icon, as in KDE’s System Settings.
- An option has been added to control whether Muon warns you about installing untrusted packages, or disallows the installation of them entirely.
- Multiple packages can now be selected and marked all at once by selecting them and choosing an action from the right-click menu.
- A package in the package view can now be de-selected, hiding the details widget, by ctrl-clicking on the package.
- Packages can be locked at their current version via the right-click menu. Locked packages have a little lock emblem on the package graphic. Additionally, a “Locked” filter has been added to the status filter box.
- The layout of the status bar has been improved. These improvements allowed me to remove the frames around the status bar labels.
- Space-saving improvements were made to the package detail tab widget. The sides and bottom of the tab widget frame were removed, leaving less borders around the edges. The marking buttons were moved to the line with the package short description, and the “screenshot” button was removed since most packages don’t have a screenshot, and the Muon Software Center handles this functionality much better. The support label was also moved to the package description view. The end result gives much more space to actual detail content, wasting less on chrome.
Ever been in a situation when you’ve needed to install packages on a computer without internet access? In version 1.2, the Muon Package Manager makes it easy to do this. First, mark the packages that you wish to install as normal. Go the “File” menu and select “Save Package Download List”. Next, take this file over to another computer with Muon and select “Download Packages From List” from the file menu. After pointing it to your USB stick, Muon will happily download your packages and place them on your USB stick. Lastly, take your USB drive back to your internet-less computer and go to “File -> Add Downloaded Packages”. Once this is done, you can hit “apply” and install your packages as normal.
Muon Software Center
There are several new, nifty features for the Software Center this time around.
- Installed packages now have a checkmark emblem, as shown here.
- The “Addons” view and “Reviews” view (more on that in a second) can now be collapsed.
- The application launcher dialog that appears when you install new applications has been replaced by a less intrusive in-window notification, with animated appearance/disappearance. (Based on your KDE widget effects settings, not related to desktop effects.)
- Non-application packages are now shown in PPA views, since many PPAs host software not in the Ubuntu application database.
- Added some Debian branding love.
- Miscellaneous optimizations to make browsing applications even faster.
Several new utilities are bundled with QApt to help seamlessly integrate package management with the desktop. These include:
The “Command Not Found” Plasma Runner
Yes, the one-and-the-same Plasma Runner that I mentioned over a year ago here. Back then QApt hadn’t had a stable release, and I didn’t really have a venue to publish it. (I could have published it by itself, but I’m lazy like that. :P) It functions exactly the same as I mentioned in the original blogpost. If you type the name of an executable that is not currently installed, this runner will suggest the package that provides this binary. This is especially useful on new installations where you may not have remembered to install something.
The QApt Deb Installer
This utility functions much like GDebi, with some bonuses like included icon support and less memory usage.
Now I’m putting on my Kubuntu hat. As was mentioned back with the announcement of Project Timelord, Kubuntu wanted to move away from python-based tools for the default installation due to their resource-hungriness and proneness to runtime errors. Now that the Ubuntu Software Center is Ubuntu’s primary .deb installer rather than GDebi, it makes even more sense to use the QApt Deb Installer. (I know that GDebi is still being maintained, but the KDE UI is somewhat dead at any rate, with nobody to step up to give it the maintenance it deserves.)
The QApt Deb Thumbnailer
This is a thumbnailing plugin for KDE. It offers thumbnail previews of .deb files in KDE file browsers. (Dolphin, open/save dialogs, Konqueror, etc) Not much else to say, but pretty nifty if I do say so myself.
The QApt GStreamer Helper
This utility provides a helper that integrates with GStreamer’s codec installation API, which Phonon uses to automatically install missing codecs for multimedia playback. It uses QtGStreamer which makes dealing with GStreamer a whole lot easier.
For Muon Suite 1.3 I plan on polishing existing features, as well as providing some new ones. Things I have on my todo list in no particular order that may or may not get done are:
- Support for submitting reviews to the Ubuntu Ratings and Reviews server.
- (Optional, I know some people would prefer not to have it) Support for the Ubuntu App Store.
- Configuration for the save on quit warning. (Impossible to re-enable once disabled)
- Rewrite the Muon Update Manager to look less like the Muon Package Manager, and be more usable/appeal to a wider target audience skill-wise. (Read: simplification. Power users are probably already using the Muon Package Manager for upgrades already, since you can control what gets upgraded, and likely compulsively check for updates like I do. :P)
- Further refinement of the new utilities distributed alongside LibQApt.
- Add a magnifying glass when hovering over the screenshot thumbnail in the Muon Software Center, to signify that it can be made bigger.
- Add an option to always be notified of dependencies to be marked for install in the Muon Package Manager. You can already can (and should) hit the review button before you hit apply, but apparently some people just like a dialog. :P
- More (optional) data columns in the main view of the Muon Package Manager. This has been requested before, but I have had higher priorities such as package lock support and multiple package selection, etc.
- Currently the Muon Software Center resets to the home screen after all pending installations has finished so it can let APT reload its internals. I’m fairly sure that this is unavoidable, but I think it’d be nice if afterwards it took you back to where you were, if the package you were still exists, etc.
If you’re a developer developing a package management frontend using QApt, then QApt 1.2 will have some very nice new features, especially in regards to handling raw .deb files. Here’s an overview of what’s new on the QApt front:
The new DebFile class is an interface for information about .deb files. All debian/control fields are accessible, as well as the file list, a list of included icons, a getter for the .deb file’s md5sum, as well as functions to extract the .deb’s contents to an arbitrary location. You can do pretty much anything you’d ever want to do to a .deb file with the class. The QApt Deb Installer and Deb Thumbnailer are two good references for using this class.
This class provides detailed relational dependency information about packages and debfiles, such as depends, recommends, conflicts, replaces, breaks, etc. It is very useful for resolving dependencies with .deb files, where APT cannot be used for dependency resolution.
Both DebFile objects and Package objects have several functions returning DependencyInfo objects in 1.2.
- Added the ability to pin and unpin packages via writing files to /etc/apt/preferences.d/. Refer to the docs in package.h for more info.
- Added an upstreamVersion() function to the Package class to return the upstream version of a package. Also include a static version in case we have a package version without a Package object and want the upstream version without having a Package object instantiated.
- Added a static method “compareVersion()” to the Package class to compare the versions of two packages, returning the standard strcmp() less than 0, 0, or greater than zero when appropriate.
- Added Backend::saveDownloadList() to create a download list of all packages that are marked and need downloading, usable by the new downloadArchives() function.
- Added a downloadArchives() function to download a list of archives to an arbitrary directory. The worker will emit package download signals as usual. This can be useful, for example, for downloading packages to a USB stick for a user.
- Added Backend::addArchiveToCache(), whichs adds .deb files for the candidate versions of existing packages to the apt .deb cache. This function can be used to add .debs from e.g. a USB stick so that computers without internet connections can update packages.
- Added an installDebFile method to QApt::Backend and the QApt Worker. This method starts the installation of the given .deb file, complete with a DebInstallStarted event signal on start, DebInstallFinished when finished, and a debInstallMessage() signal in between for dpkg output. A new error, WrongArchError, has been added to QApt::ErrorCode for when a .deb file cannot be installed due to incompatible CPU architectures for binary packages. (No multiarch support yet)