There are several ways that we can keep our software up to date. In this post, I shall describe my own practices.
For background, I am currently running opensuse 13.1. And I normally use the KDE desktop. So I will be discussing updates from the perspective of the KDE user.
I suppose some folk find it strange that we would need to update our software. However, it’s a fact of technology, that all software has defects (often called bugs). These defects are discovered, over time, and many of them are corrected. So the main reason for updating is to incorporate these corrections (or bug fixes) into our systems.
Some of those defects have security consequences. That is to say, some bugs might make your system more vulnerable to intrusion attempts. It is particularly important to install the security bug fixes.
Some updates actually add desirable features that are not present in the originally installed software.
The downside to updating, is that an update can introduce new bugs. So we get into an endless cycle of update and bug fixing which leads to more updating and bug fixing.
The opensuse scene
There are two kinds of update used in opensuse. First, there is the update. An update is simply a newer version of the software package. It is recognized as newer by its version number. And, secondly, there is a patch. A patch is a small package that contains a list of updates. To apply a patch is to install the updates listed in the patch. Some of the updates provided by a patch are deltas. A delta gives the changes from the original version.
The opensuse project mainly uses patches for its updating. The original software is in the main repos (or repositories). The patches are placed in the “update” repos. However, auxiliary projects, such as the packman project (typically used for multimedia support) only use updates which typically replace the original version of the software in the project repo.
For the KDE user, in opensuse, there are several tools for keeping your system up to date. These are:
- zypper : “zypper” is a command line tool available to the root user. It is a flexible command line tool for managing software, including updates.
- Yast : “Yast” (Yet Another Setup Tool), the system management tool is a graphic command that can be used for updating software, as well as for many other tasks. When used for managing/updating software, it calls on “zypper” to do the work behind the scene. Yast online update only applies patches. It does not apply updates that are not part of patches.
- Apper : “Apper” is a KDE application for software management. In opensuse, it is implemented as a front-end to “zypper”. So it, too, uses “zypper” behind the scene. When installed, it includes a software update notifier that sits in the system tray to tell you whether updates are available. “Apper” is installed by default, as part of a KDE install. You can disable it if you want to leave it installed but prefer to do updates a different way.
I’ll give more details on these tools later in this post.
A quick note on dependencies. Each software contains a list of other software that it depends on. The various tools check the dependency list, and will also install any software required by that list. So sometimes an update will install something that you were not expecting. It does tell you what else will be installed.
“Dependency hell” is the term people give for special cases when meeting one dependency introduces another. In the worst cases, you can get dependencies that seem to cause hopeless problems. Yast and zypper both provide a dialog indicating the choices you can make to deal with such dependency conflicts. Apper does not seem to provide a conflict resolution dialog.
I’ll now indicate how I personally do the updates.
Desktop (and laptop)
On my main desktop system and my laptop, I have disabled “apper” from starting. When I am ready for updating, I use Yast online updates. This applies all outstanding patches. And then, when done, I use
# zypper update
at a root command line. Actually, I use the abbreviation “zypper up”, which is equivalent. Using Yast online update normally takes care of the standard opensuse updates. And the use of “zypper” then updates software installed from the packman repo. I could just use the indicated “zypper” command, as that would also take care of most patches. However, I prefer Yast online update, because it provides more information about what is being updated.
My main desktop dual-boots with Windows 8.1. I have not yet found a use for Windows 8.1, but I reboot to it every few days, to keep the anti-virus software up to date. And that means that I am rebooting opensuse on my main desktop around twice a week. So I run the updates just before rebooting. One benefit of using Yast and/or zypper, is that it is easier for me to schedule the timing. On systems where I use “apper”, it typically checks for updates just after reboot (instead of just before). And, if it updates, it might suggest that I reboot again. So it seems more sensible for me to schedule my updating for just before I reboot.
The thinking for my laptop is similar. I normally don’t want to update when traveling. So, using Yast and zypper allows me to schedule the updates to be done when I am at home.
On my test systems (an older desktop, and older laptop and an additional partition on my main laptop), I do use “apper” for updates. By default, “apper” is configured to automatically run when I login to KDE. And the update notifier is configured to automatically appear in the tray. This seems to lead to duplications. So I get more notices than necessary, of software. I have found it useful to disable the automatic startup of “apper”, as detailed in the discussion of apper later in this post. With that setting, the update notifier still runs. It is usually a hidden tray icon. But if it finds that there are updates available, then it becomes visible in the system tray (toward the right of the panel). I can then click on it to list available updates, and select whether to install. The install usually goes on behind the scenes. And, most of the time, this works out pretty well.
One of the benefits of using “apper” or the update notifier, is that I am not required to provide the root password. If I wanted to install new software with “apper”, that would require authentication. But for updating software that is already installed, not authentication is required.
Notes on Yast
When using Yast online update, you can also click on “search” and search for other software packages. I occasionally to this to combine the installing of new software with running updates. If you right click on a package, there are options such as to re-install, or to update or to lock so that it is never updated.
The dependency dialog in Yast is easy to use. A small window appears with the choices. You select your choice. This may still seem confusing, but that’s because dependencies are confusing. There is usually an option to not install a particular patch. I sometimes take that option. And that gets everything installed for which there is no conflict. If the conflict is due to a bad patch, then the remaining update will probably work a day or two later when it has been fixed. If the conflict is related to your particular set of software, then you might need to restart Yast online update, and make a different choice on how to resolve the problem.
There is a man page for zypper. That’s the best place to get detailed information on what is possible. I mainly use:
- zypper up : to update software;
- zypper patch : to just patch. I rarely do this, as I prefer Yast online update for that;
- zypper ps : to list processes still using files that have been replaced in a recent update;
- zypper lp : to list available patches
- zypper dup : I used this with tumbleweed. I am not currently running tumbleweed.
If you don’t want “apper” to run, you can disable automatic startup. For this, select “Configure Desktop” from the main menu. Then select “Startup and Shutdown”. And then select “Service Manager”. Uncheck the box for “apper” and it won’t automatically start.
If you disable automatic “apper” startup, the software update notifier will still run. To disable that, go to your system tray settings (right click on an empty spot in the tray).
The biggest problem that I have found with apper, is that it does not handle dependency conflicts. I had one of those when updating my opensuse linux for education install. Apper reported the conflict, but did not provide any options. It failed to update. So I started Yast online update. The conflict resolution dialog there enabled me to resolve the problem (by moving one package to the opensuse repo, instead of the repo from which it had been installed).
That’s my recent experience with updates.