Basic package management
If you are looking for over-the-air update functionality for Linux packages on remote embedded devices you can use the configuration option "package management". With qbee 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 latter 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.
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.
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.
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).
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.
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:
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.
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.
In the audit or log trail it is possible to see that updates have been completed.