We have reached the first milestone of the Mender client rewrite to C++: the first alpha version is now available! There are still a lot of features missing, but here are the ones that should be working:
- Standalone mode (command line client)
- Update Modules
- Root filesystem updates (provided by a
rootfs-image
Update Module) - Installing, committing, and rolling back
One notable omission from the list is State Scripts. These will be added in a later iteration. There is also no help screen available at the moment, but the client accepts the same arguments as the existing Golang client for the implemented features.
The client already undergoes a fair amount of testing, but keep in mind that this is bleeding-edge software which is under daily, active development - so expect bugs! And there is no official support for this version (yet). Feel free to try, test, and provide feedback as we continue to develop this functionality.
How to get it? (if you are brave enough)
There are three main avenues for getting the C++ client:
-
Compile directly from source.
- You can check out the repository with:
git clone -b 3.99.0+really4.0.0-alpha1 https://github.com/mendersoftware/mender
- See the
README
file inside the repository for build instructions.
- You can check out the repository with:
-
Install the packages.
- First download the package that matches your system:
- Then install using this command:
sudo dpkg -i <PKG_NAME>
-
Build using Yocto.
- Only the Yocto
kirkstone
branch is currently supported. - It’s best to already have a working setup for the official Golang client before attempting to include the new C++ client.
- When the existing setup is working, do this:
- Check out the
feature-c++-client
branch from the meta-mender repository by using this command:cd meta-mender git fetch origin git checkout -t origin/feature-c++-client
- Add this to your
local.conf
file:
PREFERRED_VERSION_mender = "3.99.0+really4.0.0-alpha1"
- Check out the
- Then use bitbake to build as normal.
- Only the Yocto
Run it
The binary is not called mender
anymore, it’s called mender-update
. We may provide a wrapper using the old name later, but for now, just use mender-update
in place of mender
in all commands. For example:
mender-update install my-artifact.mender
What now?
Give it a try, see what you like and see what you don’t like. Tell us about the former, and help us improve the latter. Although the client is under active development now, we would be happy to take applicable contributions. And if your idea is not applicable yet, then just check back in a few weeks. You can always find the current state on GitHub and discuss on the Mender Hub.
Troubleshooting
LMDB error
If you get a message like this:
Failed to intialize main context: LMDB error: mdb_env_open: No such file or directory
then you may need to create the /var/lib/mender
and device_type
manually:
mkdir /var/lib/mender
echo device_type=my_device_type > /var/lib/mender/device_type