Changes to opsi-product-updater for opsi 4.1

opsi-product-updater is the tool of choice for updating the opsi products on a server without much work. For the upcoming major release there will be some changes I want to show prior to release.

Mode selection

One major pitfall for new users is that the first run of opsi-product-updater is made with the parameter -i to install packages not present on the current server. Many users do not drop the -i from then on. An advanced opsi administrator usually removes unrequired packages from his installation but when running opsi-product-updater with -i all these packages will reappear. Ooops!

The new opsi-product-updater hopefully is more clear to the user because you will be required to specify the action you want:

opsi-product-updater install
opsi-product-updater update

With install you will get all the products present in your repositories - this mimics the -i switch. With update you will only get updates to the installed products.

The forced operation mode selection is made part due to improve usability and part due to changes in the underlying option parsing to prepare future changes.

Repository configuration

With the next major release configuring repositories will be as easy as dropping a file into /etc/opsi/product-updater.repos.d. The file uses the same .ini-style we already used to configure repositories in /etc/opsi/opsi-product-updater.conf and makes it easy to convert existing settings. To convert existing repository configurations you can simply put each repository-section into it's own file. You can still place multiple repositories in one file but they need to have different section names. And you can also keep your configuration the way it is. No changes required if you do not want to.

To give an example I will just paste the repository configuration file for the default opsi repository:

active = true
baseUrl =
dirs = opsi4.0/products/localboot, opsi4.0/products/netboot
autoInstall = false
autoUpdate = true
autoSetup = false
; Set Proxy handler like:
proxy =

Yes, that's everything. Very simple, isn't it?

As this is a preview things may change along the way and feedback for this is appreciated. Do you have any opinions on that? Go ahead and post them on our forums!