Basic package management

Over-the-air package updates

If you are looking for over-the-air or OTA update functionality for Linux packages on remote embedded edge devices you can use the configuration option "package management" included in qbee.

With qbee remote package management it is possible to automatically update Debian packages from the repositories that are defined on the device. These could be either generic platform specific repositories (for example a specific version of the Raspbian stable branch) or own defined repositories. The later allows to easily add own applications and manage which version gets deployed. Any time there is a new version in the repository it is automatically played out. With the function "software management" it is also possible to update and install packages from the qbee file manager as an overlay to an existing repository. This allows to easily use patched libraries or own software.

Updating with own repositories

Create your own repository with your own applications. Define different versions like -stable, -test or -experimental. Then you can define different groups that automatically update any time one of the packages is updated. This way you can rapidly update your experimental lab setup and then move this into testing. Some customers define two test environments: internal for lab testing and external for real testing on a customer site. The possibility to assign these different versions to different groups makes development very fast and easy.

Repository management tools

Customers have made very good experiences using repository management tools like aptly or packagecloud.

With enable/disable package management is controlled for the device / group or tree branch. The next selection defines if any pre-condition is used. Leave blank if no pre-condition is required.

Updating with pre-condition

Pre-condition checks if a script/executable exits successfully with "exit=0". Only then the update is performed or the remote edge device. A simple form of doing this is to use /bin/true which always returns 0 and thus always updates. The idea here is that more complicated conditions can be evaluated. For example time slots can be checked (only upgrade at night), machine conditions can be checked or certain environmental variables (one customer actually has a local web server UI and a technician needs to trigger an update window manually which then allows updates for 3 hours. At this time all accumulated updates get played out at once). Please find more information about defining pre-conditions.

At this point a decision needs to be made. It is either possible to upgrade all packages from the repositories that have new versions available or specific packages can be watched and maintained. The image below shows an "update all" configuration. Please note that on a full Raspbian image the Raspberry Pi libraries that will be updated can be many and thus it might take some time and use some bandwidth to do so. Also please consider that this gives you very little control.

Please consider carefully if you really want to run full auto update on standard repositories!

In IoT deployments stability is crucial. So we are warning against blindly running an update all if you do not have control over the repository. It is much safer to update sepcific versions of critical packages, preferable even with a specific version number that has been tested and quality assured.

qbee-package-management

While the window below here shows a selective auto update of the packages openssl and npm.

By clicking the "plus" you can get more boxes to define more packages. Using just the package/service name installs the latest version. Adding a version and platform allows to select which version is used. Please remember to adhere to debian package naming conventions: package_version_architecture.deb example: tinymesh-agent_0.0.3_all.deb. We strongly advise to define package versions to prevent untested versions to install.

qbee-package-management

It is important to define if you want to reboot after upgrade or not. If this is selected the device will immediately reboot after all current updates are completed.

We recommend to upgrade specific packages (preferred with version number)

Decide if you want to update all or single packages. As many packages as needed can be defined with the plus buttons. Please use the debian package naming convention.

Available packages for upgrading can be seen under device -> inventory -> software.

qbee-inventory-libraries

In the audit or log trail it is possible to see that updates have been completed. You can also click on "show log" and get detailed description of what has been done in the update process.

qbee-audit-package-management